From 1fae6409ceed6a99bdbb0a30cb1b415b4e4301b4 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Sat, 27 Jul 2024 22:50:14 +0100 Subject: [PATCH 01/19] migrate to low code --- .../source-youtube-analytics/README.md | 28 +- .../source-youtube-analytics/__init__.py | 3 + .../acceptance-test-config.yml | 2 +- .../source-youtube-analytics/metadata.yaml | 4 +- .../source-youtube-analytics/pyproject.toml | 11 +- .../source_youtube_analytics/manifest.yaml | 173 ++++++++++ .../source_youtube_analytics/source.py | 306 +----------------- .../source_youtube_analytics/spec.json | 79 ----- .../unit_tests/test_source.py | 37 --- .../unit_tests/test_streams.py | 229 ------------- .../integrations/sources/youtube-analytics.md | 5 +- 11 files changed, 219 insertions(+), 658 deletions(-) create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/__init__.py create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/spec.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/unit_tests/test_source.py delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/unit_tests/test_streams.py diff --git a/airbyte-integrations/connectors/source-youtube-analytics/README.md b/airbyte-integrations/connectors/source-youtube-analytics/README.md index 77adf3cd2e725..cc695ced3c522 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/README.md +++ b/airbyte-integrations/connectors/source-youtube-analytics/README.md @@ -1,17 +1,19 @@ # Youtube-Analytics source connector - -This is the repository for the Youtube-Analytics source connector, written in Python. +This is the repository for the Youtube Analytics configuration based source connector. For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/youtube-analytics). ## Local development ### Prerequisites -* Python (~=3.9) -* Poetry (~=1.7) - installation instructions [here](https://python-poetry.org/docs/#installation) + +* 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 @@ -19,13 +21,15 @@ poetry install --with dev ### Create credentials + **If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/youtube-analytics) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_youtube_analytics/spec.yaml` file. +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `src/source_youtube_analytics/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-youtube-analytics spec poetry run source-youtube-analytics check --config secrets/config.json @@ -33,13 +37,16 @@ poetry run source-youtube-analytics discover --config secrets/config.json poetry run source-youtube-analytics read --config secrets/config.json --catalog sample_files/configured_catalog.json ``` -### Running unit tests -To run unit tests locally, from the connector directory run: +### Running tests + +To run tests locally, from the connector directory run: + ``` -poetry run pytest unit_tests +poetry run pytest 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 @@ -50,6 +57,7 @@ An image will be available on your host with the tag `airbyte/source-youtube-ana ### Running as a docker container + Then run any of the connector commands as follows: ``` docker run --rm airbyte/source-youtube-analytics:dev spec @@ -59,16 +67,19 @@ docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integrat ``` ### 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-youtube-analytics 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 @@ -78,6 +89,7 @@ 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-youtube-analytics 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)): diff --git a/airbyte-integrations/connectors/source-youtube-analytics/__init__.py b/airbyte-integrations/connectors/source-youtube-analytics/__init__.py new file mode 100644 index 0000000000000..66f6de8cb2bb5 --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/__init__.py @@ -0,0 +1,3 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# diff --git a/airbyte-integrations/connectors/source-youtube-analytics/acceptance-test-config.yml b/airbyte-integrations/connectors/source-youtube-analytics/acceptance-test-config.yml index e521392e533db..6129ecd4647e6 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-youtube-analytics/acceptance-test-config.yml @@ -3,7 +3,7 @@ connector_image: airbyte/source-youtube-analytics:dev tests: spec: - - spec_path: "source_youtube_analytics/spec.json" + - spec_path: "source_youtube_analytics/spec.yaml" connection: - config_path: "secrets/config.json" status: "succeed" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml b/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml index 3592491a03b6d..9351abe1ab884 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml @@ -8,7 +8,7 @@ data: connectorSubtype: api connectorType: source definitionId: afa734e4-3571-11ec-991a-1e0031268139 - dockerImageTag: 0.1.6 + dockerImageTag: 0.2.0 dockerRepository: airbyte/source-youtube-analytics documentationUrl: https://docs.airbyte.com/integrations/sources/youtube-analytics githubIssueLabel: source-youtube-analytics @@ -28,7 +28,7 @@ data: supportLevel: community tags: - language:python - - cdk:python + - cdk:low-code connectorTestSuitesOptions: - suite: acceptanceTests testSecrets: diff --git a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml index 72cd145624feb..fd939f6ff343d 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml +++ b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml @@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",] build-backend = "poetry.core.masonry.api" [tool.poetry] -version = "0.1.6" +version = "0.2.0" name = "source-youtube-analytics" description = "Source implementation for Youtube Analytics." authors = [ "Airbyte ",] @@ -14,15 +14,16 @@ homepage = "https://airbyte.com" repository = "https://github.com/airbytehq/airbyte" [[tool.poetry.packages]] include = "source_youtube_analytics" +include = "main.py" [tool.poetry.dependencies] python = "^3.9,<3.12" -airbyte-cdk = "0.38.0" +airbyte-cdk = "^0" [tool.poetry.scripts] source-youtube-analytics = "source_youtube_analytics.run:run" [tool.poetry.group.dev.dependencies] -requests-mock = "==1.9.3" -pytest = "^6.1" -pytest-mock = "^3.6.1" +requests-mock = "*" +pytest-mock = "*" +pytest = "*" \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml new file mode 100644 index 0000000000000..6e89766da012a --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml @@ -0,0 +1,173 @@ +version: 3.8.2 + +type: DeclarativeSource + +check: + type: CheckStream + stream_names: + - jobs_resource + +definitions: + streams: + jobs_resource: + type: DeclarativeStream + name: jobs_resource + retriever: + type: SimpleRetriever + requester: + $ref: '#/definitions/base_requester' + path: jobs + http_method: GET + request_body_json: + name: Airbyte reporting job + reportTypeId: jobs_resource + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - jobs + schema_loader: + type: InlineSchemaLoader + schema: + $ref: '#/schemas/jobs_resource' + report_resources: + type: DeclarativeStream + name: report_resources + retriever: + type: SimpleRetriever + requester: + $ref: '#/definitions/base_requester' + path: jobs/{{ stream_partition['job_id'] }}/reports + http_method: GET + request_parameters: + startTimeAtOrAfter: '{{ now_utc() }}' + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - reports + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + stream: + $ref: '#/definitions/streams/jobs_resource' + parent_key: id + partition_field: job_id + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: '#/schemas/report_resources' + channel_annotations_a1: + type: DeclarativeStream + name: channel_annotations_a1 + retriever: + type: SimpleRetriever + requester: + $ref: '#/definitions/base_requester' + path: / + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + stream: + $ref: '#/definitions/streams/report_resources' + parent_key: downloadUrl + partition_field: path + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - annotation_type + - annotation_id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: '#/schemas/channel_annotations_a1' + base_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config["client_secret"] }}' + refresh_token: '{{ config["client_refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + +streams: + - $ref: '#/definitions/streams/jobs_resource' + - $ref: '#/definitions/streams/report_resources' + - $ref: '#/definitions/streams/channel_annotations_a1' + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - client_id + - client_secret + - client_refresh_token + properties: + client_id: + type: string + order: 0 + title: Client ID + airbyte_secret: true + client_secret: + type: string + order: 1 + title: Client secret + airbyte_secret: true + client_refresh_token: + type: string + order: 2 + title: Refresh token + airbyte_secret: true + additionalProperties: true + +metadata: + testedStreams: + jobs_resource: + hasRecords: false + streamHash: ff2992789fe26a83fb4dda39ce62421d4ff11bf2 + hasResponse: false + primaryKeysAreUnique: false + primaryKeysArePresent: false + responsesAreSuccessful: false + autoImportSchema: + jobs_resource: true + report_resources: true + channel_annotations_a1: true + +schemas: + jobs_resource: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: {} + additionalProperties: true + report_resources: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: {} + additionalProperties: true + channel_annotations_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + properties: {} + additionalProperties: true diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py index 4a9041f1f0788..2772aef56f176 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py @@ -1,302 +1,18 @@ # -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. # +from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource -import csv -import datetime -import io -import json -import pkgutil -from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Tuple +""" +This file provides the necessary constructs to interpret a provided declarative YAML configuration file into +source connector. -import pendulum -import requests -from airbyte_cdk.sources import AbstractSource -from airbyte_cdk.sources.streams import Stream -from airbyte_cdk.sources.streams.http import HttpStream, HttpSubStream -from airbyte_cdk.sources.streams.http.requests_native_auth import Oauth2Authenticator -from airbyte_cdk.sources.utils.transform import TransformConfig, TypeTransformer +WARNING: Do not modify this file. +""" -class CustomBackoffMixin: - def daily_quota_exceeded(self, response: requests.Response) -> bool: - """Response example: - { - "error": { - "code": 429, - "message": "Quota exceeded for quota metric 'Free requests' and limit 'Free requests per minute' of service 'youtubereporting.googleapis.com' for consumer 'project_number:863188056127'.", - "status": "RESOURCE_EXHAUSTED", - "details": [ - { - "reason": "RATE_LIMIT_EXCEEDED", - "metadata": { - "consumer": "projects/863188056127", - "quota_limit": "FreeQuotaRequestsPerMinutePerProject", - "quota_limit_value": "60", - "quota_metric": "youtubereporting.googleapis.com/free_quota_requests", - "service": "youtubereporting.googleapis.com", - } - }, - ] - } - } - - :param response: - :return: - """ - details = response.json().get("error", {}).get("details", []) - for detail in details: - if detail.get("reason") == "RATE_LIMIT_EXCEEDED": - if detail.get("metadata", {}).get("quota_limit") == "FreeQuotaRequestsPerDayPerProject": - self.logger.error(f"Exceeded daily quota: {detail.get('metadata', {}).get('quota_limit_value')} reqs/day") - return True - break - return False - - def should_retry(self, response: requests.Response) -> bool: - """ - Override to set different conditions for backoff based on the response from the server. - - By default, back off on the following HTTP response statuses: - - 500s to handle transient server errors - - 429 (Too Many Requests) indicating rate limiting: - Different behavior in case of 'RATE_LIMIT_EXCEEDED': - - Requests Per Minute: - "message": "Quota exceeded for quota metric 'Free requests' and limit 'Free requests per minute' of service 'youtubereporting.googleapis.com' for consumer 'project_number:863188056127'." - "quota_limit": "FreeQuotaRequestsPerMinutePerProject", - "quota_limit_value": "60", - - --> use increased retry_factor (30 seconds) - - Requests Per Day: - "message": "Quota exceeded for quota metric 'Free requests' and limit 'Free requests per day' of service 'youtubereporting.googleapis.com' for consumer 'project_number:863188056127" - "quota_limit": "FreeQuotaRequestsPerDayPerProject - "quota_limit_value": "20000", - - --> just throw an error, next scan is reasonable to start only in 1 day. - """ - if 500 <= response.status_code < 600: - return True - - if response.status_code == 429 and not self.daily_quota_exceeded(response): - return True - - return False - - @property - def retry_factor(self) -> float: - """ - Default FreeQuotaRequestsPerMinutePerProject is 60 reqs/min, so reasonable delay is 30 seconds - """ - return 30 - - -class JobsResource(CustomBackoffMixin, HttpStream): - """ - https://developers.google.com/youtube/reporting/v1/reference/rest/v1/jobs - - All YouTube Analytics streams require a created reporting job. - This class allows to `list` all existing reporting jobs or `create` new reporting job for a specific stream. One stream can have only one reporting job. - By creating a reporting job, you are instructing YouTube to generate stream data on a daily basis. If reporting job is removed YouTube removes all stream data. - - On every connector invocation, it gets a list of all running reporting jobs, if the currently processed stream has a reporting job - connector does nothing, - but if the currently processed stream does not have a job connector immediately creates one. This connector does not store IDs of reporting jobs. - If the reporting job was created by the user separately, this connector just uses that job. This connector does not remove reporting jobs it can only create them. - - After reporting job is created, the first data can be available only after up to 48 hours. - """ - - name = None - primary_key = None - http_method = None - raise_on_http_errors = True - url_base = "https://youtubereporting.googleapis.com/v1/" - JOB_NAME = "Airbyte reporting job" - - def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]: - return None - - def should_retry(self, response: requests.Response) -> bool: - # if the connected Google account is not bounded with target Youtube account, - # we receive `401: UNAUTHENTICATED` - if response.status_code == 401: - setattr(self, "raise_on_http_errors", False) - return False - else: - return super().should_retry(response) - - def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]: - return [response.json()] - - def path(self, **kwargs) -> str: - return "jobs" - - def request_body_json(self, **kwargs) -> Optional[Mapping]: - if self.name: - return {"name": self.JOB_NAME, "reportTypeId": self.name} - - def list(self): - "https://developers.google.com/youtube/reporting/v1/reference/rest/v1/jobs/list" - self.name = None - self.http_method = "GET" - results = list(self.read_records(sync_mode=None)) - result = results[0] - return result.get("jobs", {}) - - def create(self, name): - "https://developers.google.com/youtube/reporting/v1/reference/rest/v1/jobs/create" - self.name = name - self.http_method = "POST" - results = list(self.read_records(sync_mode=None)) - result = results[0] - return result["id"] - - -class ReportResources(CustomBackoffMixin, HttpStream): - "https://developers.google.com/youtube/reporting/v1/reference/rest/v1/jobs.reports/list" - - name = None - primary_key = "id" - url_base = "https://youtubereporting.googleapis.com/v1/" - - def __init__(self, name: str, jobs_resource: JobsResource, job_id: str, start_time: str = None, **kwargs): - self.name = name - self.jobs_resource = jobs_resource - self.job_id = job_id - self.start_time = start_time - super().__init__(**kwargs) - - def path( - self, stream_state: Mapping[str, Any] = None, stream_slice: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None - ) -> str: - if not self.job_id: - self.job_id = self.jobs_resource.create(self.name) - self.logger.info(f"YouTube reporting job is created: '{self.job_id}'") - return "jobs/{}/reports".format(self.job_id) - - def request_params( - self, - stream_state: Mapping[str, Any], - stream_slice: Mapping[str, Any] = None, - next_page_token: Mapping[str, Any] = None, - ) -> MutableMapping[str, Any]: - return {"startTimeAtOrAfter": self.start_time} if self.start_time else {} - - def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]: - return None - - def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]: - response_json = response.json() - reports = [] - for report in response_json.get("reports", []): - report = {**report} - report["startTime"] = datetime.datetime.strptime(report["startTime"], "%Y-%m-%dT%H:%M:%S%z") - reports.append(report) - reports.sort(key=lambda x: x["startTime"]) - date = kwargs["stream_state"].get("date") - if date: - reports = [r for r in reports if int(r["startTime"].date().strftime("%Y%m%d")) > date] - if not reports: - reports.append(None) - return reports - - -class ChannelReports(CustomBackoffMixin, HttpSubStream): - "https://developers.google.com/youtube/reporting/v1/reports/channel_reports" - - name = None - primary_key = None - cursor_field = "date" - url_base = "" - transformer = TypeTransformer(TransformConfig.DefaultSchemaNormalization) - - def __init__(self, name: str, dimensions: List[str], **kwargs): - self.name = name - self.primary_key = dimensions - super().__init__(**kwargs) - - def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]: - return None - - def parse_response(self, response: requests.Response, **kwargs) -> Iterable[Mapping]: - fp = io.StringIO(response.text) - reader = csv.DictReader(fp) - for record in reader: - yield record - - def get_updated_state(self, current_stream_state: MutableMapping[str, Any], latest_record: Mapping[str, Any]) -> Mapping[str, Any]: - if not current_stream_state: - return {self.cursor_field: latest_record[self.cursor_field]} - return {self.cursor_field: max(current_stream_state[self.cursor_field], latest_record[self.cursor_field])} - - def path( - self, stream_state: Mapping[str, Any] = None, stream_slice: Mapping[str, Any] = None, next_page_token: Mapping[str, Any] = None - ) -> str: - return stream_slice["parent"]["downloadUrl"] - - def read_records(self, *, stream_slice: Mapping[str, Any] = None, **kwargs) -> Iterable[Mapping[str, Any]]: - parent = stream_slice.get("parent") - if parent: - yield from super().read_records(stream_slice=stream_slice, **kwargs) - else: - self.logger.info("no data from parent stream") - yield from [] - - -class SourceYoutubeAnalytics(AbstractSource): - @staticmethod - def get_authenticator(config): - credentials = config["credentials"] - client_id = credentials["client_id"] - client_secret = credentials["client_secret"] - refresh_token = credentials["refresh_token"] - - return Oauth2Authenticator( - token_refresh_endpoint="https://oauth2.googleapis.com/token", - client_id=client_id, - client_secret=client_secret, - refresh_token=refresh_token, - ) - - def check_connection(self, logger, config) -> Tuple[bool, any]: - authenticator = self.get_authenticator(config) - jobs_resource = JobsResource(authenticator=authenticator) - result = jobs_resource.list() - if result: - return True, None - else: - return ( - False, - "The Youtube account is not valid. Please make sure you're trying to use the active Youtube Account connected to your Google Account.", - ) - - def streams(self, config: Mapping[str, Any]) -> List[Stream]: - authenticator = self.get_authenticator(config) - jobs_resource = JobsResource(authenticator=authenticator) - jobs = jobs_resource.list() - report_to_job_id = {j["reportTypeId"]: j["id"] for j in jobs} - - # By default, API returns reports for last 60 days. Report for each day requires a separate request. - # Full scan of all 18 streams requires ~ 1100 requests (18+18*60), so we can hit 'default' API quota limits: - # - 60 reqs per minute - # - 20000 reqs per day - # For SAT: scan only last N days ('testing_period' option) in order to decrease a number of requests and avoid API limits - start_time = None - testing_period = config.get("testing_period") - if testing_period: - start_time = pendulum.today().add(days=-int(testing_period)).to_rfc3339_string() - - channel_reports = json.loads(pkgutil.get_data("source_youtube_analytics", "defaults/channel_reports.json")) - - streams = [] - for channel_report in channel_reports: - stream_name = channel_report["id"] - dimensions = channel_report["dimensions"] - job_id = report_to_job_id.get(stream_name) - parent = ReportResources( - name=stream_name, jobs_resource=jobs_resource, job_id=job_id, start_time=start_time, authenticator=authenticator - ) - streams.append(ChannelReports(name=stream_name, dimensions=dimensions, parent=parent, authenticator=authenticator)) - return streams +# Declarative Source +class SourceYoutubeAnalytics(YamlDeclarativeSource): + def __init__(self): + super().__init__(**{"path_to_yaml": "manifest.yaml"}) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/spec.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/spec.json deleted file mode 100644 index 9be6b96fba84f..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/spec.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "documentationUrl": "https://docs.airbyte.com/integrations/sources/youtube-analytics", - "connectionSpecification": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "YouTube Analytics Spec", - "type": "object", - "required": ["credentials"], - "additionalProperties": true, - "properties": { - "credentials": { - "title": "Authenticate via OAuth 2.0", - "type": "object", - "required": ["client_id", "client_secret", "refresh_token"], - "additionalProperties": true, - "properties": { - "client_id": { - "title": "Client ID", - "type": "string", - "description": "The Client ID of your developer application", - "airbyte_secret": true - }, - "client_secret": { - "title": "Client Secret", - "type": "string", - "description": "The client secret of your developer application", - "airbyte_secret": true - }, - "refresh_token": { - "title": "Refresh Token", - "type": "string", - "description": "A refresh token generated using the above client ID and secret", - "airbyte_secret": true - } - } - } - } - }, - "advanced_auth": { - "auth_flow_type": "oauth2.0", - "oauth_config_specification": { - "complete_oauth_output_specification": { - "type": "object", - "additionalProperties": true, - "properties": { - "refresh_token": { - "type": "string", - "path_in_connector_config": ["credentials", "refresh_token"] - } - } - }, - "complete_oauth_server_input_specification": { - "type": "object", - "additionalProperties": true, - "properties": { - "client_id": { - "type": "string" - }, - "client_secret": { - "type": "string" - } - } - }, - "complete_oauth_server_output_specification": { - "type": "object", - "additionalProperties": true, - "properties": { - "client_id": { - "type": "string", - "path_in_connector_config": ["credentials", "client_id"] - }, - "client_secret": { - "type": "string", - "path_in_connector_config": ["credentials", "client_secret"] - } - } - } - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/unit_tests/test_source.py b/airbyte-integrations/connectors/source-youtube-analytics/unit_tests/test_source.py deleted file mode 100644 index dcac2eb7e98ae..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/unit_tests/test_source.py +++ /dev/null @@ -1,37 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -import json -import os -from unittest.mock import MagicMock - -from airbyte_cdk.sources.streams.http.auth.core import NoAuth -from source_youtube_analytics.source import SourceYoutubeAnalytics - - -def test_check_connection(requests_mock): - access_token = "token" - mock_oauth_call = requests_mock.post("https://oauth2.googleapis.com/token", json={"access_token": access_token, "expires_in": 0}) - - mock_jobs_call = requests_mock.get("https://youtubereporting.googleapis.com/v1/jobs", json={"jobs": [1, 2, 3]}) - - source = SourceYoutubeAnalytics() - logger_mock, config_mock = MagicMock(), MagicMock() - assert source.check_connection(logger_mock, config_mock) == (True, None) - assert mock_oauth_call.called_once - assert mock_jobs_call.called_once - assert mock_jobs_call.last_request.headers["Authorization"] == "Bearer " + access_token - - -def test_streams(requests_mock): - requests_mock.get("https://youtubereporting.googleapis.com/v1/jobs", json={}) - - with open(os.path.join(os.path.dirname(__file__), "../source_youtube_analytics/defaults/channel_reports.json")) as fp: - channel_reports = json.load(fp) - - source = SourceYoutubeAnalytics() - source.get_authenticator = MagicMock(return_value=NoAuth()) - config_mock = MagicMock() - streams = source.streams(config_mock) - assert len(streams) == len(channel_reports) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/unit_tests/test_streams.py b/airbyte-integrations/connectors/source-youtube-analytics/unit_tests/test_streams.py deleted file mode 100644 index 0726b5da5ca8a..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/unit_tests/test_streams.py +++ /dev/null @@ -1,229 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -import datetime -from collections import OrderedDict -from unittest.mock import MagicMock - -from source_youtube_analytics.source import ChannelReports, CustomBackoffMixin, JobsResource, ReportResources - - -def test_jobs_resource_list(requests_mock): - json_result = { - "jobs": [ - { - "id": "038777e7-dc6e-43c8-b86f-ed954c7acd95", - "name": "Airbyte reporting job", - "reportTypeId": "channel_playback_location_a2", - "createTime": "2021-10-30T20:32:58Z", - }, - { - "id": "1c20da45-0604-4d60-85db-925989df1db6", - "name": "Airbyte reporting job", - "reportTypeId": "channel_basic_a2", - "createTime": "2021-10-25T19:48:36Z", - }, - ] - } - - mock_jobs_call = requests_mock.get("https://youtubereporting.googleapis.com/v1/jobs", json=json_result) - jobs_resource = JobsResource() - jobs = jobs_resource.list() - assert jobs == json_result["jobs"] - assert mock_jobs_call.called_once - - -def test_jobs_resource_create(requests_mock): - name = "channel_basic_a2" - json_result = { - "createTime": "2021-10-30T20:32:58Z", - "id": "038777e7-dc6e-43c8-b86f-ed954c7acd95", - "name": "Airbyte reporting job", - "reportTypeId": name, - } - - mock_jobs_call = requests_mock.post("https://youtubereporting.googleapis.com/v1/jobs", json=json_result) - jobs_resource = JobsResource() - result = jobs_resource.create(name) - assert result == json_result["id"] - assert mock_jobs_call.called_once - - -def test_report_resources_path(requests_mock): - mock_jobs_call = requests_mock.post("https://youtubereporting.googleapis.com/v1/jobs", json={"id": "job1"}) - - jobs_resource = JobsResource() - stream = ReportResources("stream_name", jobs_resource, "job1") - assert stream.path() == "jobs/job1/reports" - assert not mock_jobs_call.called_once - - stream = ReportResources("stream_name", jobs_resource, job_id=None) - assert not mock_jobs_call.called_once - assert stream.path() == "jobs/job1/reports" - assert mock_jobs_call.called_once - assert stream.path() == "jobs/job1/reports" - assert mock_jobs_call.called_once - assert mock_jobs_call.last_request.json() == {"name": "Airbyte reporting job", "reportTypeId": "stream_name"} - - -def test_report_resources_parse_response(): - jobs_resource = JobsResource() - stream = ReportResources("stream_name", jobs_resource, "job1") - - response = MagicMock() - response.json = MagicMock(return_value={}) - assert stream.parse_response(response, stream_state={}) == [None] - response.json = MagicMock(return_value={"reports": []}) - assert stream.parse_response(response, stream_state={}) == [None] - - reports = [ - { - "id": "4317112913", - "jobId": "1c20da45-0604-4d60-85db-925989df1db6", - "startTime": "2021-10-25T07:00:00Z", - "endTime": "2021-10-26T07:00:00Z", - "createTime": "2021-10-27T04:59:46.114806Z", - "downloadUrl": "https://youtubereporting.googleapis.com/v1/media/CHANNEL/ybpwL6sPt6SSzazIV400WQ/jobs/1c20da45-0604-4d60-85db-925989df1db6/reports/4317112913?alt=media", - }, - { - "id": "4315953856", - "jobId": "1c20da45-0604-4d60-85db-925989df1db6", - "startTime": "2021-10-18T07:00:00Z", - "endTime": "2021-10-19T07:00:00Z", - "createTime": "2021-10-26T07:43:27.680074Z", - "downloadUrl": "https://youtubereporting.googleapis.com/v1/media/CHANNEL/ybpwL6sPt6SSzazIV400WQ/jobs/1c20da45-0604-4d60-85db-925989df1db6/reports/4315953856?alt=media", - }, - ] - - response.json = MagicMock(return_value={"reports": reports}) - result = stream.parse_response(response, stream_state={}) - - assert result == [ - { - "id": "4315953856", - "jobId": "1c20da45-0604-4d60-85db-925989df1db6", - "startTime": datetime.datetime(2021, 10, 18, 7, 0, tzinfo=datetime.timezone.utc), - "endTime": "2021-10-19T07:00:00Z", - "createTime": "2021-10-26T07:43:27.680074Z", - "downloadUrl": "https://youtubereporting.googleapis.com/v1/media/CHANNEL/ybpwL6sPt6SSzazIV400WQ/jobs/1c20da45-0604-4d60-85db-925989df1db6/reports/4315953856?alt=media", - }, - { - "id": "4317112913", - "jobId": "1c20da45-0604-4d60-85db-925989df1db6", - "startTime": datetime.datetime(2021, 10, 25, 7, 0, tzinfo=datetime.timezone.utc), - "endTime": "2021-10-26T07:00:00Z", - "createTime": "2021-10-27T04:59:46.114806Z", - "downloadUrl": "https://youtubereporting.googleapis.com/v1/media/CHANNEL/ybpwL6sPt6SSzazIV400WQ/jobs/1c20da45-0604-4d60-85db-925989df1db6/reports/4317112913?alt=media", - }, - ] - - -def test_report_resources_next_page_token(): - jobs_resource = JobsResource() - stream = ReportResources("stream_name", jobs_resource, "job1") - assert stream.next_page_token({}) is None - - -def test_channel_reports_path(): - jobs_resource = JobsResource() - parent = ReportResources("stream_name", jobs_resource, "job1") - stream = ChannelReports("stream_name", [], parent=parent) - - downloadUrl = "https://youtubereporting.googleapis.com/v1/media/CHANNEL/ybpwL6sPt6SSzazIV400WQ/jobs/1c20da45-0604-4d60-85db-925989df1db6/reports/4317112913?alt=media" - stream_slice = { - "parent": { - "id": "4317112913", - "jobId": "1c20da45-0604-4d60-85db-925989df1db6", - "startTime": datetime.datetime(2021, 10, 25, 7, 0, tzinfo=datetime.timezone.utc), - "endTime": datetime.datetime(2021, 10, 26, 7, 0, tzinfo=datetime.timezone.utc), - "createTime": datetime.datetime(2021, 10, 27, 4, 59, 46, 114806, tzinfo=datetime.timezone.utc), - "downloadUrl": downloadUrl, - } - } - - path = stream.path(stream_state={}, stream_slice=stream_slice, next_page_token=None) - assert path == downloadUrl - - -def test_channel_reports_parse_response(): - jobs_resource = JobsResource() - parent = ReportResources("stream_name", jobs_resource, "job1") - stream = ChannelReports("stream_name", ["date", "channel_id"], parent=parent) - - response = MagicMock() - response.text = "date,channel_id,likes,dislikes\n20211026,UCybpwL6sPt6SSzazIV400WQ,210,21\n20211026,UCybpwL6sPt6SSzazIV400WQ,150,18\n" - - result = stream.parse_response(response, stream_state={}) - assert list(result) == [ - OrderedDict([("date", "20211026"), ("channel_id", "UCybpwL6sPt6SSzazIV400WQ"), ("likes", "210"), ("dislikes", "21")]), - OrderedDict([("date", "20211026"), ("channel_id", "UCybpwL6sPt6SSzazIV400WQ"), ("likes", "150"), ("dislikes", "18")]), - ] - - -def test_backoff_505(): - response = MagicMock() - response.status_code = 505 - assert CustomBackoffMixin().should_retry(response) is True - - -def test_backoff_429(): - response = MagicMock() - response.status_code = 429 - assert CustomBackoffMixin().should_retry(response) is True - - -def test_backoff_429_per_minute_limit(): - response = MagicMock() - response.status_code = 429 - response.json = MagicMock( - return_value={ - "error": { - "code": 429, - "message": "Quota exceeded for quota metric 'Free requests' and limit 'Free requests per minute' of service 'youtubereporting.googleapis.com' for consumer 'project_number:863188056127'.", - "status": "RESOURCE_EXHAUSTED", - "details": [ - { - "reason": "RATE_LIMIT_EXCEEDED", - "metadata": { - "consumer": "projects/863188056127", - "quota_limit": "FreeQuotaRequestsPerMinutePerProject", - "quota_limit_value": "60", - "quota_metric": "youtubereporting.googleapis.com/free_quota_requests", - "service": "youtubereporting.googleapis.com", - }, - } - ], - } - } - ) - assert CustomBackoffMixin().should_retry(response) is True - - -def test_backoff_429_per_day_limit(): - response = MagicMock() - response.status_code = 429 - response.json = MagicMock( - return_value={ - "error": { - "code": 429, - "message": "Quota exceeded for quota metric 'Free requests' and limit 'Free requests per day' of service 'youtubereporting.googleapis.com' for consumer 'project_number:863188056127", - "status": "RESOURCE_EXHAUSTED", - "details": [ - { - "reason": "RATE_LIMIT_EXCEEDED", - "metadata": { - "consumer": "projects/863188056127", - "quota_limit": "FreeQuotaRequestsPerDayPerProject", - "quota_limit_value": "20000", - "quota_metric": "youtubereporting.googleapis.com/free_quota_requests", - "service": "youtubereporting.googleapis.com", - }, - } - ], - } - } - ) - custom_mixin = CustomBackoffMixin() - custom_mixin.logger = MagicMock() - assert custom_mixin.should_retry(response) is False diff --git a/docs/integrations/sources/youtube-analytics.md b/docs/integrations/sources/youtube-analytics.md index d1593ab233c39..99e64aa46f34c 100644 --- a/docs/integrations/sources/youtube-analytics.md +++ b/docs/integrations/sources/youtube-analytics.md @@ -86,8 +86,9 @@ Quota usage is not an issue because data is retrieved once and then filtered, so | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------------------- | -| 0.1.6 | 2024-06-17 | [39529](https://github.com/airbytehq/airbyte/pull/39529) | Pin CDK version to 0.38.0 | -| 0.1.5 | 2024-05-21 | [38546](https://github.com/airbytehq/airbyte/pull/38546) | [autopull] base image + poetry + up_to_date | +| 0.2.0 | 2024-07-27 | [x](https://github.com/airbytehq/airbyte/pull/x) | Migrate to LowCode | +| 0.1.6 | 2024-06-17 | [39529](https://github.com/airbytehq/airbyte/pull/39529) | Pin CDK version to 0.38.0 | +| 0.1.5 | 2024-05-21 | [38546](https://github.com/airbytehq/airbyte/pull/38546) | [autopull] base image + poetry + up_to_date | | 0.1.4 | 2023-05-22 | [26420](https://github.com/airbytehq/airbyte/pull/26420) | Migrate to advancedAuth | | 0.1.3 | 2022-09-30 | [17454](https://github.com/airbytehq/airbyte/pull/17454) | Added custom backoff logic | | 0.1.2 | 2022-09-29 | [17399](https://github.com/airbytehq/airbyte/pull/17399) | Fixed `403` error while `check connection` | From 3dbdad9e7a94012cec33714f3b70c008f0e485f6 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Sat, 27 Jul 2024 23:12:05 +0100 Subject: [PATCH 02/19] manifest only --- .../integration_tests/__init__.py | 3 --- .../integration_tests/acceptance.py | 14 -------------- .../source-youtube-analytics/main.py | 8 -------- .../source_youtube_analytics/__init__.py | 8 -------- .../source_youtube_analytics/run.py | 14 -------------- .../source_youtube_analytics/source.py | 18 ------------------ 6 files changed, 65 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/integration_tests/__init__.py delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/integration_tests/acceptance.py delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/main.py delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py diff --git a/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/__init__.py b/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/__init__.py deleted file mode 100644 index 46b7376756ec6..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2021 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/acceptance.py b/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/acceptance.py deleted file mode 100644 index 82823254d2666..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/acceptance.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# 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-youtube-analytics/main.py b/airbyte-integrations/connectors/source-youtube-analytics/main.py deleted file mode 100644 index f2542cccc965d..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/main.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_youtube_analytics.run import run - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py deleted file mode 100644 index 6970981cc59e5..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2021 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceYoutubeAnalytics - -__all__ = ["SourceYoutubeAnalytics"] diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py deleted file mode 100644 index 27f8967eff437..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from airbyte_cdk.entrypoint import launch -from source_youtube_analytics import SourceYoutubeAnalytics - - -def run(): - source = SourceYoutubeAnalytics() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py deleted file mode 100644 index 2772aef56f176..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (c) 2024 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceYoutubeAnalytics(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) From dacbff09146f3368b4851e8e016dc53d097235f1 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Sun, 28 Jul 2024 00:24:33 +0100 Subject: [PATCH 03/19] Revert "manifest only" This reverts commit 3dbdad9e7a94012cec33714f3b70c008f0e485f6. --- .../integration_tests/__init__.py | 3 +++ .../integration_tests/acceptance.py | 14 ++++++++++++++ .../source-youtube-analytics/main.py | 8 ++++++++ .../source_youtube_analytics/__init__.py | 8 ++++++++ .../source_youtube_analytics/run.py | 14 ++++++++++++++ .../source_youtube_analytics/source.py | 18 ++++++++++++++++++ 6 files changed, 65 insertions(+) create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/integration_tests/__init__.py create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/integration_tests/acceptance.py create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/main.py create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py diff --git a/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/__init__.py b/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/__init__.py new file mode 100644 index 0000000000000..46b7376756ec6 --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/__init__.py @@ -0,0 +1,3 @@ +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# diff --git a/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/acceptance.py b/airbyte-integrations/connectors/source-youtube-analytics/integration_tests/acceptance.py new file mode 100644 index 0000000000000..82823254d2666 --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/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-youtube-analytics/main.py b/airbyte-integrations/connectors/source-youtube-analytics/main.py new file mode 100644 index 0000000000000..f2542cccc965d --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/main.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + +from source_youtube_analytics.run import run + +if __name__ == "__main__": + run() diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py new file mode 100644 index 0000000000000..6970981cc59e5 --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# + + +from .source import SourceYoutubeAnalytics + +__all__ = ["SourceYoutubeAnalytics"] diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py new file mode 100644 index 0000000000000..27f8967eff437 --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py @@ -0,0 +1,14 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + + +import sys + +from airbyte_cdk.entrypoint import launch +from source_youtube_analytics import SourceYoutubeAnalytics + + +def run(): + source = SourceYoutubeAnalytics() + launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py new file mode 100644 index 0000000000000..2772aef56f176 --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py @@ -0,0 +1,18 @@ +# +# Copyright (c) 2024 Airbyte, Inc., all rights reserved. +# + +from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource + +""" +This file provides the necessary constructs to interpret a provided declarative YAML configuration file into +source connector. + +WARNING: Do not modify this file. +""" + + +# Declarative Source +class SourceYoutubeAnalytics(YamlDeclarativeSource): + def __init__(self): + super().__init__(**{"path_to_yaml": "manifest.yaml"}) From db30c0b0d4cd09229cfcfd245e0da03178cd849b Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Sun, 28 Jul 2024 00:34:55 +0100 Subject: [PATCH 04/19] fix --- .../connectors/source-youtube-analytics/pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml index fd939f6ff343d..72ee711f87c1f 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml +++ b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml @@ -14,7 +14,6 @@ homepage = "https://airbyte.com" repository = "https://github.com/airbytehq/airbyte" [[tool.poetry.packages]] include = "source_youtube_analytics" -include = "main.py" [tool.poetry.dependencies] python = "^3.9,<3.12" From a9856973dc003c9a3416f67404e649dcd4d07f26 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Sun, 28 Jul 2024 00:47:31 +0100 Subject: [PATCH 05/19] fix poetry --- .../source-youtube-analytics/poetry.lock | 869 ++++++++++++------ .../source-youtube-analytics/pyproject.toml | 2 +- 2 files changed, 613 insertions(+), 258 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock b/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock index a7809966e52b9..8567afc6f6fec 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock +++ b/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock @@ -1,60 +1,68 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "0.38.0" +version = "3.9.5" description = "A framework for writing Airbyte Connectors." optional = false -python-versions = ">=3.8" +python-versions = "<4.0,>=3.9" files = [ - {file = "airbyte-cdk-0.38.0.tar.gz", hash = "sha256:46f054f2f1e8a896a96f9736517bdea1c52ec10ab796b1713122fe04283fb9d0"}, - {file = "airbyte_cdk-0.38.0-py3-none-any.whl", hash = "sha256:8232cad8af0b98e341bf2311990a044bbd82748b6c47dbb3aa0ce6097f0a4ad0"}, + {file = "airbyte_cdk-3.9.5-py3-none-any.whl", hash = "sha256:bc9d962ec8e68b8abc6fa9d26e17dafc8e36654c93352d6033f830f0a14cfd2c"}, + {file = "airbyte_cdk-3.9.5.tar.gz", hash = "sha256:d5fa4fe1b19ea9001ebfb42b6739ac6ea562d2553ce054156cd87fa744547ea8"}, ] [package.dependencies] -airbyte-protocol-models = "0.3.6" +airbyte-protocol-models-pdv2 = ">=0.12.2,<0.13.0" backoff = "*" cachetools = "*" -Deprecated = ">=1.2,<2.0" -dpath = ">=2.0.1,<2.1.0" +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,<1.0" +jsonref = ">=0.2,<0.3" jsonschema = ">=3.2.0,<3.3.0" -pendulum = "*" -pydantic = ">=1.9.2,<1.10.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 = "*" -PyYAML = ">=5.4,<6.0" +pytz = "2024.1" +PyYAML = ">=6.0.1,<7.0.0" requests = "*" -requests-cache = "*" +requests_cache = "*" +wcmatch = "8.4" [package.extras] -dev = ["MyPy (>=0.812,<1.0)", "freezegun", "pytest", "pytest-cov", "pytest-httpserver", "pytest-mock", "requests-mock"] -sphinx-docs = ["Sphinx (>=4.2,<5.0)", "sphinx-rtd-theme (>=1.0,<2.0)"] +file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] +vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] [[package]] -name = "airbyte-protocol-models" -version = "0.3.6" +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-0.3.6-py3-none-any.whl", hash = "sha256:ecd86f41ad5ef66adb2b2c93256148c777c726df8d467ae1af1a7ccf2227f6b1"}, - {file = "airbyte_protocol_models-0.3.6.tar.gz", hash = "sha256:de09dca4f21d3583fe5ea53cff1c3133a006c8f820ee5242ebeb7d8485247a41"}, + {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 = ">=1.9.2,<1.10.0" +pydantic = ">=2.7.2,<3.0.0" [[package]] -name = "atomicwrites" -version = "1.4.1" -description = "Atomic file writes." +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] @@ -87,15 +95,26 @@ files = [ {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.3.3" +version = "5.4.0" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, - {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, + {file = "cachetools-5.4.0-py3-none-any.whl", hash = "sha256:3ae3b49a3d5e28a77a0be2b37dbcb89005058959cb2323858c2657c4a8cab474"}, + {file = "cachetools-5.4.0.tar.gz", hash = "sha256:b8adc2e7c07f105ced7bc56dbb6dfbe7c4a00acce20e2227b3f355be89bc6827"}, ] [[package]] @@ -125,15 +144,79 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2024.6.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, - {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, + {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" @@ -244,6 +327,60 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "cryptography" +version = "42.0.8" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, + {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, + {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, + {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, + {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, + {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, + {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] +nox = ["nox"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + [[package]] name = "deprecated" version = "1.2.14" @@ -263,24 +400,24 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "dpath" -version = "2.0.8" +version = "2.2.0" description = "Filesystem-like pathing and searching for dictionaries" optional = false python-versions = ">=3.7" files = [ - {file = "dpath-2.0.8-py3-none-any.whl", hash = "sha256:f92f595214dd93a00558d75d4b858beee519f4cffca87f02616ad6cd013f3436"}, - {file = "dpath-2.0.8.tar.gz", hash = "sha256:a3440157ebe80d0a3ad794f1b61c571bef125214800ffdb9afc9424e8250fe9b"}, + {file = "dpath-2.2.0-py3-none-any.whl", hash = "sha256:b330a375ded0a0d2ed404440f6c6a715deae5313af40bbb01c8a41d891900576"}, + {file = "dpath-2.2.0.tar.gz", hash = "sha256:34f7e630dc55ea3f219e555726f5da4b4b25f2200319c8e6902c394258dd6a3e"}, ] [[package]] name = "exceptiongroup" -version = "1.2.1" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, - {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -349,15 +486,40 @@ 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.3.0" -description = "jsonref is a library for automatic dereferencing of JSON Reference objects for Python." +version = "0.2" +description = "An implementation of JSON Reference for Python" optional = false -python-versions = ">=3.3,<4.0" +python-versions = "*" files = [ - {file = "jsonref-0.3.0-py3-none-any.whl", hash = "sha256:9480ad1b500f7e795daeb0ef29f9c55ae3a9ab38fb8d6659b6f4868acb5a5bc8"}, - {file = "jsonref-0.3.0.tar.gz", hash = "sha256:68b330c6815dc0d490dbb3d65ccda265ddde9f7856fd2f3322f971d456ea7549"}, + {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, + {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, ] [[package]] @@ -381,6 +543,44 @@ six = ">=1.11.0" format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] +[[package]] +name = "langchain-core" +version = "0.1.42" +description = "Building applications with LLMs through composability" +optional = false +python-versions = "<4.0,>=3.8.1" +files = [ + {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, + {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, +] + +[package.dependencies] +jsonpatch = ">=1.33,<2.0" +langsmith = ">=0.1.0,<0.2.0" +packaging = ">=23.2,<24.0" +pydantic = ">=1,<3" +PyYAML = ">=5.3" +tenacity = ">=8.1.0,<9.0.0" + +[package.extras] +extended-testing = ["jinja2 (>=3,<4)"] + +[[package]] +name = "langsmith" +version = "0.1.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\""} +requests = ">=2,<3" + [[package]] name = "markupsafe" version = "2.1.5" @@ -450,115 +650,110 @@ files = [ {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 = "24.1" +version = "23.2" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "pendulum" -version = "3.0.0" +version = "2.1.2" description = "Python datetimes made easy" optional = false -python-versions = ">=3.8" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "pendulum-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2cf9e53ef11668e07f73190c805dbdf07a1939c3298b78d5a9203a86775d1bfd"}, - {file = "pendulum-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fb551b9b5e6059377889d2d878d940fd0bbb80ae4810543db18e6f77b02c5ef6"}, - {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c58227ac260d5b01fc1025176d7b31858c9f62595737f350d22124a9a3ad82d"}, - {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60fb6f415fea93a11c52578eaa10594568a6716602be8430b167eb0d730f3332"}, - {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b69f6b4dbcb86f2c2fe696ba991e67347bcf87fe601362a1aba6431454b46bde"}, - {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:138afa9c373ee450ede206db5a5e9004fd3011b3c6bbe1e57015395cd076a09f"}, - {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:83d9031f39c6da9677164241fd0d37fbfc9dc8ade7043b5d6d62f56e81af8ad2"}, - {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c2308af4033fa534f089595bcd40a95a39988ce4059ccd3dc6acb9ef14ca44a"}, - {file = "pendulum-3.0.0-cp310-none-win_amd64.whl", hash = "sha256:9a59637cdb8462bdf2dbcb9d389518c0263799189d773ad5c11db6b13064fa79"}, - {file = "pendulum-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3725245c0352c95d6ca297193192020d1b0c0f83d5ee6bb09964edc2b5a2d508"}, - {file = "pendulum-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c035f03a3e565ed132927e2c1b691de0dbf4eb53b02a5a3c5a97e1a64e17bec"}, - {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597e66e63cbd68dd6d58ac46cb7a92363d2088d37ccde2dae4332ef23e95cd00"}, - {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99a0f8172e19f3f0c0e4ace0ad1595134d5243cf75985dc2233e8f9e8de263ca"}, - {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:77d8839e20f54706aed425bec82a83b4aec74db07f26acd039905d1237a5e1d4"}, - {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afde30e8146292b059020fbc8b6f8fd4a60ae7c5e6f0afef937bbb24880bdf01"}, - {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:660434a6fcf6303c4efd36713ca9212c753140107ee169a3fc6c49c4711c2a05"}, - {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dee9e5a48c6999dc1106eb7eea3e3a50e98a50651b72c08a87ee2154e544b33e"}, - {file = "pendulum-3.0.0-cp311-none-win_amd64.whl", hash = "sha256:d4cdecde90aec2d67cebe4042fd2a87a4441cc02152ed7ed8fb3ebb110b94ec4"}, - {file = "pendulum-3.0.0-cp311-none-win_arm64.whl", hash = "sha256:773c3bc4ddda2dda9f1b9d51fe06762f9200f3293d75c4660c19b2614b991d83"}, - {file = "pendulum-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:409e64e41418c49f973d43a28afe5df1df4f1dd87c41c7c90f1a63f61ae0f1f7"}, - {file = "pendulum-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a38ad2121c5ec7c4c190c7334e789c3b4624798859156b138fcc4d92295835dc"}, - {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fde4d0b2024b9785f66b7f30ed59281bd60d63d9213cda0eb0910ead777f6d37"}, - {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2c5675769fb6d4c11238132962939b960fcb365436b6d623c5864287faa319"}, - {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8af95e03e066826f0f4c65811cbee1b3123d4a45a1c3a2b4fc23c4b0dff893b5"}, - {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2165a8f33cb15e06c67070b8afc87a62b85c5a273e3aaa6bc9d15c93a4920d6f"}, - {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ad5e65b874b5e56bd942546ea7ba9dd1d6a25121db1c517700f1c9de91b28518"}, - {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17fe4b2c844bbf5f0ece69cfd959fa02957c61317b2161763950d88fed8e13b9"}, - {file = "pendulum-3.0.0-cp312-none-win_amd64.whl", hash = "sha256:78f8f4e7efe5066aca24a7a57511b9c2119f5c2b5eb81c46ff9222ce11e0a7a5"}, - {file = "pendulum-3.0.0-cp312-none-win_arm64.whl", hash = "sha256:28f49d8d1e32aae9c284a90b6bb3873eee15ec6e1d9042edd611b22a94ac462f"}, - {file = "pendulum-3.0.0-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d4e2512f4e1a4670284a153b214db9719eb5d14ac55ada5b76cbdb8c5c00399d"}, - {file = "pendulum-3.0.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:3d897eb50883cc58d9b92f6405245f84b9286cd2de6e8694cb9ea5cb15195a32"}, - {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e169cc2ca419517f397811bbe4589cf3cd13fca6dc38bb352ba15ea90739ebb"}, - {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17c3084a4524ebefd9255513692f7e7360e23c8853dc6f10c64cc184e1217ab"}, - {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:826d6e258052715f64d05ae0fc9040c0151e6a87aae7c109ba9a0ed930ce4000"}, - {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2aae97087872ef152a0c40e06100b3665d8cb86b59bc8471ca7c26132fccd0f"}, - {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ac65eeec2250d03106b5e81284ad47f0d417ca299a45e89ccc69e36130ca8bc7"}, - {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a5346d08f3f4a6e9e672187faa179c7bf9227897081d7121866358af369f44f9"}, - {file = "pendulum-3.0.0-cp37-none-win_amd64.whl", hash = "sha256:235d64e87946d8f95c796af34818c76e0f88c94d624c268693c85b723b698aa9"}, - {file = "pendulum-3.0.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:6a881d9c2a7f85bc9adafcfe671df5207f51f5715ae61f5d838b77a1356e8b7b"}, - {file = "pendulum-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d7762d2076b9b1cb718a6631ad6c16c23fc3fac76cbb8c454e81e80be98daa34"}, - {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e8e36a8130819d97a479a0e7bf379b66b3b1b520e5dc46bd7eb14634338df8c"}, - {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7dc843253ac373358ffc0711960e2dd5b94ab67530a3e204d85c6e8cb2c5fa10"}, - {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a78ad3635d609ceb1e97d6aedef6a6a6f93433ddb2312888e668365908c7120"}, - {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b30a137e9e0d1f751e60e67d11fc67781a572db76b2296f7b4d44554761049d6"}, - {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c95984037987f4a457bb760455d9ca80467be792236b69d0084f228a8ada0162"}, - {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d29c6e578fe0f893766c0d286adbf0b3c726a4e2341eba0917ec79c50274ec16"}, - {file = "pendulum-3.0.0-cp38-none-win_amd64.whl", hash = "sha256:deaba8e16dbfcb3d7a6b5fabdd5a38b7c982809567479987b9c89572df62e027"}, - {file = "pendulum-3.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b11aceea5b20b4b5382962b321dbc354af0defe35daa84e9ff3aae3c230df694"}, - {file = "pendulum-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90d4d504e82ad236afac9adca4d6a19e4865f717034fc69bafb112c320dcc8f"}, - {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:825799c6b66e3734227756fa746cc34b3549c48693325b8b9f823cb7d21b19ac"}, - {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad769e98dc07972e24afe0cff8d365cb6f0ebc7e65620aa1976fcfbcadc4c6f3"}, - {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6fc26907eb5fb8cc6188cc620bc2075a6c534d981a2f045daa5f79dfe50d512"}, - {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c717eab1b6d898c00a3e0fa7781d615b5c5136bbd40abe82be100bb06df7a56"}, - {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3ddd1d66d1a714ce43acfe337190be055cdc221d911fc886d5a3aae28e14b76d"}, - {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:822172853d7a9cf6da95d7b66a16c7160cb99ae6df55d44373888181d7a06edc"}, - {file = "pendulum-3.0.0-cp39-none-win_amd64.whl", hash = "sha256:840de1b49cf1ec54c225a2a6f4f0784d50bd47f68e41dc005b7f67c7d5b5f3ae"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b1f74d1e6ffe5d01d6023870e2ce5c2191486928823196f8575dcc786e107b1"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:729e9f93756a2cdfa77d0fc82068346e9731c7e884097160603872686e570f07"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e586acc0b450cd21cbf0db6bae386237011b75260a3adceddc4be15334689a9a"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22e7944ffc1f0099a79ff468ee9630c73f8c7835cd76fdb57ef7320e6a409df4"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fa30af36bd8e50686846bdace37cf6707bdd044e5cb6e1109acbad3277232e04"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:440215347b11914ae707981b9a57ab9c7b6983ab0babde07063c6ee75c0dc6e7"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:314c4038dc5e6a52991570f50edb2f08c339debdf8cea68ac355b32c4174e820"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5acb1d386337415f74f4d1955c4ce8d0201978c162927d07df8eb0692b2d8533"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a789e12fbdefaffb7b8ac67f9d8f22ba17a3050ceaaa635cd1cc4645773a4b1e"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:860aa9b8a888e5913bd70d819306749e5eb488e6b99cd6c47beb701b22bdecf5"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5ebc65ea033ef0281368217fbf59f5cb05b338ac4dd23d60959c7afcd79a60a0"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9fef18ab0386ef6a9ac7bad7e43ded42c83ff7ad412f950633854f90d59afa8"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c134ba2f0571d0b68b83f6972e2307a55a5a849e7dac8505c715c531d2a8795"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:385680812e7e18af200bb9b4a49777418c32422d05ad5a8eb85144c4a285907b"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eec91cd87c59fb32ec49eb722f375bd58f4be790cae11c1b70fac3ee4f00da0"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4386bffeca23c4b69ad50a36211f75b35a4deb6210bdca112ac3043deb7e494a"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dfbcf1661d7146d7698da4b86e7f04814221081e9fe154183e34f4c5f5fa3bf8"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:04a1094a5aa1daa34a6b57c865b25f691848c61583fb22722a4df5699f6bf74c"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5b0ec85b9045bd49dd3a3493a5e7ddfd31c36a2a60da387c419fa04abcaecb23"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0a15b90129765b705eb2039062a6daf4d22c4e28d1a54fa260892e8c3ae6e157"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:bb8f6d7acd67a67d6fedd361ad2958ff0539445ef51cbe8cd288db4306503cd0"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd69b15374bef7e4b4440612915315cc42e8575fcda2a3d7586a0d88192d0c88"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc00f8110db6898360c53c812872662e077eaf9c75515d53ecc65d886eec209a"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:83a44e8b40655d0ba565a5c3d1365d27e3e6778ae2a05b69124db9e471255c4a"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1a3604e9fbc06b788041b2a8b78f75c243021e0f512447806a6d37ee5214905d"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:92c307ae7accebd06cbae4729f0ba9fa724df5f7d91a0964b1b972a22baa482b"}, - {file = "pendulum-3.0.0.tar.gz", hash = "sha256:5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e"}, + {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" -tzdata = ">=2020.1" - -[package.extras] -test = ["time-machine (>=2.6.0)"] +python-dateutil = ">=2.6,<3.0" +pytzdata = ">=2020.1" [[package]] name = "platformdirs" @@ -592,66 +787,167 @@ 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" +name = "pycparser" +version = "2.22" +description = "C parser in Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.8" files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pydantic" -version = "1.9.2" -description = "Data validation and settings management using python type hints" +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\""} + +[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.6.1" +python-versions = ">=3.8" files = [ - {file = "pydantic-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9c9e04a6cdb7a363d7cb3ccf0efea51e0abb48e180c0d31dca8d247967d85c6e"}, - {file = "pydantic-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fafe841be1103f340a24977f61dee76172e4ae5f647ab9e7fd1e1fca51524f08"}, - {file = "pydantic-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afacf6d2a41ed91fc631bade88b1d319c51ab5418870802cedb590b709c5ae3c"}, - {file = "pydantic-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ee0d69b2a5b341fc7927e92cae7ddcfd95e624dfc4870b32a85568bd65e6131"}, - {file = "pydantic-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ff68fc85355532ea77559ede81f35fff79a6a5543477e168ab3a381887caea76"}, - {file = "pydantic-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c0f5e142ef8217019e3eef6ae1b6b55f09a7a15972958d44fbd228214cede567"}, - {file = "pydantic-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:615661bfc37e82ac677543704437ff737418e4ea04bef9cf11c6d27346606044"}, - {file = "pydantic-1.9.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:328558c9f2eed77bd8fffad3cef39dbbe3edc7044517f4625a769d45d4cf7555"}, - {file = "pydantic-1.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bd446bdb7755c3a94e56d7bdfd3ee92396070efa8ef3a34fab9579fe6aa1d84"}, - {file = "pydantic-1.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0b214e57623a535936005797567231a12d0da0c29711eb3514bc2b3cd008d0f"}, - {file = "pydantic-1.9.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d8ce3fb0841763a89322ea0432f1f59a2d3feae07a63ea2c958b2315e1ae8adb"}, - {file = "pydantic-1.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b34ba24f3e2d0b39b43f0ca62008f7ba962cff51efa56e64ee25c4af6eed987b"}, - {file = "pydantic-1.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:84d76ecc908d917f4684b354a39fd885d69dd0491be175f3465fe4b59811c001"}, - {file = "pydantic-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4de71c718c9756d679420c69f216776c2e977459f77e8f679a4a961dc7304a56"}, - {file = "pydantic-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5803ad846cdd1ed0d97eb00292b870c29c1f03732a010e66908ff48a762f20e4"}, - {file = "pydantic-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8c5360a0297a713b4123608a7909e6869e1b56d0e96eb0d792c27585d40757f"}, - {file = "pydantic-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:cdb4272678db803ddf94caa4f94f8672e9a46bae4a44f167095e4d06fec12979"}, - {file = "pydantic-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:19b5686387ea0d1ea52ecc4cffb71abb21702c5e5b2ac626fd4dbaa0834aa49d"}, - {file = "pydantic-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:32e0b4fb13ad4db4058a7c3c80e2569adbd810c25e6ca3bbd8b2a9cc2cc871d7"}, - {file = "pydantic-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91089b2e281713f3893cd01d8e576771cd5bfdfbff5d0ed95969f47ef6d676c3"}, - {file = "pydantic-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e631c70c9280e3129f071635b81207cad85e6c08e253539467e4ead0e5b219aa"}, - {file = "pydantic-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b3946f87e5cef3ba2e7bd3a4eb5a20385fe36521d6cc1ebf3c08a6697c6cfb3"}, - {file = "pydantic-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5565a49effe38d51882cb7bac18bda013cdb34d80ac336428e8908f0b72499b0"}, - {file = "pydantic-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bd67cb2c2d9602ad159389c29e4ca964b86fa2f35c2faef54c3eb28b4efd36c8"}, - {file = "pydantic-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4aafd4e55e8ad5bd1b19572ea2df546ccace7945853832bb99422a79c70ce9b8"}, - {file = "pydantic-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d70916235d478404a3fa8c997b003b5f33aeac4686ac1baa767234a0f8ac2326"}, - {file = "pydantic-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ca86b525264daa5f6b192f216a0d1e860b7383e3da1c65a1908f9c02f42801"}, - {file = "pydantic-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1061c6ee6204f4f5a27133126854948e3b3d51fcc16ead2e5d04378c199b2f44"}, - {file = "pydantic-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e78578f0c7481c850d1c969aca9a65405887003484d24f6110458fb02cca7747"}, - {file = "pydantic-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5da164119602212a3fe7e3bc08911a89db4710ae51444b4224c2382fd09ad453"}, - {file = "pydantic-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ead3cd020d526f75b4188e0a8d71c0dbbe1b4b6b5dc0ea775a93aca16256aeb"}, - {file = "pydantic-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7d0f183b305629765910eaad707800d2f47c6ac5bcfb8c6397abdc30b69eeb15"}, - {file = "pydantic-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f1a68f4f65a9ee64b6ccccb5bf7e17db07caebd2730109cb8a95863cfa9c4e55"}, - {file = "pydantic-1.9.2-py3-none-any.whl", hash = "sha256:78a4d6bdfd116a559aeec9a4cfe77dda62acc6233f8b56a716edad2651023e5e"}, - {file = "pydantic-1.9.2.tar.gz", hash = "sha256:8cb0bc509bfb71305d7a59d00163d5f9fc4530f0881ea32c74ff4f74c85f3d3d"}, + {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 = ">=3.7.4.3" +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] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] +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" @@ -696,27 +992,25 @@ files = [ [[package]] name = "pytest" -version = "6.2.5" +version = "8.3.2" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, + {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, + {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, ] [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" +pluggy = ">=1.5,<2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-mock" @@ -749,42 +1043,86 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "pytz" +version = "2024.1" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, +] + +[[package]] +name = "pytzdata" +version = "2020.1" +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 = "5.4.1" +version = "6.0.1" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.6" files = [ - {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, - {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"}, - {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"}, - {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"}, - {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"}, - {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"}, - {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"}, - {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"}, - {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"}, - {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"}, - {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"}, - {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"}, - {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"}, - {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"}, - {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"}, - {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"}, - {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, + {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]] @@ -810,13 +1148,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-cache" -version = "1.2.0" +version = "1.2.1" description = "A persistent cache for python requests" optional = false python-versions = ">=3.8" files = [ - {file = "requests_cache-1.2.0-py3-none-any.whl", hash = "sha256:490324301bf0cb924ff4e6324bd2613453e7e1f847353928b08adb0fdfb7f722"}, - {file = "requests_cache-1.2.0.tar.gz", hash = "sha256:db1c709ca343cc1cd5b6c8b1a5387298eceed02306a6040760db538c885e3838"}, + {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] @@ -840,37 +1178,36 @@ yaml = ["pyyaml (>=6.0.1)"] [[package]] name = "requests-mock" -version = "1.9.3" +version = "1.12.1" description = "Mock out responses from the requests package" optional = false -python-versions = "*" +python-versions = ">=3.5" files = [ - {file = "requests-mock-1.9.3.tar.gz", hash = "sha256:8d72abe54546c1fc9696fa1516672f1031d72a55a1d66c85184f972a24ba0eba"}, - {file = "requests_mock-1.9.3-py2.py3-none-any.whl", hash = "sha256:0a2d38a117c08bb78939ec163522976ad59a6b7fdd82b709e23bb98004a44970"}, + {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, + {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, ] [package.dependencies] -requests = ">=2.3,<3" -six = "*" +requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] -test = ["fixtures", "mock", "purl", "pytest", "sphinx", "testrepository (>=0.0.18)", "testtools"] [[package]] name = "setuptools" -version = "70.0.0" +version = "71.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, + {file = "setuptools-71.1.0-py3-none-any.whl", hash = "sha256:33874fdc59b3188304b2e7c80d9029097ea31627180896fb549c578ceb8a0855"}, + {file = "setuptools-71.1.0.tar.gz", hash = "sha256:032d42ee9fb536e33087fb66cac5f840eb9391ed05637b3f2a76a7c8fb477936"}, ] [package.extras] -docs = ["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"] -testing = ["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)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +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" @@ -884,14 +1221,29 @@ files = [ ] [[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" +name = "tenacity" +version = "8.5.0" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, + {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, +] + +[package.extras] +doc = ["reno", "sphinx"] +test = ["pytest", "tornado (>=4.5)", "typeguard"] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = ">=3.7" files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] [[package]] @@ -905,17 +1257,6 @@ files = [ {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] -[[package]] -name = "tzdata" -version = "2024.1" -description = "Provider of IANA time zone data" -optional = false -python-versions = ">=2" -files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, -] - [[package]] name = "url-normalize" version = "1.4.3" @@ -947,6 +1288,20 @@ 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" @@ -1029,4 +1384,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.9,<3.12" -content-hash = "ee26f6ef6b3ba9c7a97696e9ce8e7a8ea1f8450df15a732ed3b8e32bfaa0ada7" +content-hash = "086efbb1df3c78600e70c99ea8fbc102b17d558e16c81eec1ada38314aa20654" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml index 72ee711f87c1f..5bf05a966d0a1 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml +++ b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml @@ -17,7 +17,7 @@ include = "source_youtube_analytics" [tool.poetry.dependencies] python = "^3.9,<3.12" -airbyte-cdk = "^0" +airbyte-cdk = "^3.8.2" [tool.poetry.scripts] source-youtube-analytics = "source_youtube_analytics.run:run" From d592a48b45a472c2deb62b9040163e133595a3e6 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Mon, 29 Jul 2024 22:46:50 +0100 Subject: [PATCH 06/19] format --- .../source_youtube_analytics/manifest.yaml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml index 6e89766da012a..4449ef2ccf1fb 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml @@ -15,7 +15,7 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: '#/definitions/base_requester' + $ref: "#/definitions/base_requester" path: jobs http_method: GET request_body_json: @@ -30,18 +30,18 @@ definitions: schema_loader: type: InlineSchemaLoader schema: - $ref: '#/schemas/jobs_resource' + $ref: "#/schemas/jobs_resource" report_resources: type: DeclarativeStream name: report_resources retriever: type: SimpleRetriever requester: - $ref: '#/definitions/base_requester' + $ref: "#/definitions/base_requester" path: jobs/{{ stream_partition['job_id'] }}/reports http_method: GET request_parameters: - startTimeAtOrAfter: '{{ now_utc() }}' + startTimeAtOrAfter: "{{ now_utc() }}" record_selector: type: RecordSelector extractor: @@ -53,7 +53,7 @@ definitions: parent_stream_configs: - type: ParentStreamConfig stream: - $ref: '#/definitions/streams/jobs_resource' + $ref: "#/definitions/streams/jobs_resource" parent_key: id partition_field: job_id primary_key: @@ -61,14 +61,14 @@ definitions: schema_loader: type: InlineSchemaLoader schema: - $ref: '#/schemas/report_resources' + $ref: "#/schemas/report_resources" channel_annotations_a1: type: DeclarativeStream name: channel_annotations_a1 retriever: type: SimpleRetriever requester: - $ref: '#/definitions/base_requester' + $ref: "#/definitions/base_requester" path: / http_method: GET record_selector: @@ -81,7 +81,7 @@ definitions: parent_stream_configs: - type: ParentStreamConfig stream: - $ref: '#/definitions/streams/report_resources' + $ref: "#/definitions/streams/report_resources" parent_key: downloadUrl partition_field: path primary_key: @@ -96,7 +96,7 @@ definitions: schema_loader: type: InlineSchemaLoader schema: - $ref: '#/schemas/channel_annotations_a1' + $ref: "#/schemas/channel_annotations_a1" base_requester: type: HttpRequester url_base: https://youtubereporting.googleapis.com/v1/ @@ -110,9 +110,9 @@ definitions: token_refresh_endpoint: https://oauth2.googleapis.com/token streams: - - $ref: '#/definitions/streams/jobs_resource' - - $ref: '#/definitions/streams/report_resources' - - $ref: '#/definitions/streams/channel_annotations_a1' + - $ref: "#/definitions/streams/jobs_resource" + - $ref: "#/definitions/streams/report_resources" + - $ref: "#/definitions/streams/channel_annotations_a1" spec: type: Spec From b0b5405227f53093617241594f56bcf09efd7dcd Mon Sep 17 00:00:00 2001 From: Octavia Squidington III Date: Thu, 8 Aug 2024 05:17:01 +0000 Subject: [PATCH 07/19] chore: auto-fix lint and format issues --- .../source_youtube_analytics/manifest.yaml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml index 6e89766da012a..4449ef2ccf1fb 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml @@ -15,7 +15,7 @@ definitions: retriever: type: SimpleRetriever requester: - $ref: '#/definitions/base_requester' + $ref: "#/definitions/base_requester" path: jobs http_method: GET request_body_json: @@ -30,18 +30,18 @@ definitions: schema_loader: type: InlineSchemaLoader schema: - $ref: '#/schemas/jobs_resource' + $ref: "#/schemas/jobs_resource" report_resources: type: DeclarativeStream name: report_resources retriever: type: SimpleRetriever requester: - $ref: '#/definitions/base_requester' + $ref: "#/definitions/base_requester" path: jobs/{{ stream_partition['job_id'] }}/reports http_method: GET request_parameters: - startTimeAtOrAfter: '{{ now_utc() }}' + startTimeAtOrAfter: "{{ now_utc() }}" record_selector: type: RecordSelector extractor: @@ -53,7 +53,7 @@ definitions: parent_stream_configs: - type: ParentStreamConfig stream: - $ref: '#/definitions/streams/jobs_resource' + $ref: "#/definitions/streams/jobs_resource" parent_key: id partition_field: job_id primary_key: @@ -61,14 +61,14 @@ definitions: schema_loader: type: InlineSchemaLoader schema: - $ref: '#/schemas/report_resources' + $ref: "#/schemas/report_resources" channel_annotations_a1: type: DeclarativeStream name: channel_annotations_a1 retriever: type: SimpleRetriever requester: - $ref: '#/definitions/base_requester' + $ref: "#/definitions/base_requester" path: / http_method: GET record_selector: @@ -81,7 +81,7 @@ definitions: parent_stream_configs: - type: ParentStreamConfig stream: - $ref: '#/definitions/streams/report_resources' + $ref: "#/definitions/streams/report_resources" parent_key: downloadUrl partition_field: path primary_key: @@ -96,7 +96,7 @@ definitions: schema_loader: type: InlineSchemaLoader schema: - $ref: '#/schemas/channel_annotations_a1' + $ref: "#/schemas/channel_annotations_a1" base_requester: type: HttpRequester url_base: https://youtubereporting.googleapis.com/v1/ @@ -110,9 +110,9 @@ definitions: token_refresh_endpoint: https://oauth2.googleapis.com/token streams: - - $ref: '#/definitions/streams/jobs_resource' - - $ref: '#/definitions/streams/report_resources' - - $ref: '#/definitions/streams/channel_annotations_a1' + - $ref: "#/definitions/streams/jobs_resource" + - $ref: "#/definitions/streams/report_resources" + - $ref: "#/definitions/streams/channel_annotations_a1" spec: type: Spec From b0a733fbe30feabcfec49f4547c3eb3745efa85a Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Mon, 12 Aug 2024 05:09:09 +0100 Subject: [PATCH 08/19] migrations --- .../source-youtube-analytics/poetry.lock | 411 +++-- .../source-youtube-analytics/pyproject.toml | 4 +- .../source_youtube_analytics/components.py | 20 + .../source_youtube_analytics/manifest.yaml | 1549 +++++++++++++++-- 4 files changed, 1689 insertions(+), 295 deletions(-) create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py diff --git a/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock b/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock index 8567afc6f6fec..8edff34acb8e8 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock +++ b/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock @@ -1,14 +1,14 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "airbyte-cdk" -version = "3.9.5" +version = "4.3.2" description = "A framework for writing Airbyte Connectors." optional = false -python-versions = "<4.0,>=3.9" +python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-3.9.5-py3-none-any.whl", hash = "sha256:bc9d962ec8e68b8abc6fa9d26e17dafc8e36654c93352d6033f830f0a14cfd2c"}, - {file = "airbyte_cdk-3.9.5.tar.gz", hash = "sha256:d5fa4fe1b19ea9001ebfb42b6739ac6ea562d2553ce054156cd87fa744547ea8"}, + {file = "airbyte_cdk-4.3.2-py3-none-any.whl", hash = "sha256:1dd92de77e2212b13ed6f1e9c4b2559baa905eff6db5bf14b0fbaf1149e60e4c"}, + {file = "airbyte_cdk-4.3.2.tar.gz", hash = "sha256:89db68167e214e5b55d5ef5f821f017ee64bf859f44c60bc0169071fa376e9af"}, ] [package.dependencies] @@ -67,22 +67,22 @@ files = [ [[package]] name = "attrs" -version = "23.2.0" +version = "24.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"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [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]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "backoff" @@ -97,13 +97,13 @@ files = [ [[package]] name = "bracex" -version = "2.4" +version = "2.5" 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"}, + {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, + {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, ] [[package]] @@ -155,63 +155,78 @@ files = [ [[package]] name = "cffi" -version = "1.16.0" +version = "1.17.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"}, + {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, + {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, + {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, + {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, + {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, + {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, + {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, + {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, + {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, + {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, + {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, + {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, + {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, + {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, + {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, + {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, + {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, + {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, + {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, + {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, + {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, + {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, + {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, + {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, + {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, + {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, + {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, + {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, ] [package.dependencies] @@ -567,18 +582,21 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.93" +version = "0.1.98" 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"}, + {file = "langsmith-0.1.98-py3-none-any.whl", hash = "sha256:f79e8a128652bbcee4606d10acb6236973b5cd7dde76e3741186d3b97b5698e9"}, + {file = "langsmith-0.1.98.tar.gz", hash = "sha256:e07678219a0502e8f26d35294e72127a39d25e32fafd091af5a7bb661e9a6bd1"}, ] [package.dependencies] orjson = ">=3.9.14,<4.0.0" -pydantic = {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""} +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]] @@ -652,62 +670,68 @@ files = [ [[package]] name = "orjson" -version = "3.10.6" +version = "3.10.7" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.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"}, + {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, + {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, + {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, + {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, + {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, + {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, + {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, + {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, + {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, + {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, + {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, + {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, + {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, + {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, + {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, + {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, + {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, + {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, + {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, + {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, ] [[package]] @@ -811,7 +835,10 @@ files = [ [package.dependencies] annotated-types = ">=0.4.0" pydantic-core = "2.20.1" -typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} +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)"] @@ -919,19 +946,19 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pyjwt" -version = "2.8.0" +version = "2.9.0" description = "JSON Web Token implementation in Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, - {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, + {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, + {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, ] [package.extras] crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] @@ -1067,62 +1094,64 @@ files = [ [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" 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"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] @@ -1195,13 +1224,13 @@ fixture = ["fixtures"] [[package]] name = "setuptools" -version = "71.1.0" +version = "72.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"}, + {file = "setuptools-72.1.0-py3-none-any.whl", hash = "sha256:5a03e1860cf56bb6ef48ce186b0e557fdba433237481a9a625176c2831be15d1"}, + {file = "setuptools-72.1.0.tar.gz", hash = "sha256:8d243eff56d095e5817f796ede6ae32941278f542e0f941867cc05ae52b162ec"}, ] [package.extras] @@ -1383,5 +1412,5 @@ files = [ [metadata] lock-version = "2.0" -python-versions = "^3.9,<3.12" -content-hash = "086efbb1df3c78600e70c99ea8fbc102b17d558e16c81eec1ada38314aa20654" +python-versions = "^3.10" +content-hash = "9fbeccc7e377f402cdcbcf4923c33f994280ed6b5fcd8cdc1804bb22fb05286c" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml index 5bf05a966d0a1..52a1fa4f9c63f 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml +++ b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml @@ -16,8 +16,8 @@ repository = "https://github.com/airbytehq/airbyte" include = "source_youtube_analytics" [tool.poetry.dependencies] -python = "^3.9,<3.12" -airbyte-cdk = "^3.8.2" +python = "^3.10" +airbyte-cdk = "^4.0.1" [tool.poetry.scripts] source-youtube-analytics = "source_youtube_analytics.run:run" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py new file mode 100644 index 0000000000000..d878d303d2ca9 --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py @@ -0,0 +1,20 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + + +import csv +import io +from typing import List + +import requests +from airbyte_cdk.sources.declarative.extractors.record_extractor import RecordExtractor +from airbyte_cdk.sources.declarative.types import Record + + +class ReportsExtractor(RecordExtractor): + def extract_records(self, response: requests.Response) -> List[Record]: # type: ignore + fp = io.StringIO(response.text) + reader = csv.DictReader(fp) + for record in reader: + yield record diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml index 4449ef2ccf1fb..30bc04bf03cda 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml @@ -1,173 +1,1518 @@ -version: 3.8.2 +version: 4.3.2 type: DeclarativeSource check: type: CheckStream stream_names: - - jobs_resource + - channel_annotations_a1 + # - create_jobs definitions: + base_job: + type: DeclarativeStream + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: jobs + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 401 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - jobs + + base_reports: + type: DeclarativeStream + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: jobs/{{ stream_partition['job_id'] }}/reports + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - reports + + base_stream: + type: DeclarativeStream + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: "{{ stream_partition['url'] }}" + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: CustomRecordExtractor + class_name: source_youtube_analytics.components.ReportsExtractor + streams: - jobs_resource: + create_jobs: type: DeclarativeStream - name: jobs_resource + name: create_jobs + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: SUCCESS + http_codes: + - 409 + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 401 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + partition_router: + type: ListPartitionRouter + values: + - channel_annotations_a1 + - channel_basic_a2 + - channel_cards_a1 + - channel_combined_a2 + - channel_demographics_a1 + - channel_device_os_a2 + - channel_end_screens_a1 + - channel_playback_location_a2 + - channel_province_a2 + - channel_sharing_service_a1 + - channel_subtitles_a2 + - channel_traffic_source_a2 + - playlist_basic_a1 + - playlist_combined_a1 + - playlist_device_os_a1 + - playlist_playback_location_a1 + - playlist_province_a1 + - playlist_traffic_source_a1 + cursor_field: name + request_option: + type: RequestOption + inject_into: body_json + field_name: reportTypeId + + channel_annotations_a1_job: + $ref: "#/definitions/base_job" + name: channel_annotations_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_annotations_a1' }}" + channel_basic_a2_job: + $ref: "#/definitions/base_job" + name: channel_basic_a2_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_basic_a2' }}" + channel_cards_a1_job: + $ref: "#/definitions/base_job" + name: channel_cards_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_cards_a1' }}" + channel_combined_a2_job: + $ref: "#/definitions/base_job" + name: channel_combined_a2_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_combined_a2' }}" + channel_demographics_a1_job: + $ref: "#/definitions/base_job" + name: channel_demographics_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_demographics_a1' }}" + channel_device_os_a2_job: + $ref: "#/definitions/base_job" + name: channel_device_os_a2_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_device_os_a2' }}" + channel_end_screens_a1_job: + $ref: "#/definitions/base_job" + name: channel_end_screens_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_end_screens_a1' }}" + channel_playback_location_a2_job: + $ref: "#/definitions/base_job" + name: channel_playback_location_a2_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_playback_location_a2' }}" + channel_province_a2_job: + $ref: "#/definitions/base_job" + name: channel_province_a2_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_province_a2' }}" + channel_sharing_service_a1_job: + $ref: "#/definitions/base_job" + name: channel_sharing_service_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_sharing_service_a1' }}" + channel_subtitles_a2_job: + $ref: "#/definitions/base_job" + name: channel_subtitles_a2_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_subtitles_a2' }}" + channel_traffic_source_a2_job: + $ref: "#/definitions/base_job" + name: channel_traffic_source_a2_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'channel_traffic_source_a2' }}" + playlist_basic_a1_job: + $ref: "#/definitions/base_job" + name: playlist_basic_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'playlist_basic_a1' }}" + playlist_combined_a1_job: + $ref: "#/definitions/base_job" + name: playlist_combined_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'playlist_combined_a1' }}" + playlist_device_os_a1_job: + $ref: "#/definitions/base_job" + name: playlist_device_os_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'playlist_device_os_a1' }}" + playlist_playback_location_a1_job: + $ref: "#/definitions/base_job" + name: playlist_playback_location_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'playlist_playback_location_a1' }}" + playlist_province_a1_job: + $ref: "#/definitions/base_job" + name: playlist_province_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'playlist_province_a1' }}" + playlist_traffic_source_a1_job: + $ref: "#/definitions/base_job" + name: playlist_traffic_source_a1_job + retriever: + $ref: "#/definitions/base_job/retriever" + record_selector: + $ref: "#/definitions/base_job/retriever/record_selector" + record_filter: + type: RecordFilter + condition: "{{ record.reportTypeId == 'playlist_traffic_source_a1' }}" + + channel_annotations_a1_reports: + $ref: "#/definitions/base_reports" + name: channel_annotations_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_annotations_a1_job" + channel_basic_a2_reports: + $ref: "#/definitions/base_reports" + name: channel_basic_a2_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_basic_a2_job" + channel_cards_a1_reports: + $ref: "#/definitions/base_reports" + name: channel_cards_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_cards_a1_job" + channel_combined_a2_reports: + $ref: "#/definitions/base_reports" + name: channel_combined_a2_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_combined_a2_job" + channel_demographics_a1_reports: + $ref: "#/definitions/base_reports" + name: channel_demographics_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_demographics_a1_job" + channel_device_os_a2_reports: + $ref: "#/definitions/base_reports" + name: channel_device_os_a2_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_device_os_a2_job" + channel_end_screens_a1_reports: + $ref: "#/definitions/base_reports" + name: channel_end_screens_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_end_screens_a1_job" + channel_playback_location_a2_reports: + $ref: "#/definitions/base_reports" + name: channel_playback_location_a2_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_playback_location_a2_job" + channel_province_a2_reports: + $ref: "#/definitions/base_reports" + name: channel_province_a2_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_province_a2_job" + channel_sharing_service_a1_reports: + $ref: "#/definitions/base_reports" + name: channel_sharing_service_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_sharing_service_a1_job" + channel_subtitles_a2_reports: + $ref: "#/definitions/base_reports" + name: channel_subtitles_a2_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_subtitles_a2_job" + channel_traffic_source_a2_reports: + $ref: "#/definitions/base_reports" + name: channel_traffic_source_a2_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/channel_traffic_source_a2_job" + playlist_basic_a1_reports: + $ref: "#/definitions/base_reports" + name: playlist_basic_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/playlist_basic_a1_job" + playlist_combined_a1_reports: + $ref: "#/definitions/base_reports" + name: playlist_combined_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/playlist_combined_a1_job" + playlist_device_os_a1_reports: + $ref: "#/definitions/base_reports" + name: playlist_device_os_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/playlist_device_os_a1_job" + playlist_playback_location_a1_reports: + $ref: "#/definitions/base_reports" + name: playlist_playback_location_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/playlist_playback_location_a1_job" + playlist_province_a1_reports: + $ref: "#/definitions/base_reports" + name: playlist_province_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/playlist_province_a1_job" + playlist_traffic_source_a1_reports: + $ref: "#/definitions/base_reports" + name: playlist_traffic_source_a1_reports + retriever: + $ref: "#/definitions/base_reports/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: id + partition_field: job_id + stream: + $ref: "#/definitions/streams/playlist_traffic_source_a1_job" + + channel_annotations_a1: + $ref: "#/definitions/base_stream" + name: channel_annotations_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - annotation_type + - annotation_id + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_annotations_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_annotations_a1" + channel_basic_a2: + $ref: "#/definitions/base_stream" + name: channel_basic_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_basic_a2_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_basic_a2" + channel_cards_a1: + $ref: "#/definitions/base_stream" + name: channel_cards_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - card_type + - card_id + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_cards_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_cards_a1" + channel_combined_a2: + $ref: "#/definitions/base_stream" + name: channel_combined_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - traffic_source_type + - device_type + - operating_system + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_combined_a2_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_combined_a2" + channel_demographics_a1: + $ref: "#/definitions/base_stream" + name: channel_demographics_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - age_group + - gender + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_demographics_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_demographics_a1" + channel_device_os_a2: + $ref: "#/definitions/base_stream" + name: channel_device_os_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_device_os_a2_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_device_os_a2" + channel_end_screens_a1: + $ref: "#/definitions/base_stream" + name: channel_end_screens_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - end_screen_element_type + - end_screen_element_id + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_end_screens_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_end_screens_a1" + channel_playback_location_a2: + $ref: "#/definitions/base_stream" + name: channel_playback_location_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - playback_location_detail retriever: - type: SimpleRetriever - requester: - $ref: "#/definitions/base_requester" - path: jobs - http_method: GET - request_body_json: - name: Airbyte reporting job - reportTypeId: jobs_resource - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: - - jobs + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_playback_location_a2_reports" schema_loader: type: InlineSchemaLoader schema: - $ref: "#/schemas/jobs_resource" - report_resources: - type: DeclarativeStream - name: report_resources + $ref: "#/schemas/channel_playback_location_a2" + channel_province_a2: + $ref: "#/definitions/base_stream" + name: channel_province_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - province_code retriever: - type: SimpleRetriever - requester: - $ref: "#/definitions/base_requester" - path: jobs/{{ stream_partition['job_id'] }}/reports - http_method: GET - request_parameters: - startTimeAtOrAfter: "{{ now_utc() }}" - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: - - reports + $ref: "#/definitions/base_stream/retriever" partition_router: type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url stream: - $ref: "#/definitions/streams/jobs_resource" - parent_key: id - partition_field: job_id + $ref: "#/definitions/streams/channel_province_a2_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_province_a2" + channel_sharing_service_a1: + $ref: "#/definitions/base_stream" + name: channel_sharing_service_a1 primary_key: - - id + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - sharing_service + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/channel_sharing_service_a1_reports" schema_loader: type: InlineSchemaLoader schema: - $ref: "#/schemas/report_resources" - channel_annotations_a1: - type: DeclarativeStream - name: channel_annotations_a1 + $ref: "#/schemas/channel_sharing_service_a1" + channel_subtitles_a2: + $ref: "#/definitions/base_stream" + name: channel_subtitles_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - subtitle_language retriever: - type: SimpleRetriever - requester: - $ref: "#/definitions/base_requester" - path: / - http_method: GET - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] + $ref: "#/definitions/base_stream/retriever" partition_router: type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url stream: - $ref: "#/definitions/streams/report_resources" + $ref: "#/definitions/streams/channel_subtitles_a2_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_subtitles_a2" + channel_traffic_source_a2: + $ref: "#/definitions/base_stream" + name: channel_traffic_source_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - traffic_source_type + - traffic_source_detail + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig parent_key: downloadUrl - partition_field: path + partition_field: url + stream: + $ref: "#/definitions/streams/channel_traffic_source_a2_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_traffic_source_a2" + playlist_basic_a1: + $ref: "#/definitions/base_stream" + name: playlist_basic_a1 primary_key: - date - channel_id + - playlist_id - video_id - live_or_on_demand - subscribed_status - country_code - - annotation_type - - annotation_id + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/playlist_basic_a1_reports" schema_loader: type: InlineSchemaLoader schema: - $ref: "#/schemas/channel_annotations_a1" + $ref: "#/schemas/playlist_basic_a1" + playlist_combined_a1: + $ref: "#/definitions/base_stream" + name: playlist_combined_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - traffic_source_type + - device_type + - operating_system + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/playlist_combined_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_combined_a1" + playlist_device_os_a1: + $ref: "#/definitions/base_stream" + name: playlist_device_os_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/playlist_device_os_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_device_os_a1" + playlist_playback_location_a1: + $ref: "#/definitions/base_stream" + name: playlist_playback_location_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - playback_location_detail + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/playlist_playback_location_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_playback_location_a1" + playlist_province_a1: + $ref: "#/definitions/base_stream" + name: playlist_province_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - province_code + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/playlist_province_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_province_a1" + playlist_traffic_source_a1: + $ref: "#/definitions/base_stream" + name: playlist_traffic_source_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - traffic_source_type + - traffic_source_detail + retriever: + $ref: "#/definitions/base_stream/retriever" + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: downloadUrl + partition_field: url + stream: + $ref: "#/definitions/streams/playlist_traffic_source_a1_reports" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_traffic_source_a1" + base_requester: type: HttpRequester url_base: https://youtubereporting.googleapis.com/v1/ authenticator: type: OAuthAuthenticator - client_id: '{{ config["client_id"] }}' + client_id: '{{ config[''credentials'']["client_id"] }}' grant_type: refresh_token - client_secret: '{{ config["client_secret"] }}' - refresh_token: '{{ config["client_refresh_token"] }}' + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' refresh_request_body: {} token_refresh_endpoint: https://oauth2.googleapis.com/token streams: - - $ref: "#/definitions/streams/jobs_resource" - - $ref: "#/definitions/streams/report_resources" + # - $ref: "#/definitions/streams/create_jobs" - $ref: "#/definitions/streams/channel_annotations_a1" + - $ref: "#/definitions/streams/channel_basic_a2" + - $ref: "#/definitions/streams/channel_cards_a1" + - $ref: "#/definitions/streams/channel_combined_a2" + - $ref: "#/definitions/streams/channel_demographics_a1" + - $ref: "#/definitions/streams/channel_device_os_a2" + - $ref: "#/definitions/streams/channel_end_screens_a1" + - $ref: "#/definitions/streams/channel_playback_location_a2" + - $ref: "#/definitions/streams/channel_province_a2" + - $ref: "#/definitions/streams/channel_sharing_service_a1" + - $ref: "#/definitions/streams/channel_subtitles_a2" + - $ref: "#/definitions/streams/channel_traffic_source_a2" + - $ref: "#/definitions/streams/playlist_basic_a1" + - $ref: "#/definitions/streams/playlist_combined_a1" + - $ref: "#/definitions/streams/playlist_device_os_a1" + - $ref: "#/definitions/streams/playlist_playback_location_a1" + - $ref: "#/definitions/streams/playlist_province_a1" + - $ref: "#/definitions/streams/playlist_traffic_source_a1" spec: type: Spec + documentationUrl: https://docs.airbyte.com/integrations/sources/youtube-analytics connection_specification: type: object $schema: http://json-schema.org/draft-07/schema# + title: YouTube Analytics Spec required: - - client_id - - client_secret - - client_refresh_token - properties: - client_id: - type: string - order: 0 - title: Client ID - airbyte_secret: true - client_secret: - type: string - order: 1 - title: Client secret - airbyte_secret: true - client_refresh_token: - type: string - order: 2 - title: Refresh token - airbyte_secret: true + - credentials additionalProperties: true - -metadata: - testedStreams: - jobs_resource: - hasRecords: false - streamHash: ff2992789fe26a83fb4dda39ce62421d4ff11bf2 - hasResponse: false - primaryKeysAreUnique: false - primaryKeysArePresent: false - responsesAreSuccessful: false - autoImportSchema: - jobs_resource: true - report_resources: true - channel_annotations_a1: true + properties: + credentials: + type: object + title: Authenticate via OAuth 2.0 + required: + - client_id + - client_secret + - refresh_token + additionalProperties: true + properties: + client_id: + type: string + description: The Client ID of your developer application + title: Client ID + airbyte_secret: true + client_secret: + type: string + description: The client secret of your developer application + title: Client Secret + airbyte_secret: true + refresh_token: + type: string + description: A refresh token generated using the above client ID and secret + title: Refresh Token + airbyte_secret: true + advanced_auth: + auth_flow_type: oauth2.0 + oauth_config_specification: + complete_oauth_output_specification: + type: object + additionalProperties: true + properties: + refresh_token: + type: string + path_in_connector_config: + - credentials + - refresh_token + complete_oauth_server_input_specification: + type: object + additionalProperties: true + properties: + client_id: + type: string + client_secret: + type: string + complete_oauth_server_output_specification: + type: object + additionalProperties: true + properties: + client_id: + type: string + path_in_connector_config: + - credentials + - client_id + client_secret: + type: string + path_in_connector_config: + - credentials + - client_secret schemas: - jobs_resource: + channel_annotations_a1: type: object $schema: http://json-schema.org/draft-07/schema# - properties: {} additionalProperties: true - report_resources: + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "annotation_type": { "type": ["null", "string"] }, + "annotation_id": { "type": ["null", "string"] }, + "annotation_impressions": { "type": ["null", "string"] }, + "annotation_clickable_impressions": { "type": ["null", "string"] }, + "annotation_clicks": { "type": ["null", "string"] }, + "annotation_click_through_rate": { "type": ["null", "string"] }, + "annotation_closable_impressions": { "type": ["null", "string"] }, + "annotation_closes": { "type": ["null", "string"] }, + "annotation_close_rate": { "type": ["null", "string"] }, + } + channel_basic_a2: type: object $schema: http://json-schema.org/draft-07/schema# - properties: {} additionalProperties: true - channel_annotations_a1: + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "views": { "type": ["null", "integer"] }, + "comments": { "type": ["null", "integer"] }, + "likes": { "type": ["null", "integer"] }, + "dislikes": { "type": ["null", "integer"] }, + "shares": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "average_view_duration_percentage": { "type": ["null", "number"] }, + "annotation_impressions": { "type": ["null", "integer"] }, + "annotation_clickable_impressions": { "type": ["null", "integer"] }, + "annotation_clicks": { "type": ["null", "integer"] }, + "annotation_click_through_rate": { "type": ["null", "number"] }, + "annotation_closable_impressions": { "type": ["null", "integer"] }, + "annotation_closes": { "type": ["null", "integer"] }, + "annotation_close_rate": { "type": ["null", "number"] }, + "card_teaser_impressions": { "type": ["null", "integer"] }, + "card_teaser_clicks": { "type": ["null", "integer"] }, + "card_teaser_click_rate": { "type": ["null", "number"] }, + "card_impressions": { "type": ["null", "integer"] }, + "card_clicks": { "type": ["null", "integer"] }, + "card_click_rate": { "type": ["null", "number"] }, + "subscribers_gained": { "type": ["null", "integer"] }, + "subscribers_lost": { "type": ["null", "integer"] }, + "videos_added_to_playlists": { "type": ["null", "integer"] }, + "videos_removed_from_playlists": { "type": ["null", "integer"] }, + "red_views": { "type": ["null", "integer"] }, + "red_watch_time_minutes": { "type": ["null", "number"] }, + } + channel_cards_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "card_type": { "type": ["null", "string"] }, + "card_id": { "type": ["null", "string"] }, + "card_teaser_impressions": { "type": ["null", "string"] }, + "card_teaser_clicks": { "type": ["null", "string"] }, + "card_teaser_click_rate": { "type": ["null", "string"] }, + "card_impressions": { "type": ["null", "string"] }, + "card_clicks": { "type": ["null", "string"] }, + "card_click_rate": { "type": ["null", "string"] }, + } + channel_combined_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "playback_location_type": { "type": ["null", "integer"] }, + "traffic_source_type": { "type": ["null", "integer"] }, + "device_type": { "type": ["null", "integer"] }, + "operating_system": { "type": ["null", "integer"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "average_view_duration_percentage": { "type": ["null", "number"] }, + "red_views": { "type": ["null", "integer"] }, + "red_watch_time_minutes": { "type": ["null", "number"] }, + } + channel_demographics_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "age_group": { "type": ["null", "string"] }, + "gender": { "type": ["null", "string"] }, + "views_percentage": { "type": ["null", "string"] }, + } + channel_device_os_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "device_type": { "type": ["null", "integer"] }, + "operating_system": { "type": ["null", "integer"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "average_view_duration_percentage": { "type": ["null", "number"] }, + "red_views": { "type": ["null", "integer"] }, + "red_watch_time_minutes": { "type": ["null", "number"] }, + } + channel_end_screens_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "end_screen_element_type": { "type": ["null", "string"] }, + "end_screen_element_id": { "type": ["null", "string"] }, + "end_screen_element_clicks": { "type": ["null", "string"] }, + "end_screen_element_impressions": { "type": ["null", "string"] }, + "end_screen_element_click_rate": { "type": ["null", "string"] }, + } + channel_playback_location_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "playback_location_type": { "type": ["null", "integer"] }, + "playback_location_detail": { "type": ["null", "string"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "average_view_duration_percentage": { "type": ["null", "number"] }, + "red_views": { "type": ["null", "integer"] }, + "red_watch_time_minutes": { "type": ["null", "number"] }, + } + channel_province_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "province_code": { "type": ["null", "string"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "average_view_duration_percentage": { "type": ["null", "number"] }, + "annotation_click_through_rate": { "type": ["null", "integer"] }, + "annotation_close_rate": { "type": ["null", "integer"] }, + "annotation_impressions": { "type": ["null", "integer"] }, + "annotation_clickable_impressions": { "type": ["null", "integer"] }, + "annotation_closable_impressions": { "type": ["null", "integer"] }, + "annotation_clicks": { "type": ["null", "integer"] }, + "annotation_closes": { "type": ["null", "integer"] }, + "card_click_rate": { "type": ["null", "integer"] }, + "card_teaser_click_rate": { "type": ["null", "integer"] }, + "card_impressions": { "type": ["null", "integer"] }, + "card_teaser_impressions": { "type": ["null", "integer"] }, + "card_clicks": { "type": ["null", "integer"] }, + "card_teaser_clicks": { "type": ["null", "integer"] }, + "red_views": { "type": ["null", "integer"] }, + "red_watch_time_minutes": { "type": ["null", "number"] }, + } + channel_sharing_service_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "sharing_service": { "type": ["null", "string"] }, + "shares": { "type": ["null", "string"] }, + } + channel_subtitles_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "subtitle_language": { "type": ["null", "string"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "average_view_duration_percentage": { "type": ["null", "number"] }, + "red_views": { "type": ["null", "integer"] }, + "red_watch_time_minutes": { "type": ["null", "number"] }, + } + channel_traffic_source_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "traffic_source_type": { "type": ["null", "integer"] }, + "traffic_source_detail": { "type": ["null", "string"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "average_view_duration_percentage": { "type": ["null", "number"] }, + "red_views": { "type": ["null", "integer"] }, + "red_watch_time_minutes": { "type": ["null", "number"] }, + } + playlist_basic_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "playlist_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "playlist_starts": { "type": ["null", "integer"] }, + "playlist_saves_added": { "type": ["null", "integer"] }, + "playlist_saves_removed": { "type": ["null", "integer"] }, + } + playlist_combined_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "playlist_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "playback_location_type": { "type": ["null", "integer"] }, + "traffic_source_type": { "type": ["null", "integer"] }, + "device_type": { "type": ["null", "integer"] }, + "operating_system": { "type": ["null", "integer"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "playlist_starts": { "type": ["null", "integer"] }, + "playlist_saves_added": { "type": ["null", "integer"] }, + "playlist_saves_removed": { "type": ["null", "integer"] }, + } + playlist_device_os_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "playlist_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "device_type": { "type": ["null", "integer"] }, + "operating_system": { "type": ["null", "integer"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "playlist_starts": { "type": ["null", "integer"] }, + "playlist_saves_added": { "type": ["null", "integer"] }, + "playlist_saves_removed": { "type": ["null", "integer"] }, + } + playlist_playback_location_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "playlist_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "playback_location_type": { "type": ["null", "integer"] }, + "playback_location_detail": { "type": ["null", "string"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "playlist_starts": { "type": ["null", "integer"] }, + "playlist_saves_added": { "type": ["null", "integer"] }, + "playlist_saves_removed": { "type": ["null", "integer"] }, + } + playlist_province_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "playlist_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "province_code": { "type": ["null", "string"] }, + "views": { "type": ["null", "string"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "playlist_starts": { "type": ["null", "string"] }, + "playlist_saves_added": { "type": ["null", "string"] }, + "playlist_saves_removed": { "type": ["null", "string"] }, + } + playlist_traffic_source_a1: type: object $schema: http://json-schema.org/draft-07/schema# - properties: {} additionalProperties: true + properties: + { + "date": { "type": "integer" }, + "channel_id": { "type": ["null", "string"] }, + "playlist_id": { "type": ["null", "string"] }, + "video_id": { "type": ["null", "string"] }, + "live_or_on_demand": { "type": ["null", "string"] }, + "subscribed_status": { "type": ["null", "string"] }, + "country_code": { "type": ["null", "string"] }, + "traffic_source_type": { "type": ["null", "integer"] }, + "traffic_source_detail": { "type": ["null", "string"] }, + "views": { "type": ["null", "integer"] }, + "watch_time_minutes": { "type": ["null", "number"] }, + "average_view_duration_seconds": { "type": ["null", "number"] }, + "playlist_starts": { "type": ["null", "integer"] }, + "playlist_saves_added": { "type": ["null", "integer"] }, + "playlist_saves_removed": { "type": ["null", "integer"] }, + } From ac61641c3b080deca0bb07479185438bbdd42561 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Mon, 12 Aug 2024 05:27:38 +0100 Subject: [PATCH 09/19] fix base image --- .../connectors/source-youtube-analytics/metadata.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml b/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml index 9351abe1ab884..7ea0bb0e0af1b 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml @@ -38,5 +38,5 @@ data: type: GSM alias: airbyte-connector-testing-secret-store connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:1.2.0@sha256:c22a9d97464b69d6ef01898edf3f8612dc11614f05a84984451dde195f337db9 + baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 metadataSpecVersion: "1.0" From e1516f9a186ed77d93b210c1a5e9a86ba2d293fd Mon Sep 17 00:00:00 2001 From: Tope Folorunso <66448986+topefolorunso@users.noreply.github.com> Date: Tue, 27 Aug 2024 20:37:27 +0100 Subject: [PATCH 10/19] Update youtube-analytics.md --- docs/integrations/sources/youtube-analytics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/sources/youtube-analytics.md b/docs/integrations/sources/youtube-analytics.md index 99e64aa46f34c..5fd0eff36508b 100644 --- a/docs/integrations/sources/youtube-analytics.md +++ b/docs/integrations/sources/youtube-analytics.md @@ -86,7 +86,7 @@ Quota usage is not an issue because data is retrieved once and then filtered, so | Version | Date | Pull Request | Subject | | :------ | :--------- | :------------------------------------------------------- | :--------------------------------------------- | -| 0.2.0 | 2024-07-27 | [x](https://github.com/airbytehq/airbyte/pull/x) | Migrate to LowCode | +| 0.2.0 | 2024-07-27 | [42838](https://github.com/airbytehq/airbyte/pull/42838) | Migrate to LowCode | | 0.1.6 | 2024-06-17 | [39529](https://github.com/airbytehq/airbyte/pull/39529) | Pin CDK version to 0.38.0 | | 0.1.5 | 2024-05-21 | [38546](https://github.com/airbytehq/airbyte/pull/38546) | [autopull] base image + poetry + up_to_date | | 0.1.4 | 2023-05-22 | [26420](https://github.com/airbytehq/airbyte/pull/26420) | Migrate to advancedAuth | From 78135578fa9c09b09fda67f6bd4d0812d55ff3c6 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Fri, 24 Jan 2025 02:12:30 +0100 Subject: [PATCH 11/19] implement async retriever --- .../source-youtube-analytics/poetry.lock | 1775 +++++++++++------ .../source-youtube-analytics/pyproject.toml | 2 +- .../source_youtube_analytics/components.py | 34 +- .../source_youtube_analytics/manifest.yaml | 784 ++------ 4 files changed, 1351 insertions(+), 1244 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock b/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock index 8edff34acb8e8..ba9cff7ae90d0 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock +++ b/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock @@ -2,58 +2,65 @@ [[package]] name = "airbyte-cdk" -version = "4.3.2" +version = "6.6.1" description = "A framework for writing Airbyte Connectors." optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "airbyte_cdk-4.3.2-py3-none-any.whl", hash = "sha256:1dd92de77e2212b13ed6f1e9c4b2559baa905eff6db5bf14b0fbaf1149e60e4c"}, - {file = "airbyte_cdk-4.3.2.tar.gz", hash = "sha256:89db68167e214e5b55d5ef5f821f017ee64bf859f44c60bc0169071fa376e9af"}, + {file = "airbyte_cdk-6.6.1-py3-none-any.whl", hash = "sha256:b3f06f859fdf51bfcfe96cc91a7149e21cd172e55964be283052c655bd3d1eae"}, + {file = "airbyte_cdk-6.6.1.tar.gz", hash = "sha256:3c89222deb9ae3684bfcee1d015c6b248db07e0e4ab708e283ecc2be8e1d0792"}, ] [package.dependencies] -airbyte-protocol-models-pdv2 = ">=0.12.2,<0.13.0" +airbyte-protocol-models-dataclasses = ">=0.13,<0.14" backoff = "*" cachetools = "*" -cryptography = ">=42.0.5,<43.0.0" +cryptography = ">=42.0.5,<44.0.0" Deprecated = ">=1.2,<1.3" dpath = ">=2.1.6,<3.0.0" -genson = "1.2.2" +dunamai = ">=1.22.0,<2.0.0" +genson = "1.3.0" isodate = ">=0.6.1,<0.7.0" Jinja2 = ">=3.1.2,<3.2.0" jsonref = ">=0.2,<0.3" jsonschema = ">=3.2.0,<3.3.0" langchain_core = "0.1.42" +nltk = "3.8.1" +numpy = "<2" +orjson = ">=3.10.7,<4.0.0" +pandas = "2.2.2" pendulum = "<3.0.0" +psutil = "6.1.0" pydantic = ">=2.7,<3.0" pyjwt = ">=2.8.0,<3.0.0" pyrate-limiter = ">=3.1.0,<3.2.0" python-dateutil = "*" +python-ulid = ">=3.0.0,<4.0.0" pytz = "2024.1" PyYAML = ">=6.0.1,<7.0.0" requests = "*" requests_cache = "*" -wcmatch = "8.4" +serpyco-rs = ">=1.10.2,<2.0.0" +wcmatch = "10.0" +xmltodict = ">=0.13.0,<0.14.0" [package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] +file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.4.0)"] +sql = ["sqlalchemy (>=2.0,!=2.0.36,<3.0)"] +vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.8.0)"] [[package]] -name = "airbyte-protocol-models-pdv2" -version = "0.12.2" -description = "Declares the Airbyte Protocol." +name = "airbyte-protocol-models-dataclasses" +version = "0.13.1" +description = "Declares the Airbyte Protocol using Python Dataclasses. Dataclasses in Python have less performance overhead compared to Pydantic models, making them a more efficient choice for scenarios where speed and memory usage are critical" optional = false python-versions = ">=3.8" files = [ - {file = "airbyte_protocol_models_pdv2-0.12.2-py3-none-any.whl", hash = "sha256:8b3f9d0388928547cdf2e9134c0d589e4bcaa6f63bf71a21299f6824bfb7ad0e"}, - {file = "airbyte_protocol_models_pdv2-0.12.2.tar.gz", hash = "sha256:130c9ab289f3f53749ce63ff1abbfb67a44b7e5bd2794865315a2976138b672b"}, + {file = "airbyte_protocol_models_dataclasses-0.13.1-py3-none-any.whl", hash = "sha256:20a734b7b1c3479a643777830db6a2e0a34428f33d16abcfd320552576fabe5a"}, + {file = "airbyte_protocol_models_dataclasses-0.13.1.tar.gz", hash = "sha256:ec6a0fb6b16267bde910f52279445d06c8e1a3e4ed82ac2937b405ab280449d5"}, ] -[package.dependencies] -pydantic = ">=2.7.2,<3.0.0" - [[package]] name = "annotated-types" version = "0.7.0" @@ -65,21 +72,54 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[[package]] +name = "anyio" +version = "4.8.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +files = [ + {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, + {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "attributes-doc" +version = "0.4.0" +description = "PEP 224 implementation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "attributes-doc-0.4.0.tar.gz", hash = "sha256:b1576c94a714e9fc2c65c47cf10d0c8e1a5f7c4f5ae7f69006be108d95cbfbfb"}, + {file = "attributes_doc-0.4.0-py2.py3-none-any.whl", hash = "sha256:4c3007d9e58f3a6cb4b9c614c4d4ce2d92161581f28e594ddd8241cc3a113bdd"}, +] + [[package]] name = "attrs" -version = "24.2.0" +version = "24.3.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, + {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, + {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, ] [package.extras] benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] @@ -97,35 +137,35 @@ files = [ [[package]] name = "bracex" -version = "2.5" +version = "2.5.post1" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, - {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, + {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, + {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, ] [[package]] name = "cachetools" -version = "5.4.0" +version = "5.5.1" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.4.0-py3-none-any.whl", hash = "sha256:3ae3b49a3d5e28a77a0be2b37dbcb89005058959cb2323858c2657c4a8cab474"}, - {file = "cachetools-5.4.0.tar.gz", hash = "sha256:b8adc2e7c07f105ced7bc56dbb6dfbe7c4a00acce20e2227b3f355be89bc6827"}, + {file = "cachetools-5.5.1-py3-none-any.whl", hash = "sha256:b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb"}, + {file = "cachetools-5.5.1.tar.gz", hash = "sha256:70f238fbba50383ef62e55c6aff6d9673175fe59f7c6782c7a0b9e38f4a9df95"}, ] [[package]] name = "cattrs" -version = "23.2.3" +version = "24.1.2" description = "Composable complex class support for attrs and dataclasses." optional = false python-versions = ">=3.8" files = [ - {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, - {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, + {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, + {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, ] [package.dependencies] @@ -137,6 +177,7 @@ typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_ver bson = ["pymongo (>=4.4.0)"] cbor2 = ["cbor2 (>=5.4.6)"] msgpack = ["msgpack (>=1.0.5)"] +msgspec = ["msgspec (>=0.18.5)"] orjson = ["orjson (>=3.9.2)"] pyyaml = ["pyyaml (>=6.0)"] tomlkit = ["tomlkit (>=0.11.8)"] @@ -144,89 +185,89 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] name = "cffi" -version = "1.17.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, - {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, - {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, - {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, - {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, - {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, - {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, - {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, - {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, - {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, - {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, - {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, - {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, - {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, - {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, - {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -234,103 +275,119 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.1" 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"}, +python-versions = ">=3.7" +files = [ + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, ] +[[package]] +name = "click" +version = "8.1.8" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -344,43 +401,38 @@ files = [ [[package]] name = "cryptography" -version = "42.0.8" +version = "43.0.3" 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"}, + {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"}, + {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"}, + {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"}, + {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"}, + {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"}, + {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff"}, + {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"}, ] [package.dependencies] @@ -393,25 +445,25 @@ 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 = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] name = "deprecated" -version = "1.2.14" +version = "1.2.15" 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.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, + {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, + {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, ] [package.dependencies] wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "jinja2 (>=3.0.3,<3.1.0)", "setuptools", "sphinx (<2)", "tox"] [[package]] name = "dpath" @@ -424,6 +476,20 @@ files = [ {file = "dpath-2.2.0.tar.gz", hash = "sha256:34f7e630dc55ea3f219e555726f5da4b4b25f2200319c8e6902c394258dd6a3e"}, ] +[[package]] +name = "dunamai" +version = "1.23.0" +description = "Dynamic version generation" +optional = false +python-versions = ">=3.5" +files = [ + {file = "dunamai-1.23.0-py3-none-any.whl", hash = "sha256:a0906d876e92441793c6a423e16a4802752e723e9c9a5aabdc5535df02dbe041"}, + {file = "dunamai-1.23.0.tar.gz", hash = "sha256:a163746de7ea5acb6dacdab3a6ad621ebc612ed1e528aaa8beedb8887fccd2c4"}, +] + +[package.dependencies] +packaging = ">=20.9" + [[package]] name = "exceptiongroup" version = "1.2.2" @@ -440,25 +506,85 @@ test = ["pytest (>=6)"] [[package]] name = "genson" -version = "1.2.2" +version = "1.3.0" 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"}, + {file = "genson-1.3.0-py3-none-any.whl", hash = "sha256:468feccd00274cc7e4c09e84b08704270ba8d95232aa280f65b986139cec67f7"}, + {file = "genson-1.3.0.tar.gz", hash = "sha256:e02db9ac2e3fd29e65b5286f7135762e2cd8a986537c075b06fc5f1517308e37"}, ] +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.7" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, + {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "idna" -version = "3.7" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "iniconfig" version = "2.0.0" @@ -486,13 +612,13 @@ six = "*" [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.5" 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"}, + {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, + {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] [package.dependencies] @@ -501,6 +627,17 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "joblib" +version = "1.4.2" +description = "Lightweight pipelining with Python functions" +optional = false +python-versions = ">=3.8" +files = [ + {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, + {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, +] + [[package]] name = "jsonpatch" version = "1.33" @@ -582,156 +719,254 @@ extended-testing = ["jinja2 (>=3,<4)"] [[package]] name = "langsmith" -version = "0.1.98" +version = "0.1.147" 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.98-py3-none-any.whl", hash = "sha256:f79e8a128652bbcee4606d10acb6236973b5cd7dde76e3741186d3b97b5698e9"}, - {file = "langsmith-0.1.98.tar.gz", hash = "sha256:e07678219a0502e8f26d35294e72127a39d25e32fafd091af5a7bb661e9a6bd1"}, + {file = "langsmith-0.1.147-py3-none-any.whl", hash = "sha256:7166fc23b965ccf839d64945a78e9f1157757add228b086141eb03a60d699a15"}, + {file = "langsmith-0.1.147.tar.gz", hash = "sha256:2e933220318a4e73034657103b3b1a3a6109cc5db3566a7e8e03be8d6d7def7a"}, ] [package.dependencies] -orjson = ">=3.9.14,<4.0.0" +httpx = ">=0.23.0,<1" +orjson = {version = ">=3.9.14,<4.0.0", markers = "platform_python_implementation != \"PyPy\""} 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" +requests-toolbelt = ">=1.0.0,<2.0.0" + +[package.extras] +langsmith-pyo3 = ["langsmith-pyo3 (>=0.1.0rc2,<0.2.0)"] [[package]] name = "markupsafe" -version = "2.1.5" +version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false +python-versions = ">=3.9" +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, +] + +[[package]] +name = "nltk" +version = "3.8.1" +description = "Natural Language Toolkit" +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"}, + {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"}, + {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"}, +] + +[package.dependencies] +click = "*" +joblib = "*" +regex = ">=2021.8.3" +tqdm = "*" + +[package.extras] +all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] +corenlp = ["requests"] +machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] +plot = ["matplotlib"] +tgrep = ["pyparsing"] +twitter = ["twython"] + +[[package]] +name = "numpy" +version = "1.26.4" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] name = "orjson" -version = "3.10.7" +version = "3.10.15" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, + {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c2c79fa308e6edb0ffab0a31fd75a7841bf2a79a20ef08a3c6e3b26814c8ca8"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cb85490aa6bf98abd20607ab5c8324c0acb48d6da7863a51be48505646c814"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763dadac05e4e9d2bc14938a45a2d0560549561287d41c465d3c58aec818b164"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a330b9b4734f09a623f74a7490db713695e13b67c959713b78369f26b3dee6bf"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a61a4622b7ff861f019974f73d8165be1bd9a0855e1cad18ee167acacabeb061"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd271247691574416b3228db667b84775c497b245fa275c6ab90dc1ffbbd2b3"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4759b109c37f635aa5c5cc93a1b26927bfde24b254bcc0e1149a9fada253d2d"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e992fd5cfb8b9f00bfad2fd7a05a4299db2bbe92e6440d9dd2fab27655b3182"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f95fb363d79366af56c3f26b71df40b9a583b07bbaaf5b317407c4d58497852e"}, + {file = "orjson-3.10.15-cp310-cp310-win32.whl", hash = "sha256:f9875f5fea7492da8ec2444839dcc439b0ef298978f311103d0b7dfd775898ab"}, + {file = "orjson-3.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:17085a6aa91e1cd70ca8533989a18b5433e15d29c574582f76f821737c8d5806"}, + {file = "orjson-3.10.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c4cc83960ab79a4031f3119cc4b1a1c627a3dc09df125b27c4201dff2af7eaa6"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddbeef2481d895ab8be5185f2432c334d6dec1f5d1933a9c83014d188e102cef"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e590a0477b23ecd5b0ac865b1b907b01b3c5535f5e8a8f6ab0e503efb896334"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6be38bd103d2fd9bdfa31c2720b23b5d47c6796bcb1d1b598e3924441b4298d"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ff4f6edb1578960ed628a3b998fa54d78d9bb3e2eb2cfc5c2a09732431c678d0"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0482b21d0462eddd67e7fce10b89e0b6ac56570424662b685a0d6fccf581e13"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bb5cc3527036ae3d98b65e37b7986a918955f85332c1ee07f9d3f82f3a6899b5"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d569c1c462912acdd119ccbf719cf7102ea2c67dd03b99edcb1a3048651ac96b"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:1e6d33efab6b71d67f22bf2962895d3dc6f82a6273a965fab762e64fa90dc399"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c33be3795e299f565681d69852ac8c1bc5c84863c0b0030b2b3468843be90388"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eea80037b9fae5339b214f59308ef0589fc06dc870578b7cce6d71eb2096764c"}, + {file = "orjson-3.10.15-cp311-cp311-win32.whl", hash = "sha256:d5ac11b659fd798228a7adba3e37c010e0152b78b1982897020a8e019a94882e"}, + {file = "orjson-3.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:cf45e0214c593660339ef63e875f32ddd5aa3b4adc15e662cdb80dc49e194f8e"}, + {file = "orjson-3.10.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7723ad949a0ea502df656948ddd8b392780a5beaa4c3b5f97e525191b102fff0"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fd9bc64421e9fe9bd88039e7ce8e58d4fead67ca88e3a4014b143cec7684fd4"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dadba0e7b6594216c214ef7894c4bd5f08d7c0135f4dd0145600be4fbcc16767"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:035fb83585e0f15e076759b6fedaf0abb460d1765b6a36f48018a52858443514"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d13b7fe322d75bf84464b075eafd8e7dd9eae05649aa2a5354cfa32f43c59f17"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7066b74f9f259849629e0d04db6609db4cf5b973248f455ba5d3bd58a4daaa5b"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88dc3f65a026bd3175eb157fea994fca6ac7c4c8579fc5a86fc2114ad05705b7"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b342567e5465bd99faa559507fe45e33fc76b9fb868a63f1642c6bc0735ad02a"}, + {file = "orjson-3.10.15-cp312-cp312-win32.whl", hash = "sha256:0a4f27ea5617828e6b58922fdbec67b0aa4bb844e2d363b9244c47fa2180e665"}, + {file = "orjson-3.10.15-cp312-cp312-win_amd64.whl", hash = "sha256:ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa"}, + {file = "orjson-3.10.15-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bae0e6ec2b7ba6895198cd981b7cca95d1487d0147c8ed751e5632ad16f031a6"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f93ce145b2db1252dd86af37d4165b6faa83072b46e3995ecc95d4b2301b725a"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c203f6f969210128af3acae0ef9ea6aab9782939f45f6fe02d05958fe761ef9"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8918719572d662e18b8af66aef699d8c21072e54b6c82a3f8f6404c1f5ccd5e0"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f71eae9651465dff70aa80db92586ad5b92df46a9373ee55252109bb6b703307"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e117eb299a35f2634e25ed120c37c641398826c2f5a3d3cc39f5993b96171b9e"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13242f12d295e83c2955756a574ddd6741c81e5b99f2bef8ed8d53e47a01e4b7"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7946922ada8f3e0b7b958cc3eb22cfcf6c0df83d1fe5521b4a100103e3fa84c8"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b7155eb1623347f0f22c38c9abdd738b287e39b9982e1da227503387b81b34ca"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:208beedfa807c922da4e81061dafa9c8489c6328934ca2a562efa707e049e561"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eca81f83b1b8c07449e1d6ff7074e82e3fd6777e588f1a6632127f286a968825"}, + {file = "orjson-3.10.15-cp313-cp313-win32.whl", hash = "sha256:c03cd6eea1bd3b949d0d007c8d57049aa2b39bd49f58b4b2af571a5d3833d890"}, + {file = "orjson-3.10.15-cp313-cp313-win_amd64.whl", hash = "sha256:fd56a26a04f6ba5fb2045b0acc487a63162a958ed837648c5781e1fe3316cfbf"}, + {file = "orjson-3.10.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e8afd6200e12771467a1a44e5ad780614b86abb4b11862ec54861a82d677746"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9a18c500f19273e9e104cca8c1f0b40a6470bcccfc33afcc088045d0bf5ea6"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb00b7bfbdf5d34a13180e4805d76b4567025da19a197645ca746fc2fb536586"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33aedc3d903378e257047fee506f11e0833146ca3e57a1a1fb0ddb789876c1e1"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd0099ae6aed5eb1fc84c9eb72b95505a3df4267e6962eb93cdd5af03be71c98"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c864a80a2d467d7786274fce0e4f93ef2a7ca4ff31f7fc5634225aaa4e9e98c"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c25774c9e88a3e0013d7d1a6c8056926b607a61edd423b50eb5c88fd7f2823ae"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e78c211d0074e783d824ce7bb85bf459f93a233eb67a5b5003498232ddfb0e8a"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:43e17289ffdbbac8f39243916c893d2ae41a2ea1a9cbb060a56a4d75286351ae"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:781d54657063f361e89714293c095f506c533582ee40a426cb6489c48a637b81"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6875210307d36c94873f553786a808af2788e362bd0cf4c8e66d976791e7b528"}, + {file = "orjson-3.10.15-cp38-cp38-win32.whl", hash = "sha256:305b38b2b8f8083cc3d618927d7f424349afce5975b316d33075ef0f73576b60"}, + {file = "orjson-3.10.15-cp38-cp38-win_amd64.whl", hash = "sha256:5dd9ef1639878cc3efffed349543cbf9372bdbd79f478615a1c633fe4e4180d1"}, + {file = "orjson-3.10.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ffe19f3e8d68111e8644d4f4e267a069ca427926855582ff01fc012496d19969"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d433bf32a363823863a96561a555227c18a522a8217a6f9400f00ddc70139ae2"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:da03392674f59a95d03fa5fb9fe3a160b0511ad84b7a3914699ea5a1b3a38da2"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3a63bb41559b05360ded9132032239e47983a39b151af1201f07ec9370715c82"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3766ac4702f8f795ff3fa067968e806b4344af257011858cc3d6d8721588b53f"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a1c73dcc8fadbd7c55802d9aa093b36878d34a3b3222c41052ce6b0fc65f8e8"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b299383825eafe642cbab34be762ccff9fd3408d72726a6b2a4506d410a71ab3"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:abc7abecdbf67a173ef1316036ebbf54ce400ef2300b4e26a7b843bd446c2480"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:3614ea508d522a621384c1d6639016a5a2e4f027f3e4a1c93a51867615d28829"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:295c70f9dc154307777ba30fe29ff15c1bcc9dfc5c48632f37d20a607e9ba85a"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:63309e3ff924c62404923c80b9e2048c1f74ba4b615e7584584389ada50ed428"}, + {file = "orjson-3.10.15-cp39-cp39-win32.whl", hash = "sha256:a2f708c62d026fb5340788ba94a55c23df4e1869fec74be455e0b2f5363b8507"}, + {file = "orjson-3.10.15-cp39-cp39-win_amd64.whl", hash = "sha256:efcf6c735c3d22ef60c4aa27a5238f1a477df85e9b15f2142f9d669beb2d13fd"}, + {file = "orjson-3.10.15.tar.gz", hash = "sha256:05ca7fe452a2e9d8d9d706a2984c95b9c2ebc5db417ce0b7a49b91d50642a23e"}, ] [[package]] @@ -745,6 +980,79 @@ files = [ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] +[[package]] +name = "pandas" +version = "2.2.2" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, +] +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + [[package]] name = "pendulum" version = "2.1.2" @@ -781,19 +1089,19 @@ pytzdata = ">=2020.1" [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" @@ -810,6 +1118,36 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "psutil" +version = "6.1.0" +description = "Cross-platform lib for process and system monitoring in Python." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, + {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, + {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, + {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, + {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, + {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, + {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, + {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, + {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, + {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, + {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, + {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, + {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, + {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, + {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, +] + +[package.extras] +dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] +test = ["pytest", "pytest-xdist", "setuptools"] + [[package]] name = "pycparser" version = "2.22" @@ -823,122 +1161,131 @@ files = [ [[package]] name = "pydantic" -version = "2.8.2" +version = "2.10.5" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, - {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, + {file = "pydantic-2.10.5-py3-none-any.whl", hash = "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"}, + {file = "pydantic-2.10.5.tar.gz", hash = "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff"}, ] [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\""}, -] +annotated-types = ">=0.6.0" +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" [package.extras] email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.20.1" +version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, - {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, - {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, - {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, - {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, - {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, - {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, - {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, - {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, - {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, - {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, - {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, - {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, - {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, - {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, - {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, - {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, - {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, - {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, - {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, - {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, - {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, - {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, - {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, - {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, - {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, - {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, - {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, - {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, - {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, - {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, - {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, - {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, ] [package.dependencies] @@ -946,13 +1293,13 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pyjwt" -version = "2.9.0" +version = "2.10.1" description = "JSON Web Token implementation in Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, - {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, + {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, + {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, ] [package.extras] @@ -1019,13 +1366,13 @@ files = [ [[package]] name = "pytest" -version = "8.3.2" +version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, - {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, ] [package.dependencies] @@ -1070,6 +1417,20 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-ulid" +version = "3.0.0" +description = "Universally unique lexicographically sortable identifier" +optional = false +python-versions = ">=3.9" +files = [ + {file = "python_ulid-3.0.0-py3-none-any.whl", hash = "sha256:e4c4942ff50dbd79167ad01ac725ec58f924b4018025ce22c858bfcff99a5e31"}, + {file = "python_ulid-3.0.0.tar.gz", hash = "sha256:e50296a47dc8209d28629a22fc81ca26c00982c78934bd7766377ba37ea49a9f"}, +] + +[package.extras] +pydantic = ["pydantic (>=2.0)"] + [[package]] name = "pytz" version = "2024.1" @@ -1154,6 +1515,109 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +[[package]] +name = "regex" +version = "2024.11.6" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, +] + [[package]] name = "requests" version = "2.32.3" @@ -1222,31 +1686,114 @@ requests = ">=2.22,<3" [package.extras] fixture = ["fixtures"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "serpyco-rs" +version = "1.13.0" +description = "" +optional = false +python-versions = ">=3.9" +files = [ + {file = "serpyco_rs-1.13.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e722b3053e627d8a304e462bce20cae1670a2c4b0ef875b84d0de0081bec4029"}, + {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f10e89c752ff78d720a42e026b0a9ada70717ad6306a9356f794280167d62bf"}, + {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99db4ec6b36130d81f409e64759d9e26290138b1000b62f9f244117738aae652"}, + {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3265d4467a52540e7309d117c87a0fe97a9c942960159b37af55a164186e4885"}, + {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb10e547491d960064e5d935770f503c425b4ab7fc8c81e05b3c4b13bef195b3"}, + {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd38a763e9e23f69aad6ba78a8793b6eab9272b51ab01b36a9e3f6208f5c5525"}, + {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d49d6d81739aa0b264e303e90bede58a6487cbc6a78019df5ab6059ea988cc"}, + {file = "serpyco_rs-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:cad636c425d942a8de63b4f0e5a8ff91382f36956c129a629bcfd499d8450de2"}, + {file = "serpyco_rs-1.13.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2b7ff9a0afc417958203bbb8f4f21ecc47307f6691542af27f61c086870d1c90"}, + {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657a765f588d23b02ba45b7d3fbe9d828f52eab30836408088abf08ebcbc1969"}, + {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c6ab6dfbb477745067871d896675d8c8d8d027d4b4bd36df8e6797caaaa169b"}, + {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:bf3292411b63c89ca1273717cee374c03dd64da044f297166362b7e8d26bb440"}, + {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e568e4bb6ffe51e7f428fe3aa37baa4a0cb52d27a64d7e9a5adfec56d3e8b1f"}, + {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16e6b53056de511e3d211e04e0006924e45591c8f68f2aaae024accf28a6127d"}, + {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34ffe84bb8b5fb361499e1cd9b93b06081e5230b80713341be81793d1d590d9b"}, + {file = "serpyco_rs-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:5988d48f5df9558ea874e385b11b6cfc1dd434d5ed64eefb7762b203e74ce16c"}, + {file = "serpyco_rs-1.13.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e7a9d3eb0494984066b6b4d3b8eb25f69a599f401e8ede487efdb035547381b1"}, + {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47b519aaddc42b9d56a3a4760c74e4ef3a945e84eefbec96788f279efbd050d8"}, + {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e2b463c6b9e307a5fda3579aacb96468c37d14314e3a0070eda2f5789e4b4c6"}, + {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f659d8c058f223711d475dcae47adb033e3902591cbb1e5e1b17687ca15cd0bb"}, + {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9edc243fdb67a6bd51ec13c9a17cb0d608cfde9beb171ab5200e24045ab123f"}, + {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad0b85f02f52ea93f8bf068f0e00c8980702be00375b8888090723a21f35e2bc"}, + {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9e49a1a2d6eb9b855b34ce6f27dcbfb6e0dbfa675b3e3f760178c059c9c1100"}, + {file = "serpyco_rs-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:915eb70006944a2819077bb706a1e5deb671f9ac0c963bb3b46073604837f7ff"}, + {file = "serpyco_rs-1.13.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:69502ad3c56e6fdb700a27059590cf548a5e1aa03519eef607fdf8f8b320eeed"}, + {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:324c6e3eec175cd8aabef071bcef763836fee94012b0b0819952224f9c7b855c"}, + {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2097cda3ccf641a3c05ff2aa1a0122f4c47ef4de8807fec816afb93cc6570ee5"}, + {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:54fbcd983b50a5ee294ea6d5b1c99c3f8063206660baec96bb4ab5dc211abe3e"}, + {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea9608615a24aae8e95f3ccb58aeec7767ad54e6b69edffc7a231b4d6236b83c"}, + {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12e4c07e35064a6827473d318e3f60bdf49d8cc2726e5283a51de5ab41a9cc25"}, + {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fcbbe5c92d9517a2339a6c51f35c6eda8a0b5ed1a7e741feae960d07369459b"}, + {file = "serpyco_rs-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:11d430b894a2c003f103e1584b7ceb799235e4dcf109bc74e9937982ab8e48d6"}, + {file = "serpyco_rs-1.13.0-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:323c8f2615236d16dcd7995712fe63a77e6362c791890ced8af13b3b205bdbc8"}, + {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70527c919bb1560728340d62974beaa1ed050f9d33603270477e089fc90dcc53"}, + {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3944a6527ebfa736fc0f5d1841b01fdf9838260aa0f92d9a43ed33b455f911dd"}, + {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2ce9f0592490eb87de2b91700c06c5fd7ab5112ae471b88ded9252af06b28f2b"}, + {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23a4b801abeb3494a4832250f8a41648914d0fdc8817bc010a2bbb190aa55ca"}, + {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d57dd8dc10aa7a81d06c4eb2d523b5241047764a8fa65b94e716975b888d1d54"}, + {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd96fc057c6cdc1336ab4e5072eb1710661464ae9b171950347c66c68e687d50"}, + {file = "serpyco_rs-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:94314ed652545eebdc90e83b671cf961ade881fdd0e1aa5579182d13050f8405"}, + {file = "serpyco_rs-1.13.0.tar.gz", hash = "sha256:981232323d2f195a0281b9beb735d5facfc919de6c65abd764cf908c7ad887fe"}, +] + +[package.dependencies] +attributes-doc = "*" +typing-extensions = "*" + [[package]] name = "setuptools" -version = "72.1.0" +version = "75.8.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "setuptools-72.1.0-py3-none-any.whl", hash = "sha256:5a03e1860cf56bb6ef48ce186b0e557fdba433237481a9a625176c2831be15d1"}, - {file = "setuptools-72.1.0.tar.gz", hash = "sha256:8d243eff56d095e5817f796ede6ae32941278f542e0f941867cc05ae52b162ec"}, + {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, + {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, ] [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"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"] +core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] @@ -1266,15 +1813,66 @@ test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "tomli" -version = "2.0.1" +version = "2.2.1" description = "A lil' TOML parser" optional = false +python-versions = ">=3.8" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +description = "Fast, Extensible Progress Meter" +optional = false python-versions = ">=3.7" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, ] +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] +discord = ["requests"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + [[package]] name = "typing-extensions" version = "4.12.2" @@ -1286,6 +1884,17 @@ files = [ {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "tzdata" +version = "2025.1" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"}, + {file = "tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694"}, +] + [[package]] name = "url-normalize" version = "1.4.3" @@ -1302,13 +1911,13 @@ six = "*" [[package]] name = "urllib3" -version = "2.2.2" +version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] @@ -1319,13 +1928,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wcmatch" -version = "8.4" +version = "10.0" description = "Wildcard/glob file name matcher." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "wcmatch-8.4-py3-none-any.whl", hash = "sha256:dc7351e5a7f8bbf4c6828d51ad20c1770113f5f3fd3dfe2a03cfde2a63f03f98"}, - {file = "wcmatch-8.4.tar.gz", hash = "sha256:ba4fc5558f8946bf1ffc7034b05b814d825d694112499c86035e0e4d398b6a67"}, + {file = "wcmatch-10.0-py3-none-any.whl", hash = "sha256:0dd927072d03c0a6527a20d2e6ad5ba8d0380e60870c383bc533b71744df7b7a"}, + {file = "wcmatch-10.0.tar.gz", hash = "sha256:e72f0de09bba6a04e0de70937b0cf06e55f36f37b3deb422dfaf854b867b840a"}, ] [package.dependencies] @@ -1333,84 +1942,104 @@ bracex = ">=2.1.1" [[package]] name = "wrapt" -version = "1.16.0" +version = "1.17.2" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62"}, + {file = "wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563"}, + {file = "wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72"}, + {file = "wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317"}, + {file = "wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9"}, + {file = "wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9"}, + {file = "wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504"}, + {file = "wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a"}, + {file = "wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f"}, + {file = "wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555"}, + {file = "wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f"}, + {file = "wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7"}, + {file = "wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9"}, + {file = "wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb"}, + {file = "wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb"}, + {file = "wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8"}, + {file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"}, +] + +[[package]] +name = "xmltodict" +version = "0.13.0" +description = "Makes working with XML feel like you are working with JSON" +optional = false +python-versions = ">=3.4" files = [ - {file = "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"}, + {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, + {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, ] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "9fbeccc7e377f402cdcbcf4923c33f994280ed6b5fcd8cdc1804bb22fb05286c" +content-hash = "75386c20f11ce58b7f4e7cc39d25dd4956c88b8761682b3efa3224feff96003a" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml index 52a1fa4f9c63f..7d1c086381f9a 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml +++ b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml @@ -17,7 +17,7 @@ include = "source_youtube_analytics" [tool.poetry.dependencies] python = "^3.10" -airbyte-cdk = "^4.0.1" +airbyte-cdk = "^6" [tool.poetry.scripts] source-youtube-analytics = "source_youtube_analytics.run:run" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py index d878d303d2ca9..4c79d6000f133 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py @@ -8,13 +8,33 @@ from typing import List import requests -from airbyte_cdk.sources.declarative.extractors.record_extractor import RecordExtractor +from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester from airbyte_cdk.sources.declarative.types import Record -class ReportsExtractor(RecordExtractor): - def extract_records(self, response: requests.Response) -> List[Record]: # type: ignore - fp = io.StringIO(response.text) - reader = csv.DictReader(fp) - for record in reader: - yield record +class PollingRequester(HttpRequester): + + def send_request(self, stream_state = None, stream_slice = None, next_page_token = None, path = None, request_headers = None, request_params = None, request_body_data = None, request_body_json = None, log_formatter = None): + response = { + "status": "pending" + } + jobs_response = super().send_request(stream_state, stream_slice, next_page_token, path, request_headers, request_params, request_body_data, request_body_json, log_formatter) + jobs_list = jobs_response.get("jobs", []) + job_resource = [job for job in jobs_list if job["reportTypeId"] == self.name][0] + job_id = job_resource["id"] + + try: + request, reports_response = self._http_client.send_request( + http_method=self.get_method().value, + url=self._join_url(self.get_url_base(), f"jobs/{job_id}/reports"), + request_kwargs={"stream": self.stream_response}, + params={"startTimeAtOrAfter": self.start_time} if self.start_time else {}, + ) + + urls = [report["downloadUrl"] for report in reports_response["reports"]] + response["urls"] = urls + response["status"] = "ready" + except: + pass + + return response diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml index 30bc04bf03cda..58aa3d54e3d5d 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml @@ -6,539 +6,52 @@ check: type: CheckStream stream_names: - channel_annotations_a1 - # - create_jobs definitions: - base_job: + base_stream: type: DeclarativeStream retriever: - type: SimpleRetriever - requester: + type: AsyncRetriever + creation_requester: $ref: "#/definitions/base_requester" path: jobs - http_method: GET - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - type: HttpResponseFilter - action: IGNORE - http_codes: - - 401 - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: - - jobs - - base_reports: - type: DeclarativeStream - primary_key: - - id - retriever: - type: SimpleRetriever - requester: + http_method: POST + polling_requester: + type: CustomRequester + class_name: source_youtube_analytics.components.PollingRequester $ref: "#/definitions/base_requester" - path: jobs/{{ stream_partition['job_id'] }}/reports + path: jobs http_method: GET - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: - - reports - - base_stream: - type: DeclarativeStream - retriever: - type: SimpleRetriever - requester: + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - urls + download_requester: $ref: "#/definitions/base_requester" - path: "{{ stream_partition['url'] }}" + path: "{{stream_slice.extra_fields['url']}}" http_method: GET + decoder: + type: GzipJsonDecoder record_selector: - type: RecordSelector - extractor: - type: CustomRecordExtractor - class_name: source_youtube_analytics.components.ReportsExtractor - - streams: - create_jobs: - type: DeclarativeStream - name: create_jobs - retriever: - type: SimpleRetriever - requester: - $ref: "#/definitions/base_requester" - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - error_handler: - type: CompositeErrorHandler - error_handlers: - - type: DefaultErrorHandler - response_filters: - - type: HttpResponseFilter - action: SUCCESS - http_codes: - - 409 - - type: DefaultErrorHandler - response_filters: - - type: HttpResponseFilter - action: IGNORE - http_codes: - - 401 - record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: [] - partition_router: - type: ListPartitionRouter - values: - - channel_annotations_a1 - - channel_basic_a2 - - channel_cards_a1 - - channel_combined_a2 - - channel_demographics_a1 - - channel_device_os_a2 - - channel_end_screens_a1 - - channel_playback_location_a2 - - channel_province_a2 - - channel_sharing_service_a1 - - channel_subtitles_a2 - - channel_traffic_source_a2 - - playlist_basic_a1 - - playlist_combined_a1 - - playlist_device_os_a1 - - playlist_playback_location_a1 - - playlist_province_a1 - - playlist_traffic_source_a1 - cursor_field: name - request_option: - type: RequestOption - inject_into: body_json - field_name: reportTypeId - - channel_annotations_a1_job: - $ref: "#/definitions/base_job" - name: channel_annotations_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_annotations_a1' }}" - channel_basic_a2_job: - $ref: "#/definitions/base_job" - name: channel_basic_a2_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_basic_a2' }}" - channel_cards_a1_job: - $ref: "#/definitions/base_job" - name: channel_cards_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_cards_a1' }}" - channel_combined_a2_job: - $ref: "#/definitions/base_job" - name: channel_combined_a2_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_combined_a2' }}" - channel_demographics_a1_job: - $ref: "#/definitions/base_job" - name: channel_demographics_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_demographics_a1' }}" - channel_device_os_a2_job: - $ref: "#/definitions/base_job" - name: channel_device_os_a2_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_device_os_a2' }}" - channel_end_screens_a1_job: - $ref: "#/definitions/base_job" - name: channel_end_screens_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_end_screens_a1' }}" - channel_playback_location_a2_job: - $ref: "#/definitions/base_job" - name: channel_playback_location_a2_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_playback_location_a2' }}" - channel_province_a2_job: - $ref: "#/definitions/base_job" - name: channel_province_a2_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_province_a2' }}" - channel_sharing_service_a1_job: - $ref: "#/definitions/base_job" - name: channel_sharing_service_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_sharing_service_a1' }}" - channel_subtitles_a2_job: - $ref: "#/definitions/base_job" - name: channel_subtitles_a2_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_subtitles_a2' }}" - channel_traffic_source_a2_job: - $ref: "#/definitions/base_job" - name: channel_traffic_source_a2_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'channel_traffic_source_a2' }}" - playlist_basic_a1_job: - $ref: "#/definitions/base_job" - name: playlist_basic_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'playlist_basic_a1' }}" - playlist_combined_a1_job: - $ref: "#/definitions/base_job" - name: playlist_combined_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'playlist_combined_a1' }}" - playlist_device_os_a1_job: - $ref: "#/definitions/base_job" - name: playlist_device_os_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'playlist_device_os_a1' }}" - playlist_playback_location_a1_job: - $ref: "#/definitions/base_job" - name: playlist_playback_location_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'playlist_playback_location_a1' }}" - playlist_province_a1_job: - $ref: "#/definitions/base_job" - name: playlist_province_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'playlist_province_a1' }}" - playlist_traffic_source_a1_job: - $ref: "#/definitions/base_job" - name: playlist_traffic_source_a1_job - retriever: - $ref: "#/definitions/base_job/retriever" - record_selector: - $ref: "#/definitions/base_job/retriever/record_selector" - record_filter: - type: RecordFilter - condition: "{{ record.reportTypeId == 'playlist_traffic_source_a1' }}" - - channel_annotations_a1_reports: - $ref: "#/definitions/base_reports" - name: channel_annotations_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_annotations_a1_job" - channel_basic_a2_reports: - $ref: "#/definitions/base_reports" - name: channel_basic_a2_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_basic_a2_job" - channel_cards_a1_reports: - $ref: "#/definitions/base_reports" - name: channel_cards_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_cards_a1_job" - channel_combined_a2_reports: - $ref: "#/definitions/base_reports" - name: channel_combined_a2_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_combined_a2_job" - channel_demographics_a1_reports: - $ref: "#/definitions/base_reports" - name: channel_demographics_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_demographics_a1_job" - channel_device_os_a2_reports: - $ref: "#/definitions/base_reports" - name: channel_device_os_a2_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_device_os_a2_job" - channel_end_screens_a1_reports: - $ref: "#/definitions/base_reports" - name: channel_end_screens_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_end_screens_a1_job" - channel_playback_location_a2_reports: - $ref: "#/definitions/base_reports" - name: channel_playback_location_a2_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_playback_location_a2_job" - channel_province_a2_reports: - $ref: "#/definitions/base_reports" - name: channel_province_a2_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_province_a2_job" - channel_sharing_service_a1_reports: - $ref: "#/definitions/base_reports" - name: channel_sharing_service_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_sharing_service_a1_job" - channel_subtitles_a2_reports: - $ref: "#/definitions/base_reports" - name: channel_subtitles_a2_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_subtitles_a2_job" - channel_traffic_source_a2_reports: - $ref: "#/definitions/base_reports" - name: channel_traffic_source_a2_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/channel_traffic_source_a2_job" - playlist_basic_a1_reports: - $ref: "#/definitions/base_reports" - name: playlist_basic_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/playlist_basic_a1_job" - playlist_combined_a1_reports: - $ref: "#/definitions/base_reports" - name: playlist_combined_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/playlist_combined_a1_job" - playlist_device_os_a1_reports: - $ref: "#/definitions/base_reports" - name: playlist_device_os_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/playlist_device_os_a1_job" - playlist_playback_location_a1_reports: - $ref: "#/definitions/base_reports" - name: playlist_playback_location_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/playlist_playback_location_a1_job" - playlist_province_a1_reports: - $ref: "#/definitions/base_reports" - name: playlist_province_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/playlist_province_a1_job" - playlist_traffic_source_a1_reports: - $ref: "#/definitions/base_reports" - name: playlist_traffic_source_a1_reports - retriever: - $ref: "#/definitions/base_reports/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: id - partition_field: job_id - stream: - $ref: "#/definitions/streams/playlist_traffic_source_a1_job" + streams: channel_annotations_a1: $ref: "#/definitions/base_stream" name: channel_annotations_a1 @@ -553,14 +66,11 @@ definitions: - annotation_id retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_annotations_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_annotations_a1 schema_loader: type: InlineSchemaLoader schema: @@ -577,14 +87,11 @@ definitions: - country_code retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_basic_a2_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_basic_a2 schema_loader: type: InlineSchemaLoader schema: @@ -603,14 +110,11 @@ definitions: - card_id retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_cards_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_cards_a1 schema_loader: type: InlineSchemaLoader schema: @@ -631,14 +135,11 @@ definitions: - operating_system retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_combined_a2_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_combined_a2 schema_loader: type: InlineSchemaLoader schema: @@ -657,14 +158,11 @@ definitions: - gender retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_demographics_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_demographics_a1 schema_loader: type: InlineSchemaLoader schema: @@ -683,14 +181,11 @@ definitions: - operating_system retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_device_os_a2_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_device_os_a2 schema_loader: type: InlineSchemaLoader schema: @@ -709,14 +204,11 @@ definitions: - end_screen_element_id retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_end_screens_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_end_screens_a1 schema_loader: type: InlineSchemaLoader schema: @@ -735,14 +227,11 @@ definitions: - playback_location_detail retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_playback_location_a2_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_playback_location_a2 schema_loader: type: InlineSchemaLoader schema: @@ -760,14 +249,11 @@ definitions: - province_code retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_province_a2_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_province_a2 schema_loader: type: InlineSchemaLoader schema: @@ -785,14 +271,11 @@ definitions: - sharing_service retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_sharing_service_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_sharing_service_a1 schema_loader: type: InlineSchemaLoader schema: @@ -810,14 +293,11 @@ definitions: - subtitle_language retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_subtitles_a2_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_subtitles_a2 schema_loader: type: InlineSchemaLoader schema: @@ -836,14 +316,11 @@ definitions: - traffic_source_detail retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/channel_traffic_source_a2_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_traffic_source_a2 schema_loader: type: InlineSchemaLoader schema: @@ -861,14 +338,11 @@ definitions: - country_code retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/playlist_basic_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_basic_a1 schema_loader: type: InlineSchemaLoader schema: @@ -890,14 +364,11 @@ definitions: - operating_system retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/playlist_combined_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_combined_a1 schema_loader: type: InlineSchemaLoader schema: @@ -917,14 +388,11 @@ definitions: - operating_system retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/playlist_device_os_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_device_os_a1 schema_loader: type: InlineSchemaLoader schema: @@ -944,14 +412,11 @@ definitions: - playback_location_detail retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/playlist_playback_location_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_playback_location_a1 schema_loader: type: InlineSchemaLoader schema: @@ -970,14 +435,11 @@ definitions: - province_code retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/playlist_province_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_province_a1 schema_loader: type: InlineSchemaLoader schema: @@ -997,19 +459,16 @@ definitions: - traffic_source_detail retriever: $ref: "#/definitions/base_stream/retriever" - partition_router: - type: SubstreamPartitionRouter - parent_stream_configs: - - type: ParentStreamConfig - parent_key: downloadUrl - partition_field: url - stream: - $ref: "#/definitions/streams/playlist_traffic_source_a1_reports" + creation_requester: + $ref: "#/definitions/base_stream/retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_traffic_source_a1 schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/playlist_traffic_source_a1" - + base_requester: type: HttpRequester url_base: https://youtubereporting.googleapis.com/v1/ @@ -1023,7 +482,6 @@ definitions: token_refresh_endpoint: https://oauth2.googleapis.com/token streams: - # - $ref: "#/definitions/streams/create_jobs" - $ref: "#/definitions/streams/channel_annotations_a1" - $ref: "#/definitions/streams/channel_basic_a2" - $ref: "#/definitions/streams/channel_cards_a1" From 31e535ab70b81b06fdf70a7be55af7e2ce227ba9 Mon Sep 17 00:00:00 2001 From: Octavia Squidington III Date: Fri, 24 Jan 2025 01:15:38 +0000 Subject: [PATCH 12/19] chore: auto-fix lint and format issues --- .../source_youtube_analytics/components.py | 31 +++++++++++++++---- .../source_youtube_analytics/manifest.yaml | 12 +++---- .../source_youtube_analytics/run.py | 3 +- .../source_youtube_analytics/source.py | 1 + 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py index 4c79d6000f133..b8194680d9ac0 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py @@ -8,17 +8,36 @@ from typing import List import requests + from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester from airbyte_cdk.sources.declarative.types import Record class PollingRequester(HttpRequester): - - def send_request(self, stream_state = None, stream_slice = None, next_page_token = None, path = None, request_headers = None, request_params = None, request_body_data = None, request_body_json = None, log_formatter = None): - response = { - "status": "pending" - } - jobs_response = super().send_request(stream_state, stream_slice, next_page_token, path, request_headers, request_params, request_body_data, request_body_json, log_formatter) + def send_request( + self, + stream_state=None, + stream_slice=None, + next_page_token=None, + path=None, + request_headers=None, + request_params=None, + request_body_data=None, + request_body_json=None, + log_formatter=None, + ): + response = {"status": "pending"} + jobs_response = super().send_request( + stream_state, + stream_slice, + next_page_token, + path, + request_headers, + request_params, + request_body_data, + request_body_json, + log_formatter, + ) jobs_list = jobs_response.get("jobs", []) job_resource = [job for job in jobs_list if job["reportTypeId"] == self.name][0] job_id = job_resource["id"] diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml index 58aa3d54e3d5d..f61aea383efcb 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml @@ -44,12 +44,12 @@ definitions: path: "{{stream_slice.extra_fields['url']}}" http_method: GET decoder: - type: GzipJsonDecoder + type: GzipJsonDecoder record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] streams: channel_annotations_a1: @@ -468,7 +468,7 @@ definitions: type: InlineSchemaLoader schema: $ref: "#/schemas/playlist_traffic_source_a1" - + base_requester: type: HttpRequester url_base: https://youtubereporting.googleapis.com/v1/ diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py index 27f8967eff437..8139e0561dd68 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py @@ -5,9 +5,10 @@ import sys -from airbyte_cdk.entrypoint import launch from source_youtube_analytics import SourceYoutubeAnalytics +from airbyte_cdk.entrypoint import launch + def run(): source = SourceYoutubeAnalytics() diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py index 2772aef56f176..7cc7717914fc4 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py @@ -4,6 +4,7 @@ from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource + """ This file provides the necessary constructs to interpret a provided declarative YAML configuration file into source connector. From 5a76ca9091c2002dcb240198af6bd333a7060eaa Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Fri, 24 Jan 2025 18:19:29 +0100 Subject: [PATCH 13/19] fix creation requester --- .../source_youtube_analytics/components.py | 42 +++++++++++++---- .../source_youtube_analytics/manifest.yaml | 45 ++++++++++++------- 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py index 4c79d6000f133..1e1bb0b4651d0 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py @@ -2,15 +2,41 @@ # Copyright (c) 2023 Airbyte, Inc., all rights reserved. # +from dataclasses import dataclass +from typing import Any, Mapping, Optional -import csv -import io -from typing import List - -import requests from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester -from airbyte_cdk.sources.declarative.types import Record +from airbyte_cdk.sources.declarative.requesters.request_options.interpolated_request_options_provider import ( + InterpolatedRequestOptionsProvider, + RequestInput, +) +from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester + +@dataclass +class CreationRequester(HttpRequester): + + request_body_json: Optional[RequestInput] = None + def __post_init__(self, parameters: Mapping[str, Any]) -> None: + self.request_options_provider = InterpolatedRequestOptionsProvider( + request_body_json=self.request_body_json, + config=self.config, + parameters=parameters or {}, + ) + super().__post_init__(parameters) + + def send_request(self, **kwargs): + request, jobs_response = self._http_client.send_request( + http_method="GET", + url=self._join_url(self.get_url_base(), "jobs"), + request_kwargs={"stream": self.stream_response}, + ) + jobs_list = jobs_response.json().get("jobs", []) + stream_name = self.name.split(" - ")[-1] + if stream_name in [job["reportTypeId"] for job in jobs_list]: + return jobs_response + else: + return super().send_request(**kwargs) class PollingRequester(HttpRequester): @@ -19,7 +45,7 @@ def send_request(self, stream_state = None, stream_slice = None, next_page_token "status": "pending" } jobs_response = super().send_request(stream_state, stream_slice, next_page_token, path, request_headers, request_params, request_body_data, request_body_json, log_formatter) - jobs_list = jobs_response.get("jobs", []) + jobs_list = jobs_response.json().get("jobs", []) job_resource = [job for job in jobs_list if job["reportTypeId"] == self.name][0] job_id = job_resource["id"] @@ -31,7 +57,7 @@ def send_request(self, stream_state = None, stream_slice = None, next_page_token params={"startTimeAtOrAfter": self.start_time} if self.start_time else {}, ) - urls = [report["downloadUrl"] for report in reports_response["reports"]] + urls = [report["downloadUrl"] for report in reports_response.json()["reports"]] response["urls"] = urls response["status"] = "ready" except: diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml index 58aa3d54e3d5d..0dc0a3bce48f5 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml @@ -13,9 +13,20 @@ definitions: retriever: type: AsyncRetriever creation_requester: + type: CustomRequester + class_name: source_youtube_analytics.components.CreationRequester $ref: "#/definitions/base_requester" path: jobs http_method: POST + # error_handler: + # type: CompositeErrorHandler + # error_handlers: + # - type: DefaultErrorHandler + # response_filters: + # - type: HttpResponseFilter + # action: SUCCESS + # http_codes: + # - 409 polling_requester: type: CustomRequester class_name: source_youtube_analytics.components.PollingRequester @@ -483,23 +494,23 @@ definitions: streams: - $ref: "#/definitions/streams/channel_annotations_a1" - - $ref: "#/definitions/streams/channel_basic_a2" - - $ref: "#/definitions/streams/channel_cards_a1" - - $ref: "#/definitions/streams/channel_combined_a2" - - $ref: "#/definitions/streams/channel_demographics_a1" - - $ref: "#/definitions/streams/channel_device_os_a2" - - $ref: "#/definitions/streams/channel_end_screens_a1" - - $ref: "#/definitions/streams/channel_playback_location_a2" - - $ref: "#/definitions/streams/channel_province_a2" - - $ref: "#/definitions/streams/channel_sharing_service_a1" - - $ref: "#/definitions/streams/channel_subtitles_a2" - - $ref: "#/definitions/streams/channel_traffic_source_a2" - - $ref: "#/definitions/streams/playlist_basic_a1" - - $ref: "#/definitions/streams/playlist_combined_a1" - - $ref: "#/definitions/streams/playlist_device_os_a1" - - $ref: "#/definitions/streams/playlist_playback_location_a1" - - $ref: "#/definitions/streams/playlist_province_a1" - - $ref: "#/definitions/streams/playlist_traffic_source_a1" + # - $ref: "#/definitions/streams/channel_basic_a2" + # - $ref: "#/definitions/streams/channel_cards_a1" + # - $ref: "#/definitions/streams/channel_combined_a2" + # - $ref: "#/definitions/streams/channel_demographics_a1" + # - $ref: "#/definitions/streams/channel_device_os_a2" + # - $ref: "#/definitions/streams/channel_end_screens_a1" + # - $ref: "#/definitions/streams/channel_playback_location_a2" + # - $ref: "#/definitions/streams/channel_province_a2" + # - $ref: "#/definitions/streams/channel_sharing_service_a1" + # - $ref: "#/definitions/streams/channel_subtitles_a2" + # - $ref: "#/definitions/streams/channel_traffic_source_a2" + # - $ref: "#/definitions/streams/playlist_basic_a1" + # - $ref: "#/definitions/streams/playlist_combined_a1" + # - $ref: "#/definitions/streams/playlist_device_os_a1" + # - $ref: "#/definitions/streams/playlist_playback_location_a1" + # - $ref: "#/definitions/streams/playlist_province_a1" + # - $ref: "#/definitions/streams/playlist_traffic_source_a1" spec: type: Spec From 8e6397a80b0fe378ed43499733bc183f25037fb0 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Fri, 24 Jan 2025 20:01:14 +0100 Subject: [PATCH 14/19] implement error handler --- .../source_youtube_analytics/components.py | 120 +++++++++++++++--- .../source_youtube_analytics/manifest.yaml | 50 ++++---- 2 files changed, 123 insertions(+), 47 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py index 1e1bb0b4651d0..526d7deb93976 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py @@ -2,8 +2,9 @@ # Copyright (c) 2023 Airbyte, Inc., all rights reserved. # +import requests from dataclasses import dataclass -from typing import Any, Mapping, Optional +from typing import Any, Mapping, Optional, Union from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester from airbyte_cdk.sources.declarative.requesters.request_options.interpolated_request_options_provider import ( @@ -11,6 +12,8 @@ RequestInput, ) from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester +from airbyte_cdk.sources.declarative.requesters.error_handlers import DefaultErrorHandler +from airbyte_cdk.sources.streams.http.error_handlers import ErrorResolution, ResponseAction @dataclass class CreationRequester(HttpRequester): @@ -38,29 +41,108 @@ def send_request(self, **kwargs): else: return super().send_request(**kwargs) +@dataclass class PollingRequester(HttpRequester): - def send_request(self, stream_state = None, stream_slice = None, next_page_token = None, path = None, request_headers = None, request_params = None, request_body_data = None, request_body_json = None, log_formatter = None): - response = { - "status": "pending" - } - jobs_response = super().send_request(stream_state, stream_slice, next_page_token, path, request_headers, request_params, request_body_data, request_body_json, log_formatter) + def send_request(self, **kwargs): + jobs_response = super().send_request(**kwargs) jobs_list = jobs_response.json().get("jobs", []) job_resource = [job for job in jobs_list if job["reportTypeId"] == self.name][0] job_id = job_resource["id"] - try: - request, reports_response = self._http_client.send_request( - http_method=self.get_method().value, - url=self._join_url(self.get_url_base(), f"jobs/{job_id}/reports"), - request_kwargs={"stream": self.stream_response}, - params={"startTimeAtOrAfter": self.start_time} if self.start_time else {}, - ) + request, reports_response = self._http_client.send_request( + http_method=self.get_method().value, + url=self._join_url(self.get_url_base(), f"jobs/{job_id}/reports"), + request_kwargs={"stream": self.stream_response}, + params={"startTimeAtOrAfter": self.start_time} if self.start_time else {}, + ) + return reports_response + +@dataclass +class YoutubeAnalyticsErrorHandler(DefaultErrorHandler): + + def daily_quota_exceeded(self, response: requests.Response): + """Response example: + { + "error": { + "code": 429, + "message": "Quota exceeded for quota metric 'Free requests' and limit 'Free requests per minute' of service 'youtubereporting.googleapis.com' for consumer 'project_number:863188056127'.", + "status": "RESOURCE_EXHAUSTED", + "details": [ + { + "reason": "RATE_LIMIT_EXCEEDED", + "metadata": { + "consumer": "projects/863188056127", + "quota_limit": "FreeQuotaRequestsPerMinutePerProject", + "quota_limit_value": "60", + "quota_metric": "youtubereporting.googleapis.com/free_quota_requests", + "service": "youtubereporting.googleapis.com", + } + }, + ] + } + } - urls = [report["downloadUrl"] for report in reports_response.json()["reports"]] - response["urls"] = urls - response["status"] = "ready" - except: - pass + :param response: + :return: + """ + details = response.json().get("error", {}).get("details", []) + for detail in details: + if detail.get("reason") == "RATE_LIMIT_EXCEEDED": + if detail.get("metadata", {}).get("quota_limit") == "FreeQuotaRequestsPerDayPerProject": + return True, f"Exceeded daily quota: {detail.get('metadata', {}).get('quota_limit_value')} reqs/day" + break + return False, "" + + def should_retry(self, response: requests.Response): + """ + Override to set different conditions for backoff based on the response from the server. - return response + By default, back off on the following HTTP response statuses: + - 500s to handle transient server errors + - 429 (Too Many Requests) indicating rate limiting: + Different behavior in case of 'RATE_LIMIT_EXCEEDED': + + Requests Per Minute: + "message": "Quota exceeded for quota metric 'Free requests' and limit 'Free requests per minute' of service 'youtubereporting.googleapis.com' for consumer 'project_number:863188056127'." + "quota_limit": "FreeQuotaRequestsPerMinutePerProject", + "quota_limit_value": "60", + + --> use increased retry_factor (30 seconds) + + Requests Per Day: + "message": "Quota exceeded for quota metric 'Free requests' and limit 'Free requests per day' of service 'youtubereporting.googleapis.com' for consumer 'project_number:863188056127" + "quota_limit": "FreeQuotaRequestsPerDayPerProject + "quota_limit_value": "20000", + + --> just throw an error, next scan is reasonable to start only in 1 day. + """ + if 500 <= response.status_code < 600: + return True, "" + + if response.status_code == 429 and not self.daily_quota_exceeded(response): + return True, "" + + return False, "" + + def interpret_response(self, response_or_exception: Optional[Union[requests.Response, Exception]]) -> ErrorResolution: + """ + Interprets responses and exceptions, providing custom error resolutions for specific exceptions. + """ + if_retry, error_message = self.should_retry(response_or_exception) + if if_retry: + return ErrorResolution( + response_action=ResponseAction.RETRY, + error_message=error_message, + ) + return super().interpret_response(response_or_exception) + + def backoff_time( + self, + response_or_exception: Optional[Union[requests.Response, requests.RequestException]], + attempt_count: int = 0, + ) -> Optional[float]: + """ + Default FreeQuotaRequestsPerMinutePerProject is 60 reqs/min, so reasonable delay is 30 seconds + """ + return 30 diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml index 0dc0a3bce48f5..fef551f712801 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml @@ -18,15 +18,6 @@ definitions: $ref: "#/definitions/base_requester" path: jobs http_method: POST - # error_handler: - # type: CompositeErrorHandler - # error_handlers: - # - type: DefaultErrorHandler - # response_filters: - # - type: HttpResponseFilter - # action: SUCCESS - # http_codes: - # - 409 polling_requester: type: CustomRequester class_name: source_youtube_analytics.components.PollingRequester @@ -49,10 +40,10 @@ definitions: urls_extractor: type: DpathExtractor field_path: - - urls + - downloadUrl download_requester: $ref: "#/definitions/base_requester" - path: "{{stream_slice.extra_fields['url']}}" + path: "{{stream_slice.extra_fields['downloadUrl']}}" http_method: GET decoder: type: GzipJsonDecoder @@ -491,26 +482,29 @@ definitions: refresh_token: '{{ config[''credentials'']["refresh_token"] }}' refresh_request_body: {} token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" streams: - $ref: "#/definitions/streams/channel_annotations_a1" - # - $ref: "#/definitions/streams/channel_basic_a2" - # - $ref: "#/definitions/streams/channel_cards_a1" - # - $ref: "#/definitions/streams/channel_combined_a2" - # - $ref: "#/definitions/streams/channel_demographics_a1" - # - $ref: "#/definitions/streams/channel_device_os_a2" - # - $ref: "#/definitions/streams/channel_end_screens_a1" - # - $ref: "#/definitions/streams/channel_playback_location_a2" - # - $ref: "#/definitions/streams/channel_province_a2" - # - $ref: "#/definitions/streams/channel_sharing_service_a1" - # - $ref: "#/definitions/streams/channel_subtitles_a2" - # - $ref: "#/definitions/streams/channel_traffic_source_a2" - # - $ref: "#/definitions/streams/playlist_basic_a1" - # - $ref: "#/definitions/streams/playlist_combined_a1" - # - $ref: "#/definitions/streams/playlist_device_os_a1" - # - $ref: "#/definitions/streams/playlist_playback_location_a1" - # - $ref: "#/definitions/streams/playlist_province_a1" - # - $ref: "#/definitions/streams/playlist_traffic_source_a1" + - $ref: "#/definitions/streams/channel_basic_a2" + - $ref: "#/definitions/streams/channel_cards_a1" + - $ref: "#/definitions/streams/channel_combined_a2" + - $ref: "#/definitions/streams/channel_demographics_a1" + - $ref: "#/definitions/streams/channel_device_os_a2" + - $ref: "#/definitions/streams/channel_end_screens_a1" + - $ref: "#/definitions/streams/channel_playback_location_a2" + - $ref: "#/definitions/streams/channel_province_a2" + - $ref: "#/definitions/streams/channel_sharing_service_a1" + - $ref: "#/definitions/streams/channel_subtitles_a2" + - $ref: "#/definitions/streams/channel_traffic_source_a2" + - $ref: "#/definitions/streams/playlist_basic_a1" + - $ref: "#/definitions/streams/playlist_combined_a1" + - $ref: "#/definitions/streams/playlist_device_os_a1" + - $ref: "#/definitions/streams/playlist_playback_location_a1" + - $ref: "#/definitions/streams/playlist_province_a1" + - $ref: "#/definitions/streams/playlist_traffic_source_a1" spec: type: Spec From 210ee7095dc1186a155a8bc119ba415019cd6f19 Mon Sep 17 00:00:00 2001 From: Octavia Squidington III Date: Fri, 24 Jan 2025 19:06:25 +0000 Subject: [PATCH 15/19] chore: auto-fix lint and format issues --- .../source_youtube_analytics/components.py | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py index df4ccd7c2af58..9da0fca0ce0df 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py +++ b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py @@ -2,23 +2,22 @@ # Copyright (c) 2023 Airbyte, Inc., all rights reserved. # -import requests from dataclasses import dataclass from typing import Any, Mapping, Optional, Union +import requests + +from airbyte_cdk.sources.declarative.requesters.error_handlers import DefaultErrorHandler from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester from airbyte_cdk.sources.declarative.requesters.request_options.interpolated_request_options_provider import ( InterpolatedRequestOptionsProvider, RequestInput, ) - -from airbyte_cdk.sources.declarative.requesters.http_requester import HttpRequester -from airbyte_cdk.sources.declarative.requesters.error_handlers import DefaultErrorHandler from airbyte_cdk.sources.streams.http.error_handlers import ErrorResolution, ResponseAction + @dataclass class CreationRequester(HttpRequester): - request_body_json: Optional[RequestInput] = None def __post_init__(self, parameters: Mapping[str, Any]) -> None: @@ -31,10 +30,10 @@ def __post_init__(self, parameters: Mapping[str, Any]) -> None: def send_request(self, **kwargs): request, jobs_response = self._http_client.send_request( - http_method="GET", - url=self._join_url(self.get_url_base(), "jobs"), - request_kwargs={"stream": self.stream_response}, - ) + http_method="GET", + url=self._join_url(self.get_url_base(), "jobs"), + request_kwargs={"stream": self.stream_response}, + ) jobs_list = jobs_response.json().get("jobs", []) stream_name = self.name.split(" - ")[-1] if stream_name in [job["reportTypeId"] for job in jobs_list]: @@ -42,9 +41,9 @@ def send_request(self, **kwargs): else: return super().send_request(**kwargs) + @dataclass class PollingRequester(HttpRequester): - def send_request(self, **kwargs): jobs_response = super().send_request(**kwargs) jobs_list = jobs_response.json().get("jobs", []) @@ -59,9 +58,9 @@ def send_request(self, **kwargs): ) return reports_response + @dataclass class YoutubeAnalyticsErrorHandler(DefaultErrorHandler): - def daily_quota_exceeded(self, response: requests.Response): """Response example: { @@ -94,7 +93,7 @@ def daily_quota_exceeded(self, response: requests.Response): return True, f"Exceeded daily quota: {detail.get('metadata', {}).get('quota_limit_value')} reqs/day" break return False, "" - + def should_retry(self, response: requests.Response): """ Override to set different conditions for backoff based on the response from the server. @@ -137,7 +136,7 @@ def interpret_response(self, response_or_exception: Optional[Union[requests.Resp error_message=error_message, ) return super().interpret_response(response_or_exception) - + def backoff_time( self, response_or_exception: Optional[Union[requests.Response, requests.RequestException]], From 3580f583e98027326cc80990d68e1064380b1d24 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Sat, 25 Jan 2025 11:18:37 +0100 Subject: [PATCH 16/19] migrate to manifest only --- .../source-youtube-analytics/README.md | 88 +- .../source-youtube-analytics/__init__.py | 3 - .../acceptance-test-config.yml | 2 +- .../components.py | 0 .../source-youtube-analytics/main.py | 9 - .../source-youtube-analytics/manifest.yaml | 6979 +++++++++++++++++ .../source-youtube-analytics/metadata.yaml | 7 +- .../source-youtube-analytics/poetry.lock | 2045 ----- .../source-youtube-analytics/pyproject.toml | 28 - .../source_youtube_analytics/__init__.py | 8 - .../defaults/channel_reports.json | 274 - .../source_youtube_analytics/manifest.yaml | 981 --- .../source_youtube_analytics/run.py | 15 - .../schemas/channel_annotations_a1.json | 51 - .../schemas/channel_basic_a2.json | 105 - .../schemas/channel_cards_a1.json | 48 - .../schemas/channel_combined_a2.json | 54 - .../schemas/channel_demographics_a1.json | 33 - .../schemas/channel_device_os_a2.json | 48 - .../schemas/channel_end_screens_a1.json | 39 - .../schemas/channel_playback_location_a2.json | 48 - .../schemas/channel_province_a2.json | 84 - .../schemas/channel_sharing_service_a1.json | 30 - .../schemas/channel_subtitles_a2.json | 45 - .../schemas/channel_traffic_source_a2.json | 48 - .../schemas/playlist_basic_a1.json | 45 - .../schemas/playlist_combined_a1.json | 57 - .../schemas/playlist_device_os_a1.json | 51 - .../playlist_playback_location_a1.json | 51 - .../schemas/playlist_province_a1.json | 48 - .../schemas/playlist_traffic_source_a1.json | 51 - .../source_youtube_analytics/source.py | 19 - 32 files changed, 7009 insertions(+), 4385 deletions(-) delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/__init__.py rename airbyte-integrations/connectors/source-youtube-analytics/{source_youtube_analytics => }/components.py (100%) delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/main.py create mode 100644 airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/poetry.lock delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/defaults/channel_reports.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_annotations_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_basic_a2.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_cards_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_combined_a2.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_demographics_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_device_os_a2.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_end_screens_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_playback_location_a2.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_province_a2.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_sharing_service_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_subtitles_a2.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_traffic_source_a2.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_basic_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_combined_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_device_os_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_playback_location_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_province_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_traffic_source_a1.json delete mode 100644 airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py diff --git a/airbyte-integrations/connectors/source-youtube-analytics/README.md b/airbyte-integrations/connectors/source-youtube-analytics/README.md index cc695ced3c522..3544d27b1283b 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/README.md +++ b/airbyte-integrations/connectors/source-youtube-analytics/README.md @@ -1,101 +1,63 @@ -# Youtube-Analytics source connector +# Youtube analytics source connector -This is the repository for the Youtube Analytics configuration based source connector. -For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/youtube-analytics). +This directory contains the manifest-only connector for `source-youtube-analytics`. +This _manifest-only_ connector is not a Python package on its own, as it runs inside of the base `source-declarative-manifest` image. + +For information about how to configure and use this connector within Airbyte, see [the connector's full documentation](https://docs.airbyte.com/integrations/sources/youtube-analytics). ## Local development -### Prerequisites +We recommend using the Connector Builder to edit this connector. +Using either Airbyte Cloud or your local Airbyte OSS instance, navigate to the **Builder** tab and select **Import a YAML**. +Then select the connector's `manifest.yaml` file to load the connector into the Builder. You're now ready to make changes to the connector! -* Python (`^3.9`) -* Poetry (`^1.7`) - installation instructions [here](https://python-poetry.org/docs/#installation) +If you prefer to develop locally, you can follow the instructions below. +### Building the docker image +You can build any manifest-only connector with `airbyte-ci`: -### Installing the connector +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: -From this connector directory, run: ```bash -poetry install --with dev +airbyte-ci connectors --name=source-youtube-analytics build ``` +An image will be available on your host with the tag `airbyte/source-youtube-analytics:dev`. -### Create credentials +### Creating credentials **If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/youtube-analytics) -to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `src/source_youtube_analytics/spec.yaml` file. +to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `spec` object in the connector's `manifest.yaml` file. Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information. -See `sample_files/sample_config.json` for a sample config file. - - -### Locally running the connector - -``` -poetry run source-youtube-analytics spec -poetry run source-youtube-analytics check --config secrets/config.json -poetry run source-youtube-analytics discover --config secrets/config.json -poetry run source-youtube-analytics read --config secrets/config.json --catalog sample_files/configured_catalog.json -``` - -### Running tests -To run tests locally, from the connector directory run: - -``` -poetry run pytest tests -``` +### Running as a docker container -### Building the docker image +Then run any of the standard source connector commands: -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-youtube-analytics build -``` - -An image will be available on your host with the tag `airbyte/source-youtube-analytics:dev`. - - -### Running as a docker container - -Then run any of the connector commands as follows: -``` docker run --rm airbyte/source-youtube-analytics:dev spec docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-youtube-analytics:dev check --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-youtube-analytics:dev discover --config /secrets/config.json docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-youtube-analytics:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json ``` -### Running our CI test suite +### Running the CI test suite You can run our full test suite locally using [`airbyte-ci`](https://github.com/airbytehq/airbyte/blob/master/airbyte-ci/connectors/pipelines/README.md): -```bash -airbyte-ci connectors --name=source-youtube-analytics test -``` - -### Customizing acceptance Tests -Customize `acceptance-test-config.yml` file to configure acceptance tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information. -If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. - -### Dependency Management - -All of your dependencies should be managed via Poetry. -To add a new dependency, run: ```bash -poetry add +airbyte-ci connectors --name=source-youtube-analytics test ``` -Please commit the changes to `pyproject.toml` and `poetry.lock` files. - ## Publishing a new version of the connector -You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what? -1. Make sure your changes are passing our test suite: `airbyte-ci connectors --name=source-youtube-analytics test` -2. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): +If you want to contribute changes to `source-youtube-analytics`, here's how you can do that: +1. Make your changes locally, or load the connector's manifest into Connector Builder and make changes there. +2. Make sure your changes are passing our test suite with `airbyte-ci connectors --name=source-youtube-analytics test` +3. Bump the connector version (please follow [semantic versioning for connectors](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#semantic-versioning-for-connectors)): - bump the `dockerImageTag` value in in `metadata.yaml` - - bump the `version` value in `pyproject.toml` -3. Make sure the `metadata.yaml` content is up to date. 4. Make sure the connector documentation and its changelog is up to date (`docs/integrations/sources/youtube-analytics.md`). 5. Create a Pull Request: use [our PR naming conventions](https://docs.airbyte.com/contributing-to-airbyte/resources/pull-requests-handbook/#pull-request-title-convention). 6. Pat yourself on the back for being an awesome contributor. diff --git a/airbyte-integrations/connectors/source-youtube-analytics/__init__.py b/airbyte-integrations/connectors/source-youtube-analytics/__init__.py deleted file mode 100644 index 66f6de8cb2bb5..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -# Copyright (c) 2024 Airbyte, Inc., all rights reserved. -# diff --git a/airbyte-integrations/connectors/source-youtube-analytics/acceptance-test-config.yml b/airbyte-integrations/connectors/source-youtube-analytics/acceptance-test-config.yml index 6129ecd4647e6..d2a32ec7853eb 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-youtube-analytics/acceptance-test-config.yml @@ -3,7 +3,7 @@ connector_image: airbyte/source-youtube-analytics:dev tests: spec: - - spec_path: "source_youtube_analytics/spec.yaml" + - spec_path: "manifest.yaml" connection: - config_path: "secrets/config.json" status: "succeed" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py b/airbyte-integrations/connectors/source-youtube-analytics/components.py similarity index 100% rename from airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/components.py rename to airbyte-integrations/connectors/source-youtube-analytics/components.py diff --git a/airbyte-integrations/connectors/source-youtube-analytics/main.py b/airbyte-integrations/connectors/source-youtube-analytics/main.py deleted file mode 100644 index 959f6b2714542..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/main.py +++ /dev/null @@ -1,9 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - -from source_youtube_analytics.run import run - - -if __name__ == "__main__": - run() diff --git a/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml new file mode 100644 index 0000000000000..5bd37c1350f29 --- /dev/null +++ b/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml @@ -0,0 +1,6979 @@ +version: 5.15.0 +type: DeclarativeSource +check: + type: CheckStream + stream_names: + - channel_annotations_a1 +definitions: + base_stream: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + streams: + channel_annotations_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_annotations_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_annotations_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - annotation_type + - annotation_id + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "annotation_type": + "type": + - "null" + - "string" + "annotation_id": + "type": + - "null" + - "string" + "annotation_impressions": + "type": + - "null" + - "string" + "annotation_clickable_impressions": + "type": + - "null" + - "string" + "annotation_clicks": + "type": + - "null" + - "string" + "annotation_click_through_rate": + "type": + - "null" + - "string" + "annotation_closable_impressions": + "type": + - "null" + - "string" + "annotation_closes": + "type": + - "null" + - "string" + "annotation_close_rate": + "type": + - "null" + - "string" + channel_basic_a2: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_basic_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_basic_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "comments": + "type": + - "null" + - "integer" + "likes": + "type": + - "null" + - "integer" + "dislikes": + "type": + - "null" + - "integer" + "shares": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "annotation_impressions": + "type": + - "null" + - "integer" + "annotation_clickable_impressions": + "type": + - "null" + - "integer" + "annotation_clicks": + "type": + - "null" + - "integer" + "annotation_click_through_rate": + "type": + - "null" + - "number" + "annotation_closable_impressions": + "type": + - "null" + - "integer" + "annotation_closes": + "type": + - "null" + - "integer" + "annotation_close_rate": + "type": + - "null" + - "number" + "card_teaser_impressions": + "type": + - "null" + - "integer" + "card_teaser_clicks": + "type": + - "null" + - "integer" + "card_teaser_click_rate": + "type": + - "null" + - "number" + "card_impressions": + "type": + - "null" + - "integer" + "card_clicks": + "type": + - "null" + - "integer" + "card_click_rate": + "type": + - "null" + - "number" + "subscribers_gained": + "type": + - "null" + - "integer" + "subscribers_lost": + "type": + - "null" + - "integer" + "videos_added_to_playlists": + "type": + - "null" + - "integer" + "videos_removed_from_playlists": + "type": + - "null" + - "integer" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_cards_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_cards_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_cards_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - card_type + - card_id + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "card_type": + "type": + - "null" + - "string" + "card_id": + "type": + - "null" + - "string" + "card_teaser_impressions": + "type": + - "null" + - "string" + "card_teaser_clicks": + "type": + - "null" + - "string" + "card_teaser_click_rate": + "type": + - "null" + - "string" + "card_impressions": + "type": + - "null" + - "string" + "card_clicks": + "type": + - "null" + - "string" + "card_click_rate": + "type": + - "null" + - "string" + channel_combined_a2: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_combined_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_combined_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - traffic_source_type + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "traffic_source_type": + "type": + - "null" + - "integer" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_demographics_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_demographics_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_demographics_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - age_group + - gender + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "age_group": + "type": + - "null" + - "string" + "gender": + "type": + - "null" + - "string" + "views_percentage": + "type": + - "null" + - "string" + channel_device_os_a2: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_device_os_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_device_os_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_end_screens_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_end_screens_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_end_screens_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - end_screen_element_type + - end_screen_element_id + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "end_screen_element_type": + "type": + - "null" + - "string" + "end_screen_element_id": + "type": + - "null" + - "string" + "end_screen_element_clicks": + "type": + - "null" + - "string" + "end_screen_element_impressions": + "type": + - "null" + - "string" + "end_screen_element_click_rate": + "type": + - "null" + - "string" + channel_playback_location_a2: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_playback_location_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_playback_location_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - playback_location_detail + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "playback_location_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_province_a2: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_province_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_province_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - province_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "province_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "annotation_click_through_rate": + "type": + - "null" + - "integer" + "annotation_close_rate": + "type": + - "null" + - "integer" + "annotation_impressions": + "type": + - "null" + - "integer" + "annotation_clickable_impressions": + "type": + - "null" + - "integer" + "annotation_closable_impressions": + "type": + - "null" + - "integer" + "annotation_clicks": + "type": + - "null" + - "integer" + "annotation_closes": + "type": + - "null" + - "integer" + "card_click_rate": + "type": + - "null" + - "integer" + "card_teaser_click_rate": + "type": + - "null" + - "integer" + "card_impressions": + "type": + - "null" + - "integer" + "card_teaser_impressions": + "type": + - "null" + - "integer" + "card_clicks": + "type": + - "null" + - "integer" + "card_teaser_clicks": + "type": + - "null" + - "integer" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_sharing_service_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_sharing_service_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_sharing_service_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - sharing_service + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "sharing_service": + "type": + - "null" + - "string" + "shares": + "type": + - "null" + - "string" + channel_subtitles_a2: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_subtitles_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_subtitles_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - subtitle_language + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "subtitle_language": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_traffic_source_a2: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_traffic_source_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_traffic_source_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - traffic_source_type + - traffic_source_detail + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "traffic_source_type": + "type": + - "null" + - "integer" + "traffic_source_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + playlist_basic_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_basic_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_basic_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + playlist_combined_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_combined_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_combined_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - traffic_source_type + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "traffic_source_type": + "type": + - "null" + - "integer" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + playlist_device_os_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_device_os_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_device_os_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + playlist_playback_location_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_playback_location_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_playback_location_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - playback_location_detail + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "playback_location_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + playlist_province_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_province_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_province_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - province_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "province_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "string" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "string" + "playlist_saves_added": + "type": + - "null" + - "string" + "playlist_saves_removed": + "type": + - "null" + - "string" + playlist_traffic_source_a1: + type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_traffic_source_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_traffic_source_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - traffic_source_type + - traffic_source_detail + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "traffic_source_type": + "type": + - "null" + - "integer" + "traffic_source_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + base_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" +streams: +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_annotations_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_annotations_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - annotation_type + - annotation_id + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "annotation_type": + "type": + - "null" + - "string" + "annotation_id": + "type": + - "null" + - "string" + "annotation_impressions": + "type": + - "null" + - "string" + "annotation_clickable_impressions": + "type": + - "null" + - "string" + "annotation_clicks": + "type": + - "null" + - "string" + "annotation_click_through_rate": + "type": + - "null" + - "string" + "annotation_closable_impressions": + "type": + - "null" + - "string" + "annotation_closes": + "type": + - "null" + - "string" + "annotation_close_rate": + "type": + - "null" + - "string" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_basic_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_basic_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "comments": + "type": + - "null" + - "integer" + "likes": + "type": + - "null" + - "integer" + "dislikes": + "type": + - "null" + - "integer" + "shares": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "annotation_impressions": + "type": + - "null" + - "integer" + "annotation_clickable_impressions": + "type": + - "null" + - "integer" + "annotation_clicks": + "type": + - "null" + - "integer" + "annotation_click_through_rate": + "type": + - "null" + - "number" + "annotation_closable_impressions": + "type": + - "null" + - "integer" + "annotation_closes": + "type": + - "null" + - "integer" + "annotation_close_rate": + "type": + - "null" + - "number" + "card_teaser_impressions": + "type": + - "null" + - "integer" + "card_teaser_clicks": + "type": + - "null" + - "integer" + "card_teaser_click_rate": + "type": + - "null" + - "number" + "card_impressions": + "type": + - "null" + - "integer" + "card_clicks": + "type": + - "null" + - "integer" + "card_click_rate": + "type": + - "null" + - "number" + "subscribers_gained": + "type": + - "null" + - "integer" + "subscribers_lost": + "type": + - "null" + - "integer" + "videos_added_to_playlists": + "type": + - "null" + - "integer" + "videos_removed_from_playlists": + "type": + - "null" + - "integer" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_cards_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_cards_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - card_type + - card_id + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "card_type": + "type": + - "null" + - "string" + "card_id": + "type": + - "null" + - "string" + "card_teaser_impressions": + "type": + - "null" + - "string" + "card_teaser_clicks": + "type": + - "null" + - "string" + "card_teaser_click_rate": + "type": + - "null" + - "string" + "card_impressions": + "type": + - "null" + - "string" + "card_clicks": + "type": + - "null" + - "string" + "card_click_rate": + "type": + - "null" + - "string" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_combined_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_combined_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - traffic_source_type + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "traffic_source_type": + "type": + - "null" + - "integer" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_demographics_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_demographics_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - age_group + - gender + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "age_group": + "type": + - "null" + - "string" + "gender": + "type": + - "null" + - "string" + "views_percentage": + "type": + - "null" + - "string" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_device_os_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_device_os_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_end_screens_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_end_screens_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - end_screen_element_type + - end_screen_element_id + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "end_screen_element_type": + "type": + - "null" + - "string" + "end_screen_element_id": + "type": + - "null" + - "string" + "end_screen_element_clicks": + "type": + - "null" + - "string" + "end_screen_element_impressions": + "type": + - "null" + - "string" + "end_screen_element_click_rate": + "type": + - "null" + - "string" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_playback_location_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_playback_location_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - playback_location_detail + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "playback_location_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_province_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_province_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - province_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "province_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "annotation_click_through_rate": + "type": + - "null" + - "integer" + "annotation_close_rate": + "type": + - "null" + - "integer" + "annotation_impressions": + "type": + - "null" + - "integer" + "annotation_clickable_impressions": + "type": + - "null" + - "integer" + "annotation_closable_impressions": + "type": + - "null" + - "integer" + "annotation_clicks": + "type": + - "null" + - "integer" + "annotation_closes": + "type": + - "null" + - "integer" + "card_click_rate": + "type": + - "null" + - "integer" + "card_teaser_click_rate": + "type": + - "null" + - "integer" + "card_impressions": + "type": + - "null" + - "integer" + "card_teaser_impressions": + "type": + - "null" + - "integer" + "card_clicks": + "type": + - "null" + - "integer" + "card_teaser_clicks": + "type": + - "null" + - "integer" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_sharing_service_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_sharing_service_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - sharing_service + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "sharing_service": + "type": + - "null" + - "string" + "shares": + "type": + - "null" + - "string" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_subtitles_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_subtitles_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - subtitle_language + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "subtitle_language": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_traffic_source_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_traffic_source_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - traffic_source_type + - traffic_source_detail + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "traffic_source_type": + "type": + - "null" + - "integer" + "traffic_source_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_basic_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_basic_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_combined_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_combined_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - traffic_source_type + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "traffic_source_type": + "type": + - "null" + - "integer" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_device_os_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_device_os_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_playback_location_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_playback_location_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - playback_location_detail + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "playback_location_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_province_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_province_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - province_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "province_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "string" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "string" + "playlist_saves_added": + "type": + - "null" + - "string" + "playlist_saves_removed": + "type": + - "null" + - "string" +- type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_traffic_source_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: source_youtube_analytics.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: playlist_traffic_source_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - traffic_source_type + - traffic_source_detail + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "traffic_source_type": + "type": + - "null" + - "integer" + "traffic_source_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" +spec: + type: Spec + documentationUrl: https://docs.airbyte.com/integrations/sources/youtube-analytics + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + title: YouTube Analytics Spec + required: + - credentials + additionalProperties: true + properties: + credentials: + type: object + title: Authenticate via OAuth 2.0 + required: + - client_id + - client_secret + - refresh_token + additionalProperties: true + properties: + client_id: + type: string + description: The Client ID of your developer application + title: Client ID + airbyte_secret: true + client_secret: + type: string + description: The client secret of your developer application + title: Client Secret + airbyte_secret: true + refresh_token: + type: string + description: A refresh token generated using the above client ID and secret + title: Refresh Token + airbyte_secret: true + advanced_auth: + auth_flow_type: oauth2.0 + oauth_config_specification: + complete_oauth_output_specification: + type: object + additionalProperties: true + properties: + refresh_token: + type: string + path_in_connector_config: + - credentials + - refresh_token + complete_oauth_server_input_specification: + type: object + additionalProperties: true + properties: + client_id: + type: string + client_secret: + type: string + complete_oauth_server_output_specification: + type: object + additionalProperties: true + properties: + client_id: + type: string + path_in_connector_config: + - credentials + - client_id + client_secret: + type: string + path_in_connector_config: + - credentials + - client_secret +schemas: + channel_annotations_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "annotation_type": + "type": + - "null" + - "string" + "annotation_id": + "type": + - "null" + - "string" + "annotation_impressions": + "type": + - "null" + - "string" + "annotation_clickable_impressions": + "type": + - "null" + - "string" + "annotation_clicks": + "type": + - "null" + - "string" + "annotation_click_through_rate": + "type": + - "null" + - "string" + "annotation_closable_impressions": + "type": + - "null" + - "string" + "annotation_closes": + "type": + - "null" + - "string" + "annotation_close_rate": + "type": + - "null" + - "string" + channel_basic_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "comments": + "type": + - "null" + - "integer" + "likes": + "type": + - "null" + - "integer" + "dislikes": + "type": + - "null" + - "integer" + "shares": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "annotation_impressions": + "type": + - "null" + - "integer" + "annotation_clickable_impressions": + "type": + - "null" + - "integer" + "annotation_clicks": + "type": + - "null" + - "integer" + "annotation_click_through_rate": + "type": + - "null" + - "number" + "annotation_closable_impressions": + "type": + - "null" + - "integer" + "annotation_closes": + "type": + - "null" + - "integer" + "annotation_close_rate": + "type": + - "null" + - "number" + "card_teaser_impressions": + "type": + - "null" + - "integer" + "card_teaser_clicks": + "type": + - "null" + - "integer" + "card_teaser_click_rate": + "type": + - "null" + - "number" + "card_impressions": + "type": + - "null" + - "integer" + "card_clicks": + "type": + - "null" + - "integer" + "card_click_rate": + "type": + - "null" + - "number" + "subscribers_gained": + "type": + - "null" + - "integer" + "subscribers_lost": + "type": + - "null" + - "integer" + "videos_added_to_playlists": + "type": + - "null" + - "integer" + "videos_removed_from_playlists": + "type": + - "null" + - "integer" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_cards_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "card_type": + "type": + - "null" + - "string" + "card_id": + "type": + - "null" + - "string" + "card_teaser_impressions": + "type": + - "null" + - "string" + "card_teaser_clicks": + "type": + - "null" + - "string" + "card_teaser_click_rate": + "type": + - "null" + - "string" + "card_impressions": + "type": + - "null" + - "string" + "card_clicks": + "type": + - "null" + - "string" + "card_click_rate": + "type": + - "null" + - "string" + channel_combined_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "traffic_source_type": + "type": + - "null" + - "integer" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_demographics_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "age_group": + "type": + - "null" + - "string" + "gender": + "type": + - "null" + - "string" + "views_percentage": + "type": + - "null" + - "string" + channel_device_os_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_end_screens_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "end_screen_element_type": + "type": + - "null" + - "string" + "end_screen_element_id": + "type": + - "null" + - "string" + "end_screen_element_clicks": + "type": + - "null" + - "string" + "end_screen_element_impressions": + "type": + - "null" + - "string" + "end_screen_element_click_rate": + "type": + - "null" + - "string" + channel_playback_location_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "playback_location_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_province_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "province_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "annotation_click_through_rate": + "type": + - "null" + - "integer" + "annotation_close_rate": + "type": + - "null" + - "integer" + "annotation_impressions": + "type": + - "null" + - "integer" + "annotation_clickable_impressions": + "type": + - "null" + - "integer" + "annotation_closable_impressions": + "type": + - "null" + - "integer" + "annotation_clicks": + "type": + - "null" + - "integer" + "annotation_closes": + "type": + - "null" + - "integer" + "card_click_rate": + "type": + - "null" + - "integer" + "card_teaser_click_rate": + "type": + - "null" + - "integer" + "card_impressions": + "type": + - "null" + - "integer" + "card_teaser_impressions": + "type": + - "null" + - "integer" + "card_clicks": + "type": + - "null" + - "integer" + "card_teaser_clicks": + "type": + - "null" + - "integer" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_sharing_service_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "sharing_service": + "type": + - "null" + - "string" + "shares": + "type": + - "null" + - "string" + channel_subtitles_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "subtitle_language": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + channel_traffic_source_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "traffic_source_type": + "type": + - "null" + - "integer" + "traffic_source_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + playlist_basic_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + playlist_combined_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "traffic_source_type": + "type": + - "null" + - "integer" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + playlist_device_os_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + playlist_playback_location_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "playback_location_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + playlist_province_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "province_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "string" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "string" + "playlist_saves_added": + "type": + - "null" + - "string" + "playlist_saves_removed": + "type": + - "null" + - "string" + playlist_traffic_source_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "traffic_source_type": + "type": + - "null" + - "integer" + "traffic_source_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml b/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml index 9a9b0e000d780..eef1bb6f36893 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml @@ -17,7 +17,7 @@ data: name: YouTube Analytics remoteRegistries: pypi: - enabled: true + enabled: false packageName: airbyte-source-youtube-analytics registryOverrides: cloud: @@ -27,8 +27,8 @@ data: releaseStage: beta supportLevel: community tags: - - language:python - cdk:low-code + - language:manifest-only connectorTestSuitesOptions: - suite: acceptanceTests testSecrets: @@ -38,5 +38,6 @@ data: type: GSM alias: airbyte-connector-testing-secret-store connectorBuildOptions: - baseImage: docker.io/airbyte/python-connector-base:2.0.0@sha256:c44839ba84406116e8ba68722a0f30e8f6e7056c726f447681bb9e9ece8bd916 + baseImage: + docker.io/airbyte/source-declarative-manifest:6.27.0@sha256:ffc5f087448ef40fd1ef8fe0fc660b16621be7c1e8ecfccd44002136b06c6efb metadataSpecVersion: "1.0" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock b/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock deleted file mode 100644 index ba9cff7ae90d0..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/poetry.lock +++ /dev/null @@ -1,2045 +0,0 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "airbyte-cdk" -version = "6.6.1" -description = "A framework for writing Airbyte Connectors." -optional = false -python-versions = "<4.0,>=3.10" -files = [ - {file = "airbyte_cdk-6.6.1-py3-none-any.whl", hash = "sha256:b3f06f859fdf51bfcfe96cc91a7149e21cd172e55964be283052c655bd3d1eae"}, - {file = "airbyte_cdk-6.6.1.tar.gz", hash = "sha256:3c89222deb9ae3684bfcee1d015c6b248db07e0e4ab708e283ecc2be8e1d0792"}, -] - -[package.dependencies] -airbyte-protocol-models-dataclasses = ">=0.13,<0.14" -backoff = "*" -cachetools = "*" -cryptography = ">=42.0.5,<44.0.0" -Deprecated = ">=1.2,<1.3" -dpath = ">=2.1.6,<3.0.0" -dunamai = ">=1.22.0,<2.0.0" -genson = "1.3.0" -isodate = ">=0.6.1,<0.7.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonref = ">=0.2,<0.3" -jsonschema = ">=3.2.0,<3.3.0" -langchain_core = "0.1.42" -nltk = "3.8.1" -numpy = "<2" -orjson = ">=3.10.7,<4.0.0" -pandas = "2.2.2" -pendulum = "<3.0.0" -psutil = "6.1.0" -pydantic = ">=2.7,<3.0" -pyjwt = ">=2.8.0,<3.0.0" -pyrate-limiter = ">=3.1.0,<3.2.0" -python-dateutil = "*" -python-ulid = ">=3.0.0,<4.0.0" -pytz = "2024.1" -PyYAML = ">=6.0.1,<7.0.0" -requests = "*" -requests_cache = "*" -serpyco-rs = ">=1.10.2,<2.0.0" -wcmatch = "10.0" -xmltodict = ">=0.13.0,<0.14.0" - -[package.extras] -file-based = ["avro (>=1.11.2,<1.12.0)", "fastavro (>=1.8.0,<1.9.0)", "markdown", "pdf2image (==1.16.3)", "pdfminer.six (==20221105)", "pyarrow (>=15.0.0,<15.1.0)", "pytesseract (==0.3.10)", "python-calamine (==0.2.3)", "python-snappy (==0.7.3)", "unstructured.pytesseract (>=0.3.12)", "unstructured[docx,pptx] (==0.10.27)"] -sphinx-docs = ["Sphinx (>=4.2,<4.3)", "sphinx-rtd-theme (>=1.0,<1.1)"] -sql = ["sqlalchemy (>=2.0,!=2.0.36,<3.0)"] -vector-db-based = ["cohere (==4.21)", "langchain (==0.1.16)", "openai[embeddings] (==0.27.9)", "tiktoken (==0.8.0)"] - -[[package]] -name = "airbyte-protocol-models-dataclasses" -version = "0.13.1" -description = "Declares the Airbyte Protocol using Python Dataclasses. Dataclasses in Python have less performance overhead compared to Pydantic models, making them a more efficient choice for scenarios where speed and memory usage are critical" -optional = false -python-versions = ">=3.8" -files = [ - {file = "airbyte_protocol_models_dataclasses-0.13.1-py3-none-any.whl", hash = "sha256:20a734b7b1c3479a643777830db6a2e0a34428f33d16abcfd320552576fabe5a"}, - {file = "airbyte_protocol_models_dataclasses-0.13.1.tar.gz", hash = "sha256:ec6a0fb6b16267bde910f52279445d06c8e1a3e4ed82ac2937b405ab280449d5"}, -] - -[[package]] -name = "annotated-types" -version = "0.7.0" -description = "Reusable constraint types to use with typing.Annotated" -optional = false -python-versions = ">=3.8" -files = [ - {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, - {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, -] - -[[package]] -name = "anyio" -version = "4.8.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.9" -files = [ - {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, - {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] -trio = ["trio (>=0.26.1)"] - -[[package]] -name = "attributes-doc" -version = "0.4.0" -description = "PEP 224 implementation" -optional = false -python-versions = ">=3.8" -files = [ - {file = "attributes-doc-0.4.0.tar.gz", hash = "sha256:b1576c94a714e9fc2c65c47cf10d0c8e1a5f7c4f5ae7f69006be108d95cbfbfb"}, - {file = "attributes_doc-0.4.0-py2.py3-none-any.whl", hash = "sha256:4c3007d9e58f3a6cb4b9c614c4d4ce2d92161581f28e594ddd8241cc3a113bdd"}, -] - -[[package]] -name = "attrs" -version = "24.3.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.8" -files = [ - {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, - {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "backoff" -version = "2.2.1" -description = "Function decoration for backoff and retry" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, - {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, -] - -[[package]] -name = "bracex" -version = "2.5.post1" -description = "Bash style brace expander." -optional = false -python-versions = ">=3.8" -files = [ - {file = "bracex-2.5.post1-py3-none-any.whl", hash = "sha256:13e5732fec27828d6af308628285ad358047cec36801598368cb28bc631dbaf6"}, - {file = "bracex-2.5.post1.tar.gz", hash = "sha256:12c50952415bfa773d2d9ccb8e79651b8cdb1f31a42f6091b804f6ba2b4a66b6"}, -] - -[[package]] -name = "cachetools" -version = "5.5.1" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -files = [ - {file = "cachetools-5.5.1-py3-none-any.whl", hash = "sha256:b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb"}, - {file = "cachetools-5.5.1.tar.gz", hash = "sha256:70f238fbba50383ef62e55c6aff6d9673175fe59f7c6782c7a0b9e38f4a9df95"}, -] - -[[package]] -name = "cattrs" -version = "24.1.2" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-24.1.2-py3-none-any.whl", hash = "sha256:67c7495b760168d931a10233f979b28dc04daf853b30752246f4f8471c6d68d0"}, - {file = "cattrs-24.1.2.tar.gz", hash = "sha256:8028cfe1ff5382df59dd36474a86e02d817b06eaf8af84555441bac915d2ef85"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -msgspec = ["msgspec (>=0.18.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - -[[package]] -name = "certifi" -version = "2024.12.14" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, - {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.4.1" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7" -files = [ - {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, - {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, - {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, -] - -[[package]] -name = "click" -version = "8.1.8" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "43.0.3" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, - {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, - {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"}, - {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"}, - {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"}, - {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"}, - {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"}, - {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"}, - {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"}, - {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"}, - {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"}, - {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"}, - {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"}, - {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"}, - {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"}, - {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"}, - {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"}, - {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"}, - {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"}, - {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"}, - {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"}, - {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"}, - {file = "cryptography-43.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664"}, - {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08"}, - {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa"}, - {file = "cryptography-43.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff"}, - {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"}, -] - -[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", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "deprecated" -version = "1.2.15" -description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" -files = [ - {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, - {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, -] - -[package.dependencies] -wrapt = ">=1.10,<2" - -[package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "jinja2 (>=3.0.3,<3.1.0)", "setuptools", "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 = "dunamai" -version = "1.23.0" -description = "Dynamic version generation" -optional = false -python-versions = ">=3.5" -files = [ - {file = "dunamai-1.23.0-py3-none-any.whl", hash = "sha256:a0906d876e92441793c6a423e16a4802752e723e9c9a5aabdc5535df02dbe041"}, - {file = "dunamai-1.23.0.tar.gz", hash = "sha256:a163746de7ea5acb6dacdab3a6ad621ebc612ed1e528aaa8beedb8887fccd2c4"}, -] - -[package.dependencies] -packaging = ">=20.9" - -[[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.3.0" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.3.0-py3-none-any.whl", hash = "sha256:468feccd00274cc7e4c09e84b08704270ba8d95232aa280f65b986139cec67f7"}, - {file = "genson-1.3.0.tar.gz", hash = "sha256:e02db9ac2e3fd29e65b5286f7135762e2cd8a986537c075b06fc5f1517308e37"}, -] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.7" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httpx" -version = "0.28.1" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.8" -files = [ - {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, - {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -httpcore = "==1.*" -idna = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "isodate" -version = "0.6.1" -description = "An ISO 8601 date/time/duration parser and formatter" -optional = false -python-versions = "*" -files = [ - {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, - {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, -] - -[package.dependencies] -six = "*" - -[[package]] -name = "jinja2" -version = "3.1.5" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, - {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "joblib" -version = "1.4.2" -description = "Lightweight pipelining with Python functions" -optional = false -python-versions = ">=3.8" -files = [ - {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, - {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, -] - -[[package]] -name = "jsonpatch" -version = "1.33" -description = "Apply JSON-Patches (RFC 6902)" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" -files = [ - {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, - {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, -] - -[package.dependencies] -jsonpointer = ">=1.9" - -[[package]] -name = "jsonpointer" -version = "3.0.0" -description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, - {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, -] - -[[package]] -name = "jsonref" -version = "0.2" -description = "An implementation of JSON Reference for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonref-0.2-py3-none-any.whl", hash = "sha256:b1e82fa0b62e2c2796a13e5401fe51790b248f6d9bf9d7212a3e31a3501b291f"}, - {file = "jsonref-0.2.tar.gz", hash = "sha256:f3c45b121cf6257eafabdc3a8008763aed1cd7da06dbabc59a9e4d2a5e4e6697"}, -] - -[[package]] -name = "jsonschema" -version = "3.2.0" -description = "An implementation of JSON Schema validation for Python" -optional = false -python-versions = "*" -files = [ - {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"}, - {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" - -[package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] -format-nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"] - -[[package]] -name = "langchain-core" -version = "0.1.42" -description = "Building applications with LLMs through composability" -optional = false -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "langchain_core-0.1.42-py3-none-any.whl", hash = "sha256:c5653ffa08a44f740295c157a24c0def4a753333f6a2c41f76bf431cd00be8b5"}, - {file = "langchain_core-0.1.42.tar.gz", hash = "sha256:40751bf60ea5d8e2b2efe65290db434717ee3834870c002e40e2811f09d814e6"}, -] - -[package.dependencies] -jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.1.0,<0.2.0" -packaging = ">=23.2,<24.0" -pydantic = ">=1,<3" -PyYAML = ">=5.3" -tenacity = ">=8.1.0,<9.0.0" - -[package.extras] -extended-testing = ["jinja2 (>=3,<4)"] - -[[package]] -name = "langsmith" -version = "0.1.147" -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.147-py3-none-any.whl", hash = "sha256:7166fc23b965ccf839d64945a78e9f1157757add228b086141eb03a60d699a15"}, - {file = "langsmith-0.1.147.tar.gz", hash = "sha256:2e933220318a4e73034657103b3b1a3a6109cc5db3566a7e8e03be8d6d7def7a"}, -] - -[package.dependencies] -httpx = ">=0.23.0,<1" -orjson = {version = ">=3.9.14,<4.0.0", markers = "platform_python_implementation != \"PyPy\""} -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" -requests-toolbelt = ">=1.0.0,<2.0.0" - -[package.extras] -langsmith-pyo3 = ["langsmith-pyo3 (>=0.1.0rc2,<0.2.0)"] - -[[package]] -name = "markupsafe" -version = "3.0.2" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.9" -files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "nltk" -version = "3.8.1" -description = "Natural Language Toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"}, - {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"}, -] - -[package.dependencies] -click = "*" -joblib = "*" -regex = ">=2021.8.3" -tqdm = "*" - -[package.extras] -all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] -corenlp = ["requests"] -machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] -plot = ["matplotlib"] -tgrep = ["pyparsing"] -twitter = ["twython"] - -[[package]] -name = "numpy" -version = "1.26.4" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, -] - -[[package]] -name = "orjson" -version = "3.10.15" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c2c79fa308e6edb0ffab0a31fd75a7841bf2a79a20ef08a3c6e3b26814c8ca8"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cb85490aa6bf98abd20607ab5c8324c0acb48d6da7863a51be48505646c814"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763dadac05e4e9d2bc14938a45a2d0560549561287d41c465d3c58aec818b164"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a330b9b4734f09a623f74a7490db713695e13b67c959713b78369f26b3dee6bf"}, - {file = "orjson-3.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a61a4622b7ff861f019974f73d8165be1bd9a0855e1cad18ee167acacabeb061"}, - {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd271247691574416b3228db667b84775c497b245fa275c6ab90dc1ffbbd2b3"}, - {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4759b109c37f635aa5c5cc93a1b26927bfde24b254bcc0e1149a9fada253d2d"}, - {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e992fd5cfb8b9f00bfad2fd7a05a4299db2bbe92e6440d9dd2fab27655b3182"}, - {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f95fb363d79366af56c3f26b71df40b9a583b07bbaaf5b317407c4d58497852e"}, - {file = "orjson-3.10.15-cp310-cp310-win32.whl", hash = "sha256:f9875f5fea7492da8ec2444839dcc439b0ef298978f311103d0b7dfd775898ab"}, - {file = "orjson-3.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:17085a6aa91e1cd70ca8533989a18b5433e15d29c574582f76f821737c8d5806"}, - {file = "orjson-3.10.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c4cc83960ab79a4031f3119cc4b1a1c627a3dc09df125b27c4201dff2af7eaa6"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddbeef2481d895ab8be5185f2432c334d6dec1f5d1933a9c83014d188e102cef"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e590a0477b23ecd5b0ac865b1b907b01b3c5535f5e8a8f6ab0e503efb896334"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6be38bd103d2fd9bdfa31c2720b23b5d47c6796bcb1d1b598e3924441b4298d"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ff4f6edb1578960ed628a3b998fa54d78d9bb3e2eb2cfc5c2a09732431c678d0"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0482b21d0462eddd67e7fce10b89e0b6ac56570424662b685a0d6fccf581e13"}, - {file = "orjson-3.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bb5cc3527036ae3d98b65e37b7986a918955f85332c1ee07f9d3f82f3a6899b5"}, - {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d569c1c462912acdd119ccbf719cf7102ea2c67dd03b99edcb1a3048651ac96b"}, - {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:1e6d33efab6b71d67f22bf2962895d3dc6f82a6273a965fab762e64fa90dc399"}, - {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c33be3795e299f565681d69852ac8c1bc5c84863c0b0030b2b3468843be90388"}, - {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eea80037b9fae5339b214f59308ef0589fc06dc870578b7cce6d71eb2096764c"}, - {file = "orjson-3.10.15-cp311-cp311-win32.whl", hash = "sha256:d5ac11b659fd798228a7adba3e37c010e0152b78b1982897020a8e019a94882e"}, - {file = "orjson-3.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:cf45e0214c593660339ef63e875f32ddd5aa3b4adc15e662cdb80dc49e194f8e"}, - {file = "orjson-3.10.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7723ad949a0ea502df656948ddd8b392780a5beaa4c3b5f97e525191b102fff0"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fd9bc64421e9fe9bd88039e7ce8e58d4fead67ca88e3a4014b143cec7684fd4"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dadba0e7b6594216c214ef7894c4bd5f08d7c0135f4dd0145600be4fbcc16767"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41"}, - {file = "orjson-3.10.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:035fb83585e0f15e076759b6fedaf0abb460d1765b6a36f48018a52858443514"}, - {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d13b7fe322d75bf84464b075eafd8e7dd9eae05649aa2a5354cfa32f43c59f17"}, - {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7066b74f9f259849629e0d04db6609db4cf5b973248f455ba5d3bd58a4daaa5b"}, - {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88dc3f65a026bd3175eb157fea994fca6ac7c4c8579fc5a86fc2114ad05705b7"}, - {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b342567e5465bd99faa559507fe45e33fc76b9fb868a63f1642c6bc0735ad02a"}, - {file = "orjson-3.10.15-cp312-cp312-win32.whl", hash = "sha256:0a4f27ea5617828e6b58922fdbec67b0aa4bb844e2d363b9244c47fa2180e665"}, - {file = "orjson-3.10.15-cp312-cp312-win_amd64.whl", hash = "sha256:ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa"}, - {file = "orjson-3.10.15-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bae0e6ec2b7ba6895198cd981b7cca95d1487d0147c8ed751e5632ad16f031a6"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f93ce145b2db1252dd86af37d4165b6faa83072b46e3995ecc95d4b2301b725a"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c203f6f969210128af3acae0ef9ea6aab9782939f45f6fe02d05958fe761ef9"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8918719572d662e18b8af66aef699d8c21072e54b6c82a3f8f6404c1f5ccd5e0"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f71eae9651465dff70aa80db92586ad5b92df46a9373ee55252109bb6b703307"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e117eb299a35f2634e25ed120c37c641398826c2f5a3d3cc39f5993b96171b9e"}, - {file = "orjson-3.10.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13242f12d295e83c2955756a574ddd6741c81e5b99f2bef8ed8d53e47a01e4b7"}, - {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7946922ada8f3e0b7b958cc3eb22cfcf6c0df83d1fe5521b4a100103e3fa84c8"}, - {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b7155eb1623347f0f22c38c9abdd738b287e39b9982e1da227503387b81b34ca"}, - {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:208beedfa807c922da4e81061dafa9c8489c6328934ca2a562efa707e049e561"}, - {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eca81f83b1b8c07449e1d6ff7074e82e3fd6777e588f1a6632127f286a968825"}, - {file = "orjson-3.10.15-cp313-cp313-win32.whl", hash = "sha256:c03cd6eea1bd3b949d0d007c8d57049aa2b39bd49f58b4b2af571a5d3833d890"}, - {file = "orjson-3.10.15-cp313-cp313-win_amd64.whl", hash = "sha256:fd56a26a04f6ba5fb2045b0acc487a63162a958ed837648c5781e1fe3316cfbf"}, - {file = "orjson-3.10.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e8afd6200e12771467a1a44e5ad780614b86abb4b11862ec54861a82d677746"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9a18c500f19273e9e104cca8c1f0b40a6470bcccfc33afcc088045d0bf5ea6"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb00b7bfbdf5d34a13180e4805d76b4567025da19a197645ca746fc2fb536586"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33aedc3d903378e257047fee506f11e0833146ca3e57a1a1fb0ddb789876c1e1"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd0099ae6aed5eb1fc84c9eb72b95505a3df4267e6962eb93cdd5af03be71c98"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c864a80a2d467d7786274fce0e4f93ef2a7ca4ff31f7fc5634225aaa4e9e98c"}, - {file = "orjson-3.10.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c25774c9e88a3e0013d7d1a6c8056926b607a61edd423b50eb5c88fd7f2823ae"}, - {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e78c211d0074e783d824ce7bb85bf459f93a233eb67a5b5003498232ddfb0e8a"}, - {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:43e17289ffdbbac8f39243916c893d2ae41a2ea1a9cbb060a56a4d75286351ae"}, - {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:781d54657063f361e89714293c095f506c533582ee40a426cb6489c48a637b81"}, - {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6875210307d36c94873f553786a808af2788e362bd0cf4c8e66d976791e7b528"}, - {file = "orjson-3.10.15-cp38-cp38-win32.whl", hash = "sha256:305b38b2b8f8083cc3d618927d7f424349afce5975b316d33075ef0f73576b60"}, - {file = "orjson-3.10.15-cp38-cp38-win_amd64.whl", hash = "sha256:5dd9ef1639878cc3efffed349543cbf9372bdbd79f478615a1c633fe4e4180d1"}, - {file = "orjson-3.10.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ffe19f3e8d68111e8644d4f4e267a069ca427926855582ff01fc012496d19969"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d433bf32a363823863a96561a555227c18a522a8217a6f9400f00ddc70139ae2"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:da03392674f59a95d03fa5fb9fe3a160b0511ad84b7a3914699ea5a1b3a38da2"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3a63bb41559b05360ded9132032239e47983a39b151af1201f07ec9370715c82"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3766ac4702f8f795ff3fa067968e806b4344af257011858cc3d6d8721588b53f"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a1c73dcc8fadbd7c55802d9aa093b36878d34a3b3222c41052ce6b0fc65f8e8"}, - {file = "orjson-3.10.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b299383825eafe642cbab34be762ccff9fd3408d72726a6b2a4506d410a71ab3"}, - {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:abc7abecdbf67a173ef1316036ebbf54ce400ef2300b4e26a7b843bd446c2480"}, - {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:3614ea508d522a621384c1d6639016a5a2e4f027f3e4a1c93a51867615d28829"}, - {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:295c70f9dc154307777ba30fe29ff15c1bcc9dfc5c48632f37d20a607e9ba85a"}, - {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:63309e3ff924c62404923c80b9e2048c1f74ba4b615e7584584389ada50ed428"}, - {file = "orjson-3.10.15-cp39-cp39-win32.whl", hash = "sha256:a2f708c62d026fb5340788ba94a55c23df4e1869fec74be455e0b2f5363b8507"}, - {file = "orjson-3.10.15-cp39-cp39-win_amd64.whl", hash = "sha256:efcf6c735c3d22ef60c4aa27a5238f1a477df85e9b15f2142f9d669beb2d13fd"}, - {file = "orjson-3.10.15.tar.gz", hash = "sha256:05ca7fe452a2e9d8d9d706a2984c95b9c2ebc5db417ce0b7a49b91d50642a23e"}, -] - -[[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 = "pandas" -version = "2.2.2" -description = "Powerful data structures for data analysis, time series, and statistics" -optional = false -python-versions = ">=3.9" -files = [ - {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, - {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, - {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, - {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, - {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, - {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, - {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, - {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, - {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, - {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, - {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, - {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, - {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, - {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, - {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, - {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, - {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, - {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, - {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, - {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, - {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, - {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, - {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, -] - -[package.dependencies] -numpy = [ - {version = ">=1.22.4", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version == \"3.11\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, -] -python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.7" - -[package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] - -[[package]] -name = "pendulum" -version = "2.1.2" -description = "Python datetimes made easy" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "psutil" -version = "6.1.0" -description = "Cross-platform lib for process and system monitoring in Python." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, - {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, - {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, - {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, - {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, - {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, - {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, - {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, -] - -[package.extras] -dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] -test = ["pytest", "pytest-xdist", "setuptools"] - -[[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.10.5" -description = "Data validation using Python type hints" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic-2.10.5-py3-none-any.whl", hash = "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"}, - {file = "pydantic-2.10.5.tar.gz", hash = "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff"}, -] - -[package.dependencies] -annotated-types = ">=0.6.0" -pydantic-core = "2.27.2" -typing-extensions = ">=4.12.2" - -[package.extras] -email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] - -[[package]] -name = "pydantic-core" -version = "2.27.2" -description = "Core functionality for Pydantic validation and serialization" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, - {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" - -[[package]] -name = "pyjwt" -version = "2.10.1" -description = "JSON Web Token implementation in Python" -optional = false -python-versions = ">=3.9" -files = [ - {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, - {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, -] - -[package.extras] -crypto = ["cryptography (>=3.4.0)"] -dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"] -docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] -tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] - -[[package]] -name = "pyrate-limiter" -version = "3.1.1" -description = "Python Rate-Limiter using Leaky-Bucket Algorithm" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "pyrate_limiter-3.1.1-py3-none-any.whl", hash = "sha256:c51906f1d51d56dc992ff6c26e8300e32151bc6cfa3e6559792e31971dfd4e2b"}, - {file = "pyrate_limiter-3.1.1.tar.gz", hash = "sha256:2f57eda712687e6eccddf6afe8f8a15b409b97ed675fe64a626058f12863b7b7"}, -] - -[package.extras] -all = ["filelock (>=3.0)", "redis (>=5.0.0,<6.0.0)"] -docs = ["furo (>=2022.3.4,<2023.0.0)", "myst-parser (>=0.17)", "sphinx (>=4.3.0,<5.0.0)", "sphinx-autodoc-typehints (>=1.17,<2.0)", "sphinx-copybutton (>=0.5)", "sphinxcontrib-apidoc (>=0.3,<0.4)"] - -[[package]] -name = "pyrsistent" -version = "0.20.0" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyrsistent-0.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c3aba3e01235221e5b229a6c05f585f344734bd1ad42a8ac51493d74722bbce"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1beb78af5423b879edaf23c5591ff292cf7c33979734c99aa66d5914ead880f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cc459636983764e692b9eba7144cdd54fdec23ccdb1e8ba392a63666c60c34"}, - {file = "pyrsistent-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ac696f02b3fc01a710427585c855f65cd9c640e14f52abe52020722bb4906b"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win32.whl", hash = "sha256:0724c506cd8b63c69c7f883cc233aac948c1ea946ea95996ad8b1380c25e1d3f"}, - {file = "pyrsistent-0.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:8441cf9616d642c475684d6cf2520dd24812e996ba9af15e606df5f6fd9d04a7"}, - {file = "pyrsistent-0.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f3b1bcaa1f0629c978b355a7c37acd58907390149b7311b5db1b37648eb6958"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdd7ef1ea7a491ae70d826b6cc64868de09a1d5ff9ef8d574250d0940e275b8"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cae40a9e3ce178415040a0383f00e8d68b569e97f31928a3a8ad37e3fde6df6a"}, - {file = "pyrsistent-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6288b3fa6622ad8a91e6eb759cfc48ff3089e7c17fb1d4c59a919769314af224"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win32.whl", hash = "sha256:7d29c23bdf6e5438c755b941cef867ec2a4a172ceb9f50553b6ed70d50dfd656"}, - {file = "pyrsistent-0.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:59a89bccd615551391f3237e00006a26bcf98a4d18623a19909a2c48b8e986ee"}, - {file = "pyrsistent-0.20.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:09848306523a3aba463c4b49493a760e7a6ca52e4826aa100ee99d8d39b7ad1e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a14798c3005ec892bbada26485c2eea3b54109cb2533713e355c806891f63c5e"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14decb628fac50db5e02ee5a35a9c0772d20277824cfe845c8a8b717c15daa3"}, - {file = "pyrsistent-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e2c116cc804d9b09ce9814d17df5edf1df0c624aba3b43bc1ad90411487036d"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win32.whl", hash = "sha256:e78d0c7c1e99a4a45c99143900ea0546025e41bb59ebc10182e947cf1ece9174"}, - {file = "pyrsistent-0.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:4021a7f963d88ccd15b523787d18ed5e5269ce57aa4037146a2377ff607ae87d"}, - {file = "pyrsistent-0.20.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:79ed12ba79935adaac1664fd7e0e585a22caa539dfc9b7c7c6d5ebf91fb89054"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f920385a11207dc372a028b3f1e1038bb244b3ec38d448e6d8e43c6b3ba20e98"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5c2d012671b7391803263419e31b5c7c21e7c95c8760d7fc35602353dee714"}, - {file = "pyrsistent-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef3992833fbd686ee783590639f4b8343a57f1f75de8633749d984dc0eb16c86"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win32.whl", hash = "sha256:881bbea27bbd32d37eb24dd320a5e745a2a5b092a17f6debc1349252fac85423"}, - {file = "pyrsistent-0.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d270ec9dd33cdb13f4d62c95c1a5a50e6b7cdd86302b494217137f760495b9d"}, - {file = "pyrsistent-0.20.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca52d1ceae015859d16aded12584c59eb3825f7b50c6cfd621d4231a6cc624ce"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b318ca24db0f0518630e8b6f3831e9cba78f099ed5c1d65ffe3e023003043ba0"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fed2c3216a605dc9a6ea50c7e84c82906e3684c4e80d2908208f662a6cbf9022"}, - {file = "pyrsistent-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e14c95c16211d166f59c6611533d0dacce2e25de0f76e4c140fde250997b3ca"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win32.whl", hash = "sha256:f058a615031eea4ef94ead6456f5ec2026c19fb5bd6bfe86e9665c4158cf802f"}, - {file = "pyrsistent-0.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:58b8f6366e152092194ae68fefe18b9f0b4f89227dfd86a07770c3d86097aebf"}, - {file = "pyrsistent-0.20.0-py3-none-any.whl", hash = "sha256:c55acc4733aad6560a7f5f818466631f07efc001fd023f34a6c203f8b6df0f0b"}, - {file = "pyrsistent-0.20.0.tar.gz", hash = "sha256:4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"}, -] - -[[package]] -name = "pytest" -version = "8.3.4" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, - {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-mock" -version = "3.14.0" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, - {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, -] - -[package.dependencies] -pytest = ">=6.2.5" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "python-ulid" -version = "3.0.0" -description = "Universally unique lexicographically sortable identifier" -optional = false -python-versions = ">=3.9" -files = [ - {file = "python_ulid-3.0.0-py3-none-any.whl", hash = "sha256:e4c4942ff50dbd79167ad01ac725ec58f924b4018025ce22c858bfcff99a5e31"}, - {file = "python_ulid-3.0.0.tar.gz", hash = "sha256:e50296a47dc8209d28629a22fc81ca26c00982c78934bd7766377ba37ea49a9f"}, -] - -[package.extras] -pydantic = ["pydantic (>=2.0)"] - -[[package]] -name = "pytz" -version = "2024.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "regex" -version = "2024.11.6" -description = "Alternative regular expression module, to replace re." -optional = false -python-versions = ">=3.8" -files = [ - {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, - {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, - {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, - {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, - {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, - {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, - {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, - {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, - {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, - {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, - {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, - {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, - {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, - {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, - {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, - {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, - {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, - {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, - {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, - {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, - {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, - {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, - {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, - {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, - {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, - {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, - {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, - {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, - {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, - {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, - {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, -] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "requests-cache" -version = "1.2.1" -description = "A persistent cache for python requests" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603"}, - {file = "requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1"}, -] - -[package.dependencies] -attrs = ">=21.2" -cattrs = ">=22.2" -platformdirs = ">=2.5" -requests = ">=2.22" -url-normalize = ">=1.4" -urllib3 = ">=1.25.5" - -[package.extras] -all = ["boto3 (>=1.15)", "botocore (>=1.18)", "itsdangerous (>=2.0)", "pymongo (>=3)", "pyyaml (>=6.0.1)", "redis (>=3)", "ujson (>=5.4)"] -bson = ["bson (>=0.5)"] -docs = ["furo (>=2023.3,<2024.0)", "linkify-it-py (>=2.0,<3.0)", "myst-parser (>=1.0,<2.0)", "sphinx (>=5.0.2,<6.0.0)", "sphinx-autodoc-typehints (>=1.19)", "sphinx-automodapi (>=0.14)", "sphinx-copybutton (>=0.5)", "sphinx-design (>=0.2)", "sphinx-notfound-page (>=0.8)", "sphinxcontrib-apidoc (>=0.3)", "sphinxext-opengraph (>=0.9)"] -dynamodb = ["boto3 (>=1.15)", "botocore (>=1.18)"] -json = ["ujson (>=5.4)"] -mongodb = ["pymongo (>=3)"] -redis = ["redis (>=3)"] -security = ["itsdangerous (>=2.0)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "requests-mock" -version = "1.12.1" -description = "Mock out responses from the requests package" -optional = false -python-versions = ">=3.5" -files = [ - {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, - {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, -] - -[package.dependencies] -requests = ">=2.22,<3" - -[package.extras] -fixture = ["fixtures"] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - -[[package]] -name = "serpyco-rs" -version = "1.13.0" -description = "" -optional = false -python-versions = ">=3.9" -files = [ - {file = "serpyco_rs-1.13.0-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e722b3053e627d8a304e462bce20cae1670a2c4b0ef875b84d0de0081bec4029"}, - {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f10e89c752ff78d720a42e026b0a9ada70717ad6306a9356f794280167d62bf"}, - {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99db4ec6b36130d81f409e64759d9e26290138b1000b62f9f244117738aae652"}, - {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3265d4467a52540e7309d117c87a0fe97a9c942960159b37af55a164186e4885"}, - {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb10e547491d960064e5d935770f503c425b4ab7fc8c81e05b3c4b13bef195b3"}, - {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd38a763e9e23f69aad6ba78a8793b6eab9272b51ab01b36a9e3f6208f5c5525"}, - {file = "serpyco_rs-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d49d6d81739aa0b264e303e90bede58a6487cbc6a78019df5ab6059ea988cc"}, - {file = "serpyco_rs-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:cad636c425d942a8de63b4f0e5a8ff91382f36956c129a629bcfd499d8450de2"}, - {file = "serpyco_rs-1.13.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2b7ff9a0afc417958203bbb8f4f21ecc47307f6691542af27f61c086870d1c90"}, - {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657a765f588d23b02ba45b7d3fbe9d828f52eab30836408088abf08ebcbc1969"}, - {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c6ab6dfbb477745067871d896675d8c8d8d027d4b4bd36df8e6797caaaa169b"}, - {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:bf3292411b63c89ca1273717cee374c03dd64da044f297166362b7e8d26bb440"}, - {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e568e4bb6ffe51e7f428fe3aa37baa4a0cb52d27a64d7e9a5adfec56d3e8b1f"}, - {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16e6b53056de511e3d211e04e0006924e45591c8f68f2aaae024accf28a6127d"}, - {file = "serpyco_rs-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34ffe84bb8b5fb361499e1cd9b93b06081e5230b80713341be81793d1d590d9b"}, - {file = "serpyco_rs-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:5988d48f5df9558ea874e385b11b6cfc1dd434d5ed64eefb7762b203e74ce16c"}, - {file = "serpyco_rs-1.13.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e7a9d3eb0494984066b6b4d3b8eb25f69a599f401e8ede487efdb035547381b1"}, - {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47b519aaddc42b9d56a3a4760c74e4ef3a945e84eefbec96788f279efbd050d8"}, - {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e2b463c6b9e307a5fda3579aacb96468c37d14314e3a0070eda2f5789e4b4c6"}, - {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f659d8c058f223711d475dcae47adb033e3902591cbb1e5e1b17687ca15cd0bb"}, - {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9edc243fdb67a6bd51ec13c9a17cb0d608cfde9beb171ab5200e24045ab123f"}, - {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad0b85f02f52ea93f8bf068f0e00c8980702be00375b8888090723a21f35e2bc"}, - {file = "serpyco_rs-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9e49a1a2d6eb9b855b34ce6f27dcbfb6e0dbfa675b3e3f760178c059c9c1100"}, - {file = "serpyco_rs-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:915eb70006944a2819077bb706a1e5deb671f9ac0c963bb3b46073604837f7ff"}, - {file = "serpyco_rs-1.13.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:69502ad3c56e6fdb700a27059590cf548a5e1aa03519eef607fdf8f8b320eeed"}, - {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:324c6e3eec175cd8aabef071bcef763836fee94012b0b0819952224f9c7b855c"}, - {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2097cda3ccf641a3c05ff2aa1a0122f4c47ef4de8807fec816afb93cc6570ee5"}, - {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:54fbcd983b50a5ee294ea6d5b1c99c3f8063206660baec96bb4ab5dc211abe3e"}, - {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea9608615a24aae8e95f3ccb58aeec7767ad54e6b69edffc7a231b4d6236b83c"}, - {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12e4c07e35064a6827473d318e3f60bdf49d8cc2726e5283a51de5ab41a9cc25"}, - {file = "serpyco_rs-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fcbbe5c92d9517a2339a6c51f35c6eda8a0b5ed1a7e741feae960d07369459b"}, - {file = "serpyco_rs-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:11d430b894a2c003f103e1584b7ceb799235e4dcf109bc74e9937982ab8e48d6"}, - {file = "serpyco_rs-1.13.0-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:323c8f2615236d16dcd7995712fe63a77e6362c791890ced8af13b3b205bdbc8"}, - {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70527c919bb1560728340d62974beaa1ed050f9d33603270477e089fc90dcc53"}, - {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3944a6527ebfa736fc0f5d1841b01fdf9838260aa0f92d9a43ed33b455f911dd"}, - {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2ce9f0592490eb87de2b91700c06c5fd7ab5112ae471b88ded9252af06b28f2b"}, - {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23a4b801abeb3494a4832250f8a41648914d0fdc8817bc010a2bbb190aa55ca"}, - {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d57dd8dc10aa7a81d06c4eb2d523b5241047764a8fa65b94e716975b888d1d54"}, - {file = "serpyco_rs-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd96fc057c6cdc1336ab4e5072eb1710661464ae9b171950347c66c68e687d50"}, - {file = "serpyco_rs-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:94314ed652545eebdc90e83b671cf961ade881fdd0e1aa5579182d13050f8405"}, - {file = "serpyco_rs-1.13.0.tar.gz", hash = "sha256:981232323d2f195a0281b9beb735d5facfc919de6c65abd764cf908c7ad887fe"}, -] - -[package.dependencies] -attributes-doc = "*" -typing-extensions = "*" - -[[package]] -name = "setuptools" -version = "75.8.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.9" -files = [ - {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, - {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"] -core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"] - -[[package]] -name = "six" -version = "1.17.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, - {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - -[[package]] -name = "tenacity" -version = "8.5.0" -description = "Retry code until it succeeds" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, -] - -[package.extras] -doc = ["reno", "sphinx"] -test = ["pytest", "tornado (>=4.5)", "typeguard"] - -[[package]] -name = "tomli" -version = "2.2.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, -] - -[[package]] -name = "tqdm" -version = "4.67.1" -description = "Fast, Extensible Progress Meter" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, - {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] -discord = ["requests"] -notebook = ["ipywidgets (>=6)"] -slack = ["slack-sdk"] -telegram = ["requests"] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "tzdata" -version = "2025.1" -description = "Provider of IANA time zone data" -optional = false -python-versions = ">=2" -files = [ - {file = "tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"}, - {file = "tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694"}, -] - -[[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.3.0" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.9" -files = [ - {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, - {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, -] - -[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 = "10.0" -description = "Wildcard/glob file name matcher." -optional = false -python-versions = ">=3.8" -files = [ - {file = "wcmatch-10.0-py3-none-any.whl", hash = "sha256:0dd927072d03c0a6527a20d2e6ad5ba8d0380e60870c383bc533b71744df7b7a"}, - {file = "wcmatch-10.0.tar.gz", hash = "sha256:e72f0de09bba6a04e0de70937b0cf06e55f36f37b3deb422dfaf854b867b840a"}, -] - -[package.dependencies] -bracex = ">=2.1.1" - -[[package]] -name = "wrapt" -version = "1.17.2" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.8" -files = [ - {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, - {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, - {file = "wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7"}, - {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c"}, - {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72"}, - {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061"}, - {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2"}, - {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c"}, - {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62"}, - {file = "wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563"}, - {file = "wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f"}, - {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58"}, - {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda"}, - {file = "wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438"}, - {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a"}, - {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000"}, - {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6"}, - {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b"}, - {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662"}, - {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72"}, - {file = "wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317"}, - {file = "wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3"}, - {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925"}, - {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392"}, - {file = "wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40"}, - {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d"}, - {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b"}, - {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98"}, - {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82"}, - {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae"}, - {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9"}, - {file = "wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9"}, - {file = "wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991"}, - {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125"}, - {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998"}, - {file = "wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5"}, - {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8"}, - {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6"}, - {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc"}, - {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2"}, - {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b"}, - {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504"}, - {file = "wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a"}, - {file = "wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845"}, - {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192"}, - {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b"}, - {file = "wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0"}, - {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306"}, - {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb"}, - {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681"}, - {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6"}, - {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6"}, - {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f"}, - {file = "wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555"}, - {file = "wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c"}, - {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9"}, - {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119"}, - {file = "wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6"}, - {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9"}, - {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a"}, - {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2"}, - {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a"}, - {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04"}, - {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f"}, - {file = "wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7"}, - {file = "wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3"}, - {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a"}, - {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061"}, - {file = "wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82"}, - {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9"}, - {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f"}, - {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b"}, - {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f"}, - {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8"}, - {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9"}, - {file = "wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb"}, - {file = "wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb"}, - {file = "wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8"}, - {file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"}, -] - -[[package]] -name = "xmltodict" -version = "0.13.0" -description = "Makes working with XML feel like you are working with JSON" -optional = false -python-versions = ">=3.4" -files = [ - {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, - {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "75386c20f11ce58b7f4e7cc39d25dd4956c88b8761682b3efa3224feff96003a" diff --git a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml b/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml deleted file mode 100644 index 7d1c086381f9a..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[build-system] -requires = [ "poetry-core>=1.0.0",] -build-backend = "poetry.core.masonry.api" - -[tool.poetry] -version = "0.2.0" -name = "source-youtube-analytics" -description = "Source implementation for Youtube Analytics." -authors = [ "Airbyte ",] -license = "MIT" -readme = "README.md" -documentation = "https://docs.airbyte.com/integrations/sources/youtube-analytics" -homepage = "https://airbyte.com" -repository = "https://github.com/airbytehq/airbyte" -[[tool.poetry.packages]] -include = "source_youtube_analytics" - -[tool.poetry.dependencies] -python = "^3.10" -airbyte-cdk = "^6" - -[tool.poetry.scripts] -source-youtube-analytics = "source_youtube_analytics.run:run" - -[tool.poetry.group.dev.dependencies] -requests-mock = "*" -pytest-mock = "*" -pytest = "*" \ No newline at end of file diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py deleted file mode 100644 index 6970981cc59e5..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -# Copyright (c) 2021 Airbyte, Inc., all rights reserved. -# - - -from .source import SourceYoutubeAnalytics - -__all__ = ["SourceYoutubeAnalytics"] diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/defaults/channel_reports.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/defaults/channel_reports.json deleted file mode 100644 index 23a8c483d6f96..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/defaults/channel_reports.json +++ /dev/null @@ -1,274 +0,0 @@ -[ - { - "id": "channel_annotations_a1", - "name": "Annotations", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "annotation_type", - "annotation_id" - ], - "metrics": [] - }, - { - "id": "channel_basic_a2", - "name": "User activity", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code" - ], - "metrics": [] - }, - { - "id": "channel_cards_a1", - "name": "Cards", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "card_type", - "card_id" - ], - "metrics": [] - }, - { - "id": "channel_combined_a2", - "name": "Combined", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "playback_location_type", - "traffic_source_type", - "device_type", - "operating_system" - ], - "metrics": [] - }, - { - "id": "channel_demographics_a1", - "name": "Demographics", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "age_group", - "gender" - ], - "metrics": [] - }, - { - "id": "channel_device_os_a2", - "name": "Device and OS", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "device_type", - "operating_system" - ], - "metrics": [] - }, - { - "id": "channel_end_screens_a1", - "name": "End screens", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "end_screen_element_type", - "end_screen_element_id" - ], - "metrics": [] - }, - { - "id": "channel_playback_location_a2", - "name": "Playback locations", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "playback_location_type", - "playback_location_detail" - ], - "metrics": [] - }, - { - "id": "channel_province_a2", - "name": "Province", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "province_code" - ], - "metrics": [] - }, - { - "id": "channel_sharing_service_a1", - "name": "Sharing service", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "sharing_service" - ], - "metrics": [] - }, - { - "id": "channel_subtitles_a2", - "name": "Subtitles", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "subtitle_language" - ], - "metrics": [] - }, - { - "id": "channel_traffic_source_a2", - "name": "Traffic sources", - "dimensions": [ - "date", - "channel_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "traffic_source_type", - "traffic_source_detail" - ], - "metrics": [] - }, - { - "id": "playlist_basic_a1", - "name": "Playlist user activity", - "dimensions": [ - "date", - "channel_id", - "playlist_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code" - ], - "metrics": [] - }, - { - "id": "playlist_combined_a1", - "name": "Playlist combined", - "dimensions": [ - "date", - "channel_id", - "playlist_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "playback_location_type", - "traffic_source_type", - "device_type", - "operating_system" - ], - "metrics": [] - }, - { - "id": "playlist_device_os_a1", - "name": "Playlist device and OS", - "dimensions": [ - "date", - "channel_id", - "playlist_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "device_type", - "operating_system" - ], - "metrics": [] - }, - { - "id": "playlist_playback_location_a1", - "name": "Playlist playback locations", - "dimensions": [ - "date", - "channel_id", - "playlist_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "playback_location_type", - "playback_location_detail" - ], - "metrics": [] - }, - { - "id": "playlist_province_a1", - "name": "Playlist province", - "dimensions": [ - "date", - "channel_id", - "playlist_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "province_code" - ], - "metrics": [] - }, - { - "id": "playlist_traffic_source_a1", - "name": "Playlist traffic sources", - "dimensions": [ - "date", - "channel_id", - "playlist_id", - "video_id", - "live_or_on_demand", - "subscribed_status", - "country_code", - "traffic_source_type", - "traffic_source_detail" - ], - "metrics": [] - } -] diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml deleted file mode 100644 index cf3f39ccafbaa..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/manifest.yaml +++ /dev/null @@ -1,981 +0,0 @@ -version: 4.3.2 - -type: DeclarativeSource - -check: - type: CheckStream - stream_names: - - channel_annotations_a1 - -definitions: - base_stream: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - class_name: source_youtube_analytics.components.CreationRequester - $ref: "#/definitions/base_requester" - path: jobs - http_method: POST - polling_requester: - type: CustomRequester - class_name: source_youtube_analytics.components.PollingRequester - $ref: "#/definitions/base_requester" - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - $ref: "#/definitions/base_requester" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - - streams: - channel_annotations_a1: - $ref: "#/definitions/base_stream" - name: channel_annotations_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - annotation_type - - annotation_id - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_annotations_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_annotations_a1" - channel_basic_a2: - $ref: "#/definitions/base_stream" - name: channel_basic_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_basic_a2 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_basic_a2" - channel_cards_a1: - $ref: "#/definitions/base_stream" - name: channel_cards_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - card_type - - card_id - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_cards_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_cards_a1" - channel_combined_a2: - $ref: "#/definitions/base_stream" - name: channel_combined_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - traffic_source_type - - device_type - - operating_system - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_combined_a2 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_combined_a2" - channel_demographics_a1: - $ref: "#/definitions/base_stream" - name: channel_demographics_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - age_group - - gender - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_demographics_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_demographics_a1" - channel_device_os_a2: - $ref: "#/definitions/base_stream" - name: channel_device_os_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - device_type - - operating_system - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_device_os_a2 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_device_os_a2" - channel_end_screens_a1: - $ref: "#/definitions/base_stream" - name: channel_end_screens_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - end_screen_element_type - - end_screen_element_id - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_end_screens_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_end_screens_a1" - channel_playback_location_a2: - $ref: "#/definitions/base_stream" - name: channel_playback_location_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - playback_location_detail - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_playback_location_a2 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_playback_location_a2" - channel_province_a2: - $ref: "#/definitions/base_stream" - name: channel_province_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - province_code - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_province_a2 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_province_a2" - channel_sharing_service_a1: - $ref: "#/definitions/base_stream" - name: channel_sharing_service_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - sharing_service - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_sharing_service_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_sharing_service_a1" - channel_subtitles_a2: - $ref: "#/definitions/base_stream" - name: channel_subtitles_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - subtitle_language - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_subtitles_a2 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_subtitles_a2" - channel_traffic_source_a2: - $ref: "#/definitions/base_stream" - name: channel_traffic_source_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - traffic_source_type - - traffic_source_detail - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_traffic_source_a2 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/channel_traffic_source_a2" - playlist_basic_a1: - $ref: "#/definitions/base_stream" - name: playlist_basic_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_basic_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/playlist_basic_a1" - playlist_combined_a1: - $ref: "#/definitions/base_stream" - name: playlist_combined_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - traffic_source_type - - device_type - - operating_system - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_combined_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/playlist_combined_a1" - playlist_device_os_a1: - $ref: "#/definitions/base_stream" - name: playlist_device_os_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - device_type - - operating_system - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_device_os_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/playlist_device_os_a1" - playlist_playback_location_a1: - $ref: "#/definitions/base_stream" - name: playlist_playback_location_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - playback_location_detail - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_playback_location_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/playlist_playback_location_a1" - playlist_province_a1: - $ref: "#/definitions/base_stream" - name: playlist_province_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - province_code - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_province_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/playlist_province_a1" - playlist_traffic_source_a1: - $ref: "#/definitions/base_stream" - name: playlist_traffic_source_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - traffic_source_type - - traffic_source_detail - retriever: - $ref: "#/definitions/base_stream/retriever" - creation_requester: - $ref: "#/definitions/base_stream/retriever/creation_requester" - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_traffic_source_a1 - schema_loader: - type: InlineSchemaLoader - schema: - $ref: "#/schemas/playlist_traffic_source_a1" - - base_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - -streams: - - $ref: "#/definitions/streams/channel_annotations_a1" - - $ref: "#/definitions/streams/channel_basic_a2" - - $ref: "#/definitions/streams/channel_cards_a1" - - $ref: "#/definitions/streams/channel_combined_a2" - - $ref: "#/definitions/streams/channel_demographics_a1" - - $ref: "#/definitions/streams/channel_device_os_a2" - - $ref: "#/definitions/streams/channel_end_screens_a1" - - $ref: "#/definitions/streams/channel_playback_location_a2" - - $ref: "#/definitions/streams/channel_province_a2" - - $ref: "#/definitions/streams/channel_sharing_service_a1" - - $ref: "#/definitions/streams/channel_subtitles_a2" - - $ref: "#/definitions/streams/channel_traffic_source_a2" - - $ref: "#/definitions/streams/playlist_basic_a1" - - $ref: "#/definitions/streams/playlist_combined_a1" - - $ref: "#/definitions/streams/playlist_device_os_a1" - - $ref: "#/definitions/streams/playlist_playback_location_a1" - - $ref: "#/definitions/streams/playlist_province_a1" - - $ref: "#/definitions/streams/playlist_traffic_source_a1" - -spec: - type: Spec - documentationUrl: https://docs.airbyte.com/integrations/sources/youtube-analytics - connection_specification: - type: object - $schema: http://json-schema.org/draft-07/schema# - title: YouTube Analytics Spec - required: - - credentials - additionalProperties: true - properties: - credentials: - type: object - title: Authenticate via OAuth 2.0 - required: - - client_id - - client_secret - - refresh_token - additionalProperties: true - properties: - client_id: - type: string - description: The Client ID of your developer application - title: Client ID - airbyte_secret: true - client_secret: - type: string - description: The client secret of your developer application - title: Client Secret - airbyte_secret: true - refresh_token: - type: string - description: A refresh token generated using the above client ID and secret - title: Refresh Token - airbyte_secret: true - advanced_auth: - auth_flow_type: oauth2.0 - oauth_config_specification: - complete_oauth_output_specification: - type: object - additionalProperties: true - properties: - refresh_token: - type: string - path_in_connector_config: - - credentials - - refresh_token - complete_oauth_server_input_specification: - type: object - additionalProperties: true - properties: - client_id: - type: string - client_secret: - type: string - complete_oauth_server_output_specification: - type: object - additionalProperties: true - properties: - client_id: - type: string - path_in_connector_config: - - credentials - - client_id - client_secret: - type: string - path_in_connector_config: - - credentials - - client_secret - -schemas: - channel_annotations_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "annotation_type": { "type": ["null", "string"] }, - "annotation_id": { "type": ["null", "string"] }, - "annotation_impressions": { "type": ["null", "string"] }, - "annotation_clickable_impressions": { "type": ["null", "string"] }, - "annotation_clicks": { "type": ["null", "string"] }, - "annotation_click_through_rate": { "type": ["null", "string"] }, - "annotation_closable_impressions": { "type": ["null", "string"] }, - "annotation_closes": { "type": ["null", "string"] }, - "annotation_close_rate": { "type": ["null", "string"] }, - } - channel_basic_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "views": { "type": ["null", "integer"] }, - "comments": { "type": ["null", "integer"] }, - "likes": { "type": ["null", "integer"] }, - "dislikes": { "type": ["null", "integer"] }, - "shares": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "average_view_duration_percentage": { "type": ["null", "number"] }, - "annotation_impressions": { "type": ["null", "integer"] }, - "annotation_clickable_impressions": { "type": ["null", "integer"] }, - "annotation_clicks": { "type": ["null", "integer"] }, - "annotation_click_through_rate": { "type": ["null", "number"] }, - "annotation_closable_impressions": { "type": ["null", "integer"] }, - "annotation_closes": { "type": ["null", "integer"] }, - "annotation_close_rate": { "type": ["null", "number"] }, - "card_teaser_impressions": { "type": ["null", "integer"] }, - "card_teaser_clicks": { "type": ["null", "integer"] }, - "card_teaser_click_rate": { "type": ["null", "number"] }, - "card_impressions": { "type": ["null", "integer"] }, - "card_clicks": { "type": ["null", "integer"] }, - "card_click_rate": { "type": ["null", "number"] }, - "subscribers_gained": { "type": ["null", "integer"] }, - "subscribers_lost": { "type": ["null", "integer"] }, - "videos_added_to_playlists": { "type": ["null", "integer"] }, - "videos_removed_from_playlists": { "type": ["null", "integer"] }, - "red_views": { "type": ["null", "integer"] }, - "red_watch_time_minutes": { "type": ["null", "number"] }, - } - channel_cards_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "card_type": { "type": ["null", "string"] }, - "card_id": { "type": ["null", "string"] }, - "card_teaser_impressions": { "type": ["null", "string"] }, - "card_teaser_clicks": { "type": ["null", "string"] }, - "card_teaser_click_rate": { "type": ["null", "string"] }, - "card_impressions": { "type": ["null", "string"] }, - "card_clicks": { "type": ["null", "string"] }, - "card_click_rate": { "type": ["null", "string"] }, - } - channel_combined_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "playback_location_type": { "type": ["null", "integer"] }, - "traffic_source_type": { "type": ["null", "integer"] }, - "device_type": { "type": ["null", "integer"] }, - "operating_system": { "type": ["null", "integer"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "average_view_duration_percentage": { "type": ["null", "number"] }, - "red_views": { "type": ["null", "integer"] }, - "red_watch_time_minutes": { "type": ["null", "number"] }, - } - channel_demographics_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "age_group": { "type": ["null", "string"] }, - "gender": { "type": ["null", "string"] }, - "views_percentage": { "type": ["null", "string"] }, - } - channel_device_os_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "device_type": { "type": ["null", "integer"] }, - "operating_system": { "type": ["null", "integer"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "average_view_duration_percentage": { "type": ["null", "number"] }, - "red_views": { "type": ["null", "integer"] }, - "red_watch_time_minutes": { "type": ["null", "number"] }, - } - channel_end_screens_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "end_screen_element_type": { "type": ["null", "string"] }, - "end_screen_element_id": { "type": ["null", "string"] }, - "end_screen_element_clicks": { "type": ["null", "string"] }, - "end_screen_element_impressions": { "type": ["null", "string"] }, - "end_screen_element_click_rate": { "type": ["null", "string"] }, - } - channel_playback_location_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "playback_location_type": { "type": ["null", "integer"] }, - "playback_location_detail": { "type": ["null", "string"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "average_view_duration_percentage": { "type": ["null", "number"] }, - "red_views": { "type": ["null", "integer"] }, - "red_watch_time_minutes": { "type": ["null", "number"] }, - } - channel_province_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "province_code": { "type": ["null", "string"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "average_view_duration_percentage": { "type": ["null", "number"] }, - "annotation_click_through_rate": { "type": ["null", "integer"] }, - "annotation_close_rate": { "type": ["null", "integer"] }, - "annotation_impressions": { "type": ["null", "integer"] }, - "annotation_clickable_impressions": { "type": ["null", "integer"] }, - "annotation_closable_impressions": { "type": ["null", "integer"] }, - "annotation_clicks": { "type": ["null", "integer"] }, - "annotation_closes": { "type": ["null", "integer"] }, - "card_click_rate": { "type": ["null", "integer"] }, - "card_teaser_click_rate": { "type": ["null", "integer"] }, - "card_impressions": { "type": ["null", "integer"] }, - "card_teaser_impressions": { "type": ["null", "integer"] }, - "card_clicks": { "type": ["null", "integer"] }, - "card_teaser_clicks": { "type": ["null", "integer"] }, - "red_views": { "type": ["null", "integer"] }, - "red_watch_time_minutes": { "type": ["null", "number"] }, - } - channel_sharing_service_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "sharing_service": { "type": ["null", "string"] }, - "shares": { "type": ["null", "string"] }, - } - channel_subtitles_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "subtitle_language": { "type": ["null", "string"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "average_view_duration_percentage": { "type": ["null", "number"] }, - "red_views": { "type": ["null", "integer"] }, - "red_watch_time_minutes": { "type": ["null", "number"] }, - } - channel_traffic_source_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "traffic_source_type": { "type": ["null", "integer"] }, - "traffic_source_detail": { "type": ["null", "string"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "average_view_duration_percentage": { "type": ["null", "number"] }, - "red_views": { "type": ["null", "integer"] }, - "red_watch_time_minutes": { "type": ["null", "number"] }, - } - playlist_basic_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "playlist_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "playlist_starts": { "type": ["null", "integer"] }, - "playlist_saves_added": { "type": ["null", "integer"] }, - "playlist_saves_removed": { "type": ["null", "integer"] }, - } - playlist_combined_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "playlist_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "playback_location_type": { "type": ["null", "integer"] }, - "traffic_source_type": { "type": ["null", "integer"] }, - "device_type": { "type": ["null", "integer"] }, - "operating_system": { "type": ["null", "integer"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "playlist_starts": { "type": ["null", "integer"] }, - "playlist_saves_added": { "type": ["null", "integer"] }, - "playlist_saves_removed": { "type": ["null", "integer"] }, - } - playlist_device_os_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "playlist_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "device_type": { "type": ["null", "integer"] }, - "operating_system": { "type": ["null", "integer"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "playlist_starts": { "type": ["null", "integer"] }, - "playlist_saves_added": { "type": ["null", "integer"] }, - "playlist_saves_removed": { "type": ["null", "integer"] }, - } - playlist_playback_location_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "playlist_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "playback_location_type": { "type": ["null", "integer"] }, - "playback_location_detail": { "type": ["null", "string"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "playlist_starts": { "type": ["null", "integer"] }, - "playlist_saves_added": { "type": ["null", "integer"] }, - "playlist_saves_removed": { "type": ["null", "integer"] }, - } - playlist_province_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "playlist_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "province_code": { "type": ["null", "string"] }, - "views": { "type": ["null", "string"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "playlist_starts": { "type": ["null", "string"] }, - "playlist_saves_added": { "type": ["null", "string"] }, - "playlist_saves_removed": { "type": ["null", "string"] }, - } - playlist_traffic_source_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - { - "date": { "type": "integer" }, - "channel_id": { "type": ["null", "string"] }, - "playlist_id": { "type": ["null", "string"] }, - "video_id": { "type": ["null", "string"] }, - "live_or_on_demand": { "type": ["null", "string"] }, - "subscribed_status": { "type": ["null", "string"] }, - "country_code": { "type": ["null", "string"] }, - "traffic_source_type": { "type": ["null", "integer"] }, - "traffic_source_detail": { "type": ["null", "string"] }, - "views": { "type": ["null", "integer"] }, - "watch_time_minutes": { "type": ["null", "number"] }, - "average_view_duration_seconds": { "type": ["null", "number"] }, - "playlist_starts": { "type": ["null", "integer"] }, - "playlist_saves_added": { "type": ["null", "integer"] }, - "playlist_saves_removed": { "type": ["null", "integer"] }, - } diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py deleted file mode 100644 index 8139e0561dd68..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/run.py +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - - -import sys - -from source_youtube_analytics import SourceYoutubeAnalytics - -from airbyte_cdk.entrypoint import launch - - -def run(): - source = SourceYoutubeAnalytics() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_annotations_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_annotations_a1.json deleted file mode 100644 index 7d44a378504c0..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_annotations_a1.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "annotation_type": { - "type": ["null", "string"] - }, - "annotation_id": { - "type": ["null", "string"] - }, - "annotation_impressions": { - "type": ["null", "string"] - }, - "annotation_clickable_impressions": { - "type": ["null", "string"] - }, - "annotation_clicks": { - "type": ["null", "string"] - }, - "annotation_click_through_rate": { - "type": ["null", "string"] - }, - "annotation_closable_impressions": { - "type": ["null", "string"] - }, - "annotation_closes": { - "type": ["null", "string"] - }, - "annotation_close_rate": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_basic_a2.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_basic_a2.json deleted file mode 100644 index 98e09cf869b3d..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_basic_a2.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "integer"] - }, - "comments": { - "type": ["null", "integer"] - }, - "likes": { - "type": ["null", "integer"] - }, - "dislikes": { - "type": ["null", "integer"] - }, - "shares": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "average_view_duration_percentage": { - "type": ["null", "number"] - }, - "annotation_impressions": { - "type": ["null", "integer"] - }, - "annotation_clickable_impressions": { - "type": ["null", "integer"] - }, - "annotation_clicks": { - "type": ["null", "integer"] - }, - "annotation_click_through_rate": { - "type": ["null", "number"] - }, - "annotation_closable_impressions": { - "type": ["null", "integer"] - }, - "annotation_closes": { - "type": ["null", "integer"] - }, - "annotation_close_rate": { - "type": ["null", "number"] - }, - "card_teaser_impressions": { - "type": ["null", "integer"] - }, - "card_teaser_clicks": { - "type": ["null", "integer"] - }, - "card_teaser_click_rate": { - "type": ["null", "number"] - }, - "card_impressions": { - "type": ["null", "integer"] - }, - "card_clicks": { - "type": ["null", "integer"] - }, - "card_click_rate": { - "type": ["null", "number"] - }, - "subscribers_gained": { - "type": ["null", "integer"] - }, - "subscribers_lost": { - "type": ["null", "integer"] - }, - "videos_added_to_playlists": { - "type": ["null", "integer"] - }, - "videos_removed_from_playlists": { - "type": ["null", "integer"] - }, - "red_views": { - "type": ["null", "integer"] - }, - "red_watch_time_minutes": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_cards_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_cards_a1.json deleted file mode 100644 index 25a8fae12135a..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_cards_a1.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "card_type": { - "type": ["null", "string"] - }, - "card_id": { - "type": ["null", "string"] - }, - "card_teaser_impressions": { - "type": ["null", "string"] - }, - "card_teaser_clicks": { - "type": ["null", "string"] - }, - "card_teaser_click_rate": { - "type": ["null", "string"] - }, - "card_impressions": { - "type": ["null", "string"] - }, - "card_clicks": { - "type": ["null", "string"] - }, - "card_click_rate": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_combined_a2.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_combined_a2.json deleted file mode 100644 index 08b81fee2eb1b..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_combined_a2.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "playback_location_type": { - "type": ["null", "integer"] - }, - "traffic_source_type": { - "type": ["null", "integer"] - }, - "device_type": { - "type": ["null", "integer"] - }, - "operating_system": { - "type": ["null", "integer"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "average_view_duration_percentage": { - "type": ["null", "number"] - }, - "red_views": { - "type": ["null", "integer"] - }, - "red_watch_time_minutes": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_demographics_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_demographics_a1.json deleted file mode 100644 index 78ed6aacc97d1..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_demographics_a1.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "age_group": { - "type": ["null", "string"] - }, - "gender": { - "type": ["null", "string"] - }, - "views_percentage": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_device_os_a2.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_device_os_a2.json deleted file mode 100644 index c589e6ade85e0..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_device_os_a2.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "device_type": { - "type": ["null", "integer"] - }, - "operating_system": { - "type": ["null", "integer"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "average_view_duration_percentage": { - "type": ["null", "number"] - }, - "red_views": { - "type": ["null", "integer"] - }, - "red_watch_time_minutes": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_end_screens_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_end_screens_a1.json deleted file mode 100644 index 398b81005f872..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_end_screens_a1.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "end_screen_element_type": { - "type": ["null", "string"] - }, - "end_screen_element_id": { - "type": ["null", "string"] - }, - "end_screen_element_clicks": { - "type": ["null", "string"] - }, - "end_screen_element_impressions": { - "type": ["null", "string"] - }, - "end_screen_element_click_rate": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_playback_location_a2.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_playback_location_a2.json deleted file mode 100644 index f3ec4a981964b..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_playback_location_a2.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "playback_location_type": { - "type": ["null", "integer"] - }, - "playback_location_detail": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "average_view_duration_percentage": { - "type": ["null", "number"] - }, - "red_views": { - "type": ["null", "integer"] - }, - "red_watch_time_minutes": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_province_a2.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_province_a2.json deleted file mode 100644 index 31b1164852043..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_province_a2.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "province_code": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "average_view_duration_percentage": { - "type": ["null", "number"] - }, - "annotation_click_through_rate": { - "type": ["null", "integer"] - }, - "annotation_close_rate": { - "type": ["null", "integer"] - }, - "annotation_impressions": { - "type": ["null", "integer"] - }, - "annotation_clickable_impressions": { - "type": ["null", "integer"] - }, - "annotation_closable_impressions": { - "type": ["null", "integer"] - }, - "annotation_clicks": { - "type": ["null", "integer"] - }, - "annotation_closes": { - "type": ["null", "integer"] - }, - "card_click_rate": { - "type": ["null", "integer"] - }, - "card_teaser_click_rate": { - "type": ["null", "integer"] - }, - "card_impressions": { - "type": ["null", "integer"] - }, - "card_teaser_impressions": { - "type": ["null", "integer"] - }, - "card_clicks": { - "type": ["null", "integer"] - }, - "card_teaser_clicks": { - "type": ["null", "integer"] - }, - "red_views": { - "type": ["null", "integer"] - }, - "red_watch_time_minutes": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_sharing_service_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_sharing_service_a1.json deleted file mode 100644 index 70b9bd150b7fd..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_sharing_service_a1.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "sharing_service": { - "type": ["null", "string"] - }, - "shares": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_subtitles_a2.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_subtitles_a2.json deleted file mode 100644 index d189c49b2e8c6..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_subtitles_a2.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "subtitle_language": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "average_view_duration_percentage": { - "type": ["null", "number"] - }, - "red_views": { - "type": ["null", "integer"] - }, - "red_watch_time_minutes": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_traffic_source_a2.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_traffic_source_a2.json deleted file mode 100644 index 077e0585c5302..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/channel_traffic_source_a2.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "traffic_source_type": { - "type": ["null", "integer"] - }, - "traffic_source_detail": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "average_view_duration_percentage": { - "type": ["null", "number"] - }, - "red_views": { - "type": ["null", "integer"] - }, - "red_watch_time_minutes": { - "type": ["null", "number"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_basic_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_basic_a1.json deleted file mode 100644 index d2fc5834aaceb..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_basic_a1.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "playlist_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "playlist_starts": { - "type": ["null", "integer"] - }, - "playlist_saves_added": { - "type": ["null", "integer"] - }, - "playlist_saves_removed": { - "type": ["null", "integer"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_combined_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_combined_a1.json deleted file mode 100644 index cdd3292cd9812..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_combined_a1.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "playlist_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "playback_location_type": { - "type": ["null", "integer"] - }, - "traffic_source_type": { - "type": ["null", "integer"] - }, - "device_type": { - "type": ["null", "integer"] - }, - "operating_system": { - "type": ["null", "integer"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "playlist_starts": { - "type": ["null", "integer"] - }, - "playlist_saves_added": { - "type": ["null", "integer"] - }, - "playlist_saves_removed": { - "type": ["null", "integer"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_device_os_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_device_os_a1.json deleted file mode 100644 index 383957aa165de..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_device_os_a1.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "playlist_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "device_type": { - "type": ["null", "integer"] - }, - "operating_system": { - "type": ["null", "integer"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "playlist_starts": { - "type": ["null", "integer"] - }, - "playlist_saves_added": { - "type": ["null", "integer"] - }, - "playlist_saves_removed": { - "type": ["null", "integer"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_playback_location_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_playback_location_a1.json deleted file mode 100644 index 5ce825fab94b2..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_playback_location_a1.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "playlist_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "playback_location_type": { - "type": ["null", "integer"] - }, - "playback_location_detail": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "playlist_starts": { - "type": ["null", "integer"] - }, - "playlist_saves_added": { - "type": ["null", "integer"] - }, - "playlist_saves_removed": { - "type": ["null", "integer"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_province_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_province_a1.json deleted file mode 100644 index 2d77f0d13fd12..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_province_a1.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "playlist_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "province_code": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "string"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "playlist_starts": { - "type": ["null", "string"] - }, - "playlist_saves_added": { - "type": ["null", "string"] - }, - "playlist_saves_removed": { - "type": ["null", "string"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_traffic_source_a1.json b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_traffic_source_a1.json deleted file mode 100644 index 3c6a1ab476ed7..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/schemas/playlist_traffic_source_a1.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "date": { - "type": "integer" - }, - "channel_id": { - "type": ["null", "string"] - }, - "playlist_id": { - "type": ["null", "string"] - }, - "video_id": { - "type": ["null", "string"] - }, - "live_or_on_demand": { - "type": ["null", "string"] - }, - "subscribed_status": { - "type": ["null", "string"] - }, - "country_code": { - "type": ["null", "string"] - }, - "traffic_source_type": { - "type": ["null", "integer"] - }, - "traffic_source_detail": { - "type": ["null", "string"] - }, - "views": { - "type": ["null", "integer"] - }, - "watch_time_minutes": { - "type": ["null", "number"] - }, - "average_view_duration_seconds": { - "type": ["null", "number"] - }, - "playlist_starts": { - "type": ["null", "integer"] - }, - "playlist_saves_added": { - "type": ["null", "integer"] - }, - "playlist_saves_removed": { - "type": ["null", "integer"] - } - } -} diff --git a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py b/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py deleted file mode 100644 index 7cc7717914fc4..0000000000000 --- a/airbyte-integrations/connectors/source-youtube-analytics/source_youtube_analytics/source.py +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (c) 2024 Airbyte, Inc., all rights reserved. -# - -from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource - - -""" -This file provides the necessary constructs to interpret a provided declarative YAML configuration file into -source connector. - -WARNING: Do not modify this file. -""" - - -# Declarative Source -class SourceYoutubeAnalytics(YamlDeclarativeSource): - def __init__(self): - super().__init__(**{"path_to_yaml": "manifest.yaml"}) From 223ffd282a4005ad963c67e96c79282997b9d5c5 Mon Sep 17 00:00:00 2001 From: Octavia Squidington III Date: Sat, 25 Jan 2025 10:25:24 +0000 Subject: [PATCH 17/19] chore: auto-fix lint and format issues --- .../connectors/source-youtube-analytics/metadata.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml b/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml index eef1bb6f36893..9859299e06bc2 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/metadata.yaml @@ -38,6 +38,5 @@ data: type: GSM alias: airbyte-connector-testing-secret-store connectorBuildOptions: - baseImage: - docker.io/airbyte/source-declarative-manifest:6.27.0@sha256:ffc5f087448ef40fd1ef8fe0fc660b16621be7c1e8ecfccd44002136b06c6efb + baseImage: docker.io/airbyte/source-declarative-manifest:6.27.0@sha256:ffc5f087448ef40fd1ef8fe0fc660b16621be7c1e8ecfccd44002136b06c6efb metadataSpecVersion: "1.0" From 21402a94487938e1361ebfa6a46891b7db44f75b Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Sat, 25 Jan 2025 22:52:41 +0100 Subject: [PATCH 18/19] fix manfest --- .../source-youtube-analytics/manifest.yaml | 9335 +++++------------ 1 file changed, 2626 insertions(+), 6709 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml index 5bd37c1350f29..67eb31a879891 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml @@ -1,12 +1,14 @@ version: 5.15.0 + type: DeclarativeSource + check: type: CheckStream stream_names: - - channel_annotations_a1 -definitions: - base_stream: - type: DeclarativeStream + - channel_annotations_a1 + +streams: + - type: DeclarativeStream retriever: type: AsyncRetriever creation_requester: @@ -22,10 +24,13 @@ definitions: token_refresh_endpoint: https://oauth2.googleapis.com/token error_handlers: type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester path: jobs http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_annotations_a1 polling_requester: type: CustomRequester url_base: https://youtubereporting.googleapis.com/v1/ @@ -39,8 +44,8 @@ definitions: token_refresh_endpoint: https://oauth2.googleapis.com/token error_handlers: type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester path: jobs http_method: GET status_extractor: @@ -73,7 +78,7 @@ definitions: token_refresh_endpoint: https://oauth2.googleapis.com/token error_handlers: type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" path: "{{stream_slice.extra_fields['downloadUrl']}}" http_method: GET decoder: @@ -83,90 +88,8 @@ definitions: extractor: type: DpathExtractor field_path: [] - streams: - channel_annotations_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_annotations_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_annotations_a1 - primary_key: + name: channel_annotations_a1 + primary_key: - date - channel_id - video_id @@ -175,380 +98,378 @@ definitions: - country_code - annotation_type - annotation_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "annotation_type": - "type": - - "null" - - "string" - "annotation_id": - "type": - - "null" - - "string" - "annotation_impressions": - "type": - - "null" - - "string" - "annotation_clickable_impressions": - "type": - - "null" - - "string" - "annotation_clicks": - "type": - - "null" - - "string" - "annotation_click_through_rate": - "type": - - "null" - - "string" - "annotation_closable_impressions": - "type": - - "null" - - "string" - "annotation_closes": - "type": - - "null" - - "string" - "annotation_close_rate": - "type": - - "null" - - "string" - channel_basic_a2: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_basic_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "annotation_type": + "type": + - "null" + - "string" + "annotation_id": + "type": + - "null" + - "string" + "annotation_impressions": + "type": + - "null" + - "string" + "annotation_clickable_impressions": + "type": + - "null" + - "string" + "annotation_clicks": + "type": + - "null" + - "string" + "annotation_click_through_rate": + "type": + - "null" + - "string" + "annotation_closable_impressions": + "type": + - "null" + - "string" + "annotation_closes": + "type": + - "null" + - "string" + "annotation_close_rate": + "type": + - "null" + - "string" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_basic_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_basic_a2 - primary_key: + field_path: [] + name: channel_basic_a2 + primary_key: - date - channel_id - video_id - - live_or_on_demand - - subscribed_status - - country_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "comments": - "type": - - "null" - - "integer" - "likes": - "type": - - "null" - - "integer" - "dislikes": - "type": - - "null" - - "integer" - "shares": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "annotation_impressions": - "type": - - "null" - - "integer" - "annotation_clickable_impressions": - "type": - - "null" - - "integer" - "annotation_clicks": - "type": - - "null" - - "integer" - "annotation_click_through_rate": - "type": - - "null" - - "number" - "annotation_closable_impressions": - "type": - - "null" - - "integer" - "annotation_closes": - "type": - - "null" - - "integer" - "annotation_close_rate": - "type": - - "null" - - "number" - "card_teaser_impressions": - "type": - - "null" - - "integer" - "card_teaser_clicks": - "type": - - "null" - - "integer" - "card_teaser_click_rate": - "type": - - "null" - - "number" - "card_impressions": - "type": - - "null" - - "integer" - "card_clicks": - "type": - - "null" - - "integer" - "card_click_rate": - "type": - - "null" - - "number" - "subscribers_gained": - "type": - - "null" - - "integer" - "subscribers_lost": - "type": - - "null" - - "integer" - "videos_added_to_playlists": - "type": - - "null" - - "integer" - "videos_removed_from_playlists": - "type": - - "null" - - "integer" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_cards_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_cards_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + - live_or_on_demand + - subscribed_status + - country_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "comments": + "type": + - "null" + - "integer" + "likes": + "type": + - "null" + - "integer" + "dislikes": + "type": + - "null" + - "integer" + "shares": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "annotation_impressions": + "type": + - "null" + - "integer" + "annotation_clickable_impressions": + "type": + - "null" + - "integer" + "annotation_clicks": + "type": + - "null" + - "integer" + "annotation_click_through_rate": + "type": + - "null" + - "number" + "annotation_closable_impressions": + "type": + - "null" + - "integer" + "annotation_closes": + "type": + - "null" + - "integer" + "annotation_close_rate": + "type": + - "null" + - "number" + "card_teaser_impressions": + "type": + - "null" + - "integer" + "card_teaser_clicks": + "type": + - "null" + - "integer" + "card_teaser_click_rate": + "type": + - "null" + - "number" + "card_impressions": + "type": + - "null" + - "integer" + "card_clicks": + "type": + - "null" + - "integer" + "card_click_rate": + "type": + - "null" + - "number" + "subscribers_gained": + "type": + - "null" + - "integer" + "subscribers_lost": + "type": + - "null" + - "integer" + "videos_added_to_playlists": + "type": + - "null" + - "integer" + "videos_removed_from_playlists": + "type": + - "null" + - "integer" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_cards_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_cards_a1 - primary_key: + field_path: [] + name: channel_cards_a1 + primary_key: - date - channel_id - video_id @@ -557,150 +478,149 @@ definitions: - country_code - card_type - card_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "card_type": - "type": - - "null" - - "string" - "card_id": - "type": - - "null" - - "string" - "card_teaser_impressions": - "type": - - "null" - - "string" - "card_teaser_clicks": - "type": - - "null" - - "string" - "card_teaser_click_rate": - "type": - - "null" - - "string" - "card_impressions": - "type": - - "null" - - "string" - "card_clicks": - "type": - - "null" - - "string" - "card_click_rate": - "type": - - "null" - - "string" - channel_combined_a2: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_combined_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "card_type": + "type": + - "null" + - "string" + "card_id": + "type": + - "null" + - "string" + "card_teaser_impressions": + "type": + - "null" + - "string" + "card_teaser_clicks": + "type": + - "null" + - "string" + "card_teaser_click_rate": + "type": + - "null" + - "string" + "card_impressions": + "type": + - "null" + - "string" + "card_clicks": + "type": + - "null" + - "string" + "card_click_rate": + "type": + - "null" + - "string" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_combined_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_combined_a2 - primary_key: + field_path: [] + name: channel_combined_a2 + primary_key: - date - channel_id - video_id @@ -711,582 +631,578 @@ definitions: - traffic_source_type - device_type - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "traffic_source_type": - "type": - - "null" - - "integer" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_demographics_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_demographics_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_demographics_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - age_group - - gender - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "age_group": - "type": - - "null" - - "string" - "gender": - "type": - - "null" - - "string" - "views_percentage": - "type": - - "null" - - "string" - channel_device_os_a2: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_device_os_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_device_os_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_end_screens_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_end_screens_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_end_screens_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "traffic_source_type": + "type": + - "null" + - "integer" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_demographics_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_demographics_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - age_group + - gender + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "age_group": + "type": + - "null" + - "string" + "gender": + "type": + - "null" + - "string" + "views_percentage": + "type": + - "null" + - "string" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_device_os_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_device_os_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_end_screens_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: [] + name: channel_end_screens_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code - end_screen_element_type - end_screen_element_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "end_screen_element_type": - "type": - - "null" - - "string" - "end_screen_element_id": - "type": - - "null" - - "string" - "end_screen_element_clicks": - "type": - - "null" - - "string" - "end_screen_element_impressions": - "type": - - "null" - - "string" - "end_screen_element_click_rate": - "type": - - "null" - - "string" - channel_playback_location_a2: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_playback_location_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "end_screen_element_type": + "type": + - "null" + - "string" + "end_screen_element_id": + "type": + - "null" + - "string" + "end_screen_element_clicks": + "type": + - "null" + - "string" + "end_screen_element_impressions": + "type": + - "null" + - "string" + "end_screen_element_click_rate": + "type": + - "null" + - "string" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_playback_location_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_playback_location_a2 - primary_key: + field_path: [] + name: channel_playback_location_a2 + primary_key: - date - channel_id - video_id @@ -1295,150 +1211,149 @@ definitions: - country_code - playback_location_type - playback_location_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "playback_location_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_province_a2: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_province_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "playback_location_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_province_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_province_a2 - primary_key: + field_path: [] + name: channel_province_a2 + primary_key: - date - channel_id - video_id @@ -1446,198 +1361,197 @@ definitions: - subscribed_status - country_code - province_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "province_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "annotation_click_through_rate": - "type": - - "null" - - "integer" - "annotation_close_rate": - "type": - - "null" - - "integer" - "annotation_impressions": - "type": - - "null" - - "integer" - "annotation_clickable_impressions": - "type": - - "null" - - "integer" - "annotation_closable_impressions": - "type": - - "null" - - "integer" - "annotation_clicks": - "type": - - "null" - - "integer" - "annotation_closes": - "type": - - "null" - - "integer" - "card_click_rate": - "type": - - "null" - - "integer" - "card_teaser_click_rate": - "type": - - "null" - - "integer" - "card_impressions": - "type": - - "null" - - "integer" - "card_teaser_impressions": - "type": - - "null" - - "integer" - "card_clicks": - "type": - - "null" - - "integer" - "card_teaser_clicks": - "type": - - "null" - - "integer" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_sharing_service_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_sharing_service_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "province_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "annotation_click_through_rate": + "type": + - "null" + - "integer" + "annotation_close_rate": + "type": + - "null" + - "integer" + "annotation_impressions": + "type": + - "null" + - "integer" + "annotation_clickable_impressions": + "type": + - "null" + - "integer" + "annotation_closable_impressions": + "type": + - "null" + - "integer" + "annotation_clicks": + "type": + - "null" + - "integer" + "annotation_closes": + "type": + - "null" + - "integer" + "card_click_rate": + "type": + - "null" + - "integer" + "card_teaser_click_rate": + "type": + - "null" + - "integer" + "card_impressions": + "type": + - "null" + - "integer" + "card_teaser_impressions": + "type": + - "null" + - "integer" + "card_clicks": + "type": + - "null" + - "integer" + "card_teaser_clicks": + "type": + - "null" + - "integer" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_sharing_service_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_sharing_service_a1 - primary_key: + field_path: [] + name: channel_sharing_service_a1 + primary_key: - date - channel_id - video_id @@ -1645,126 +1559,125 @@ definitions: - subscribed_status - country_code - sharing_service - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "sharing_service": - "type": - - "null" - - "string" - "shares": - "type": - - "null" - - "string" - channel_subtitles_a2: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_subtitles_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "sharing_service": + "type": + - "null" + - "string" + "shares": + "type": + - "null" + - "string" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_subtitles_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_subtitles_a2 - primary_key: + field_path: [] + name: channel_subtitles_a2 + primary_key: - date - channel_id - video_id @@ -1772,146 +1685,145 @@ definitions: - subscribed_status - country_code - subtitle_language - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "subtitle_language": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_traffic_source_a2: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_traffic_source_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "subtitle_language": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_traffic_source_a2 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_traffic_source_a2 - primary_key: + field_path: [] + name: channel_traffic_source_a2 + primary_key: - date - channel_id - video_id @@ -1920,150 +1832,149 @@ definitions: - country_code - traffic_source_type - traffic_source_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "traffic_source_type": - "type": - - "null" - - "integer" - "traffic_source_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - playlist_basic_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_basic_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "traffic_source_type": + "type": + - "null" + - "integer" + "traffic_source_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "average_view_duration_percentage": + "type": + - "null" + - "number" + "red_views": + "type": + - "null" + - "integer" + "red_watch_time_minutes": + "type": + - "null" + - "number" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_basic_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_basic_a1 - primary_key: + field_path: [] + name: playlist_basic_a1 + primary_key: - date - channel_id - playlist_id @@ -2071,146 +1982,145 @@ definitions: - live_or_on_demand - subscribed_status - country_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - playlist_combined_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_combined_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_combined_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_combined_a1 - primary_key: + field_path: [] + name: playlist_combined_a1 + primary_key: - date - channel_id - playlist_id @@ -2222,162 +2132,161 @@ definitions: - traffic_source_type - device_type - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "traffic_source_type": - "type": - - "null" - - "integer" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - playlist_device_os_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_device_os_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "traffic_source_type": + "type": + - "null" + - "integer" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_device_os_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_device_os_a1 - primary_key: + field_path: [] + name: playlist_device_os_a1 + primary_key: - date - channel_id - playlist_id @@ -2387,154 +2296,153 @@ definitions: - country_code - device_type - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - playlist_playback_location_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_playback_location_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "device_type": + "type": + - "null" + - "integer" + "operating_system": + "type": + - "null" + - "integer" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_playback_location_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_playback_location_a1 - primary_key: + field_path: [] + name: playlist_playback_location_a1 + primary_key: - date - channel_id - playlist_id @@ -2544,154 +2452,153 @@ definitions: - country_code - playback_location_type - playback_location_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "playback_location_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - playlist_province_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_province_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "playback_location_type": + "type": + - "null" + - "integer" + "playback_location_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_province_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_province_a1 - primary_key: + field_path: [] + name: playlist_province_a1 + primary_key: - date - channel_id - playlist_id @@ -2700,150 +2607,149 @@ definitions: - subscribed_status - country_code - province_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "province_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "string" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "string" - "playlist_saves_added": - "type": - - "null" - - "string" - "playlist_saves_removed": - "type": - - "null" - - "string" - playlist_traffic_source_a1: - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_traffic_source_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "province_code": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "string" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "string" + "playlist_saves_added": + "type": + - "null" + - "string" + "playlist_saves_removed": + "type": + - "null" + - "string" + - type: DeclarativeStream + retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.CreationRequester + path: jobs + http_method: POST + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_traffic_source_a1 + polling_requester: + type: CustomRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + class_name: source_declarative_manifest.components.PollingRequester + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: + - status + status_mapping: + failed: + - failed + running: + - pending + timeout: + - timeout + completed: + - ready + urls_extractor: + type: DpathExtractor + field_path: + - downloadUrl + download_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_traffic_source_a1 - primary_key: + field_path: [] + name: playlist_traffic_source_a1 + primary_key: - date - channel_id - playlist_id @@ -2853,2902 +2759,72 @@ definitions: - country_code - traffic_source_type - traffic_source_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "traffic_source_type": - "type": - - "null" - - "integer" - "traffic_source_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - base_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" -streams: -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_annotations_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_annotations_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - annotation_type - - annotation_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "annotation_type": - "type": - - "null" - - "string" - "annotation_id": - "type": - - "null" - - "string" - "annotation_impressions": - "type": - - "null" - - "string" - "annotation_clickable_impressions": - "type": - - "null" - - "string" - "annotation_clicks": - "type": - - "null" - - "string" - "annotation_click_through_rate": - "type": - - "null" - - "string" - "annotation_closable_impressions": - "type": - - "null" - - "string" - "annotation_closes": - "type": - - "null" - - "string" - "annotation_close_rate": - "type": - - "null" - - "string" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_basic_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_basic_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "comments": - "type": - - "null" - - "integer" - "likes": - "type": - - "null" - - "integer" - "dislikes": - "type": - - "null" - - "integer" - "shares": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "annotation_impressions": - "type": - - "null" - - "integer" - "annotation_clickable_impressions": - "type": - - "null" - - "integer" - "annotation_clicks": - "type": - - "null" - - "integer" - "annotation_click_through_rate": - "type": - - "null" - - "number" - "annotation_closable_impressions": - "type": - - "null" - - "integer" - "annotation_closes": - "type": - - "null" - - "integer" - "annotation_close_rate": - "type": - - "null" - - "number" - "card_teaser_impressions": - "type": - - "null" - - "integer" - "card_teaser_clicks": - "type": - - "null" - - "integer" - "card_teaser_click_rate": - "type": - - "null" - - "number" - "card_impressions": - "type": - - "null" - - "integer" - "card_clicks": - "type": - - "null" - - "integer" - "card_click_rate": - "type": - - "null" - - "number" - "subscribers_gained": - "type": - - "null" - - "integer" - "subscribers_lost": - "type": - - "null" - - "integer" - "videos_added_to_playlists": - "type": - - "null" - - "integer" - "videos_removed_from_playlists": - "type": - - "null" - - "integer" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_cards_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_cards_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - card_type - - card_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "card_type": - "type": - - "null" - - "string" - "card_id": - "type": - - "null" - - "string" - "card_teaser_impressions": - "type": - - "null" - - "string" - "card_teaser_clicks": - "type": - - "null" - - "string" - "card_teaser_click_rate": - "type": - - "null" - - "string" - "card_impressions": - "type": - - "null" - - "string" - "card_clicks": - "type": - - "null" - - "string" - "card_click_rate": - "type": - - "null" - - "string" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_combined_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_combined_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - traffic_source_type - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "traffic_source_type": - "type": - - "null" - - "integer" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_demographics_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_demographics_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - age_group - - gender - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "age_group": - "type": - - "null" - - "string" - "gender": - "type": - - "null" - - "string" - "views_percentage": - "type": - - "null" - - "string" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_device_os_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_device_os_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_end_screens_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_end_screens_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - end_screen_element_type - - end_screen_element_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "end_screen_element_type": - "type": - - "null" - - "string" - "end_screen_element_id": - "type": - - "null" - - "string" - "end_screen_element_clicks": - "type": - - "null" - - "string" - "end_screen_element_impressions": - "type": - - "null" - - "string" - "end_screen_element_click_rate": - "type": - - "null" - - "string" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_playback_location_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_playback_location_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - playback_location_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "playback_location_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_province_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_province_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - province_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "province_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "annotation_click_through_rate": - "type": - - "null" - - "integer" - "annotation_close_rate": - "type": - - "null" - - "integer" - "annotation_impressions": - "type": - - "null" - - "integer" - "annotation_clickable_impressions": - "type": - - "null" - - "integer" - "annotation_closable_impressions": - "type": - - "null" - - "integer" - "annotation_clicks": - "type": - - "null" - - "integer" - "annotation_closes": - "type": - - "null" - - "integer" - "card_click_rate": - "type": - - "null" - - "integer" - "card_teaser_click_rate": - "type": - - "null" - - "integer" - "card_impressions": - "type": - - "null" - - "integer" - "card_teaser_impressions": - "type": - - "null" - - "integer" - "card_clicks": - "type": - - "null" - - "integer" - "card_teaser_clicks": - "type": - - "null" - - "integer" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_sharing_service_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_sharing_service_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - sharing_service - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "sharing_service": - "type": - - "null" - - "string" - "shares": - "type": - - "null" - - "string" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_subtitles_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_subtitles_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - subtitle_language - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "subtitle_language": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_traffic_source_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_traffic_source_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - traffic_source_type - - traffic_source_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "traffic_source_type": - "type": - - "null" - - "integer" - "traffic_source_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_basic_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_basic_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_combined_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_combined_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - traffic_source_type - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "traffic_source_type": - "type": - - "null" - - "integer" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_device_os_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_device_os_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_playback_location_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_playback_location_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - playback_location_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "playback_location_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_province_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_province_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - province_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "province_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "string" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "string" - "playlist_saves_added": - "type": - - "null" - - "string" - "playlist_saves_removed": - "type": - - "null" - - "string" -- type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_traffic_source_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - class_name: source_youtube_analytics.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_youtube_analytics.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_traffic_source_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - traffic_source_type - - traffic_source_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "traffic_source_type": - "type": - - "null" - - "integer" - "traffic_source_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" + schema_loader: + type: InlineSchemaLoader + schema: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + "date": + "type": "integer" + "channel_id": + "type": + - "null" + - "string" + "playlist_id": + "type": + - "null" + - "string" + "video_id": + "type": + - "null" + - "string" + "live_or_on_demand": + "type": + - "null" + - "string" + "subscribed_status": + "type": + - "null" + - "string" + "country_code": + "type": + - "null" + - "string" + "traffic_source_type": + "type": + - "null" + - "integer" + "traffic_source_detail": + "type": + - "null" + - "string" + "views": + "type": + - "null" + - "integer" + "watch_time_minutes": + "type": + - "null" + - "number" + "average_view_duration_seconds": + "type": + - "null" + - "number" + "playlist_starts": + "type": + - "null" + - "integer" + "playlist_saves_added": + "type": + - "null" + - "integer" + "playlist_saves_removed": + "type": + - "null" + - "integer" + spec: type: Spec documentationUrl: https://docs.airbyte.com/integrations/sources/youtube-analytics @@ -5757,16 +2833,16 @@ spec: $schema: http://json-schema.org/draft-07/schema# title: YouTube Analytics Spec required: - - credentials + - credentials additionalProperties: true properties: credentials: type: object title: Authenticate via OAuth 2.0 required: - - client_id - - client_secret - - refresh_token + - client_id + - client_secret + - refresh_token additionalProperties: true properties: client_id: @@ -5794,8 +2870,8 @@ spec: refresh_token: type: string path_in_connector_config: - - credentials - - refresh_token + - credentials + - refresh_token complete_oauth_server_input_specification: type: object additionalProperties: true @@ -5811,1169 +2887,10 @@ spec: client_id: type: string path_in_connector_config: - - credentials - - client_id + - credentials + - client_id client_secret: type: string path_in_connector_config: - - credentials - - client_secret -schemas: - channel_annotations_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "annotation_type": - "type": - - "null" - - "string" - "annotation_id": - "type": - - "null" - - "string" - "annotation_impressions": - "type": - - "null" - - "string" - "annotation_clickable_impressions": - "type": - - "null" - - "string" - "annotation_clicks": - "type": - - "null" - - "string" - "annotation_click_through_rate": - "type": - - "null" - - "string" - "annotation_closable_impressions": - "type": - - "null" - - "string" - "annotation_closes": - "type": - - "null" - - "string" - "annotation_close_rate": - "type": - - "null" - - "string" - channel_basic_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "comments": - "type": - - "null" - - "integer" - "likes": - "type": - - "null" - - "integer" - "dislikes": - "type": - - "null" - - "integer" - "shares": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "annotation_impressions": - "type": - - "null" - - "integer" - "annotation_clickable_impressions": - "type": - - "null" - - "integer" - "annotation_clicks": - "type": - - "null" - - "integer" - "annotation_click_through_rate": - "type": - - "null" - - "number" - "annotation_closable_impressions": - "type": - - "null" - - "integer" - "annotation_closes": - "type": - - "null" - - "integer" - "annotation_close_rate": - "type": - - "null" - - "number" - "card_teaser_impressions": - "type": - - "null" - - "integer" - "card_teaser_clicks": - "type": - - "null" - - "integer" - "card_teaser_click_rate": - "type": - - "null" - - "number" - "card_impressions": - "type": - - "null" - - "integer" - "card_clicks": - "type": - - "null" - - "integer" - "card_click_rate": - "type": - - "null" - - "number" - "subscribers_gained": - "type": - - "null" - - "integer" - "subscribers_lost": - "type": - - "null" - - "integer" - "videos_added_to_playlists": - "type": - - "null" - - "integer" - "videos_removed_from_playlists": - "type": - - "null" - - "integer" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_cards_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "card_type": - "type": - - "null" - - "string" - "card_id": - "type": - - "null" - - "string" - "card_teaser_impressions": - "type": - - "null" - - "string" - "card_teaser_clicks": - "type": - - "null" - - "string" - "card_teaser_click_rate": - "type": - - "null" - - "string" - "card_impressions": - "type": - - "null" - - "string" - "card_clicks": - "type": - - "null" - - "string" - "card_click_rate": - "type": - - "null" - - "string" - channel_combined_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "traffic_source_type": - "type": - - "null" - - "integer" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_demographics_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "age_group": - "type": - - "null" - - "string" - "gender": - "type": - - "null" - - "string" - "views_percentage": - "type": - - "null" - - "string" - channel_device_os_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_end_screens_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "end_screen_element_type": - "type": - - "null" - - "string" - "end_screen_element_id": - "type": - - "null" - - "string" - "end_screen_element_clicks": - "type": - - "null" - - "string" - "end_screen_element_impressions": - "type": - - "null" - - "string" - "end_screen_element_click_rate": - "type": - - "null" - - "string" - channel_playback_location_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "playback_location_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_province_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "province_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "annotation_click_through_rate": - "type": - - "null" - - "integer" - "annotation_close_rate": - "type": - - "null" - - "integer" - "annotation_impressions": - "type": - - "null" - - "integer" - "annotation_clickable_impressions": - "type": - - "null" - - "integer" - "annotation_closable_impressions": - "type": - - "null" - - "integer" - "annotation_clicks": - "type": - - "null" - - "integer" - "annotation_closes": - "type": - - "null" - - "integer" - "card_click_rate": - "type": - - "null" - - "integer" - "card_teaser_click_rate": - "type": - - "null" - - "integer" - "card_impressions": - "type": - - "null" - - "integer" - "card_teaser_impressions": - "type": - - "null" - - "integer" - "card_clicks": - "type": - - "null" - - "integer" - "card_teaser_clicks": - "type": - - "null" - - "integer" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_sharing_service_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "sharing_service": - "type": - - "null" - - "string" - "shares": - "type": - - "null" - - "string" - channel_subtitles_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "subtitle_language": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - channel_traffic_source_a2: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "traffic_source_type": - "type": - - "null" - - "integer" - "traffic_source_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - playlist_basic_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - playlist_combined_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "traffic_source_type": - "type": - - "null" - - "integer" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - playlist_device_os_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - playlist_playback_location_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "playback_location_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - playlist_province_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "province_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "string" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "string" - "playlist_saves_added": - "type": - - "null" - - "string" - "playlist_saves_removed": - "type": - - "null" - - "string" - playlist_traffic_source_a1: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "traffic_source_type": - "type": - - "null" - - "integer" - "traffic_source_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" + - credentials + - client_secret From 99fc5b9dfbea7aa356162a8561fd6cb913969680 Mon Sep 17 00:00:00 2001 From: Tope Folorunso Date: Sun, 26 Jan 2025 14:56:09 +0100 Subject: [PATCH 19/19] refactor manifest --- .../source-youtube-analytics/manifest.yaml | 4485 ++++++----------- 1 file changed, 1674 insertions(+), 2811 deletions(-) diff --git a/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml b/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml index 67eb31a879891..17a9275058e99 100644 --- a/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml +++ b/airbyte-integrations/connectors/source-youtube-analytics/manifest.yaml @@ -1,4 +1,4 @@ -version: 5.15.0 +version: 6.13.0 type: DeclarativeSource @@ -7,2823 +7,500 @@ check: stream_names: - channel_annotations_a1 -streams: - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_annotations_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_annotations_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - annotation_type - - annotation_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "annotation_type": - "type": - - "null" - - "string" - "annotation_id": - "type": - - "null" - - "string" - "annotation_impressions": - "type": - - "null" - - "string" - "annotation_clickable_impressions": - "type": - - "null" - - "string" - "annotation_clicks": - "type": - - "null" - - "string" - "annotation_click_through_rate": - "type": - - "null" - - "string" - "annotation_closable_impressions": - "type": - - "null" - - "string" - "annotation_closes": - "type": - - "null" - - "string" - "annotation_close_rate": - "type": - - "null" - - "string" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_basic_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_basic_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "comments": - "type": - - "null" - - "integer" - "likes": - "type": - - "null" - - "integer" - "dislikes": - "type": - - "null" - - "integer" - "shares": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "annotation_impressions": - "type": - - "null" - - "integer" - "annotation_clickable_impressions": - "type": - - "null" - - "integer" - "annotation_clicks": - "type": - - "null" - - "integer" - "annotation_click_through_rate": - "type": - - "null" - - "number" - "annotation_closable_impressions": - "type": - - "null" - - "integer" - "annotation_closes": - "type": - - "null" - - "integer" - "annotation_close_rate": - "type": - - "null" - - "number" - "card_teaser_impressions": - "type": - - "null" - - "integer" - "card_teaser_clicks": - "type": - - "null" - - "integer" - "card_teaser_click_rate": - "type": - - "null" - - "number" - "card_impressions": - "type": - - "null" - - "integer" - "card_clicks": - "type": - - "null" - - "integer" - "card_click_rate": - "type": - - "null" - - "number" - "subscribers_gained": - "type": - - "null" - - "integer" - "subscribers_lost": - "type": - - "null" - - "integer" - "videos_added_to_playlists": - "type": - - "null" - - "integer" - "videos_removed_from_playlists": - "type": - - "null" - - "integer" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_cards_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_cards_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - card_type - - card_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "card_type": - "type": - - "null" - - "string" - "card_id": - "type": - - "null" - - "string" - "card_teaser_impressions": - "type": - - "null" - - "string" - "card_teaser_clicks": - "type": - - "null" - - "string" - "card_teaser_click_rate": - "type": - - "null" - - "string" - "card_impressions": - "type": - - "null" - - "string" - "card_clicks": - "type": - - "null" - - "string" - "card_click_rate": - "type": - - "null" - - "string" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_combined_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_combined_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - traffic_source_type - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "traffic_source_type": - "type": - - "null" - - "integer" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_demographics_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_demographics_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - age_group - - gender - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "age_group": - "type": - - "null" - - "string" - "gender": - "type": - - "null" - - "string" - "views_percentage": - "type": - - "null" - - "string" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_device_os_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_device_os_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_end_screens_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_end_screens_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - end_screen_element_type - - end_screen_element_id - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "end_screen_element_type": - "type": - - "null" - - "string" - "end_screen_element_id": - "type": - - "null" - - "string" - "end_screen_element_clicks": - "type": - - "null" - - "string" - "end_screen_element_impressions": - "type": - - "null" - - "string" - "end_screen_element_click_rate": - "type": - - "null" - - "string" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_playback_location_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_playback_location_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - playback_location_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "playback_location_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_province_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_province_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - province_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "province_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "annotation_click_through_rate": - "type": - - "null" - - "integer" - "annotation_close_rate": - "type": - - "null" - - "integer" - "annotation_impressions": - "type": - - "null" - - "integer" - "annotation_clickable_impressions": - "type": - - "null" - - "integer" - "annotation_closable_impressions": - "type": - - "null" - - "integer" - "annotation_clicks": - "type": - - "null" - - "integer" - "annotation_closes": - "type": - - "null" - - "integer" - "card_click_rate": - "type": - - "null" - - "integer" - "card_teaser_click_rate": - "type": - - "null" - - "integer" - "card_impressions": - "type": - - "null" - - "integer" - "card_teaser_impressions": - "type": - - "null" - - "integer" - "card_clicks": - "type": - - "null" - - "integer" - "card_teaser_clicks": - "type": - - "null" - - "integer" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_sharing_service_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_sharing_service_a1 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - sharing_service - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "sharing_service": - "type": - - "null" - - "string" - "shares": - "type": - - "null" - - "string" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_subtitles_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_subtitles_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - subtitle_language - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "subtitle_language": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: channel_traffic_source_a2 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: channel_traffic_source_a2 - primary_key: - - date - - channel_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - traffic_source_type - - traffic_source_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "traffic_source_type": - "type": - - "null" - - "integer" - "traffic_source_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "average_view_duration_percentage": - "type": - - "null" - - "number" - "red_views": - "type": - - "null" - - "integer" - "red_watch_time_minutes": - "type": - - "null" - - "number" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_basic_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: +definitions: + streams: + channel_annotations_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_annotations_a1 + name: channel_annotations_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - annotation_type + - annotation_id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_annotations_a1" + channel_basic_a2: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_basic_a2 + name: channel_basic_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_basic_a2" + channel_cards_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_cards_a1 + name: channel_cards_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - card_type + - card_id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_cards_a1" + channel_combined_a2: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_combined_a2 + name: channel_combined_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - traffic_source_type + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_combined_a2" + channel_demographics_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_demographics_a1 + name: channel_demographics_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - age_group + - gender + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_demographics_a1" + channel_device_os_a2: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_device_os_a2 + name: channel_device_os_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_device_os_a2" + channel_end_screens_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_end_screens_a1 + name: channel_end_screens_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - end_screen_element_type + - end_screen_element_id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_end_screens_a1" + channel_playback_location_a2: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_playback_location_a2 + name: channel_playback_location_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - playback_location_detail + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_playback_location_a2" + channel_province_a2: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_province_a2 + name: channel_province_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - province_code + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_province_a2" + channel_sharing_service_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_sharing_service_a1 + name: channel_sharing_service_a1 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - sharing_service + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_sharing_service_a1" + channel_subtitles_a2: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_subtitles_a2 + name: channel_subtitles_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - subtitle_language + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_subtitles_a2" + channel_traffic_source_a2: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: channel_traffic_source_a2 + name: channel_traffic_source_a2 + primary_key: + - date + - channel_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - traffic_source_type + - traffic_source_detail + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/channel_traffic_source_a2" + playlist_basic_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_basic_a1 + name: playlist_basic_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_basic_a1" + playlist_combined_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_combined_a1 + name: playlist_combined_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - traffic_source_type + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_combined_a1" + playlist_device_os_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_device_os_a1 + name: playlist_device_os_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - device_type + - operating_system + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_device_os_a1" + playlist_playback_location_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_playback_location_a1 + name: playlist_playback_location_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - playback_location_type + - playback_location_detail + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_playback_location_a1" + playlist_province_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_province_a1 + name: playlist_province_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - province_code + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_province_a1" + playlist_traffic_source_a1: + type: DeclarativeStream + retriever: + $ref: "#/definitions/base_retriever" + creation_requester: + $ref: "#/definitions/base_retriever/creation_requester" + request_body_json: + name: Airbyte reporting job + reportTypeId: playlist_traffic_source_a1 + name: playlist_traffic_source_a1 + primary_key: + - date + - channel_id + - playlist_id + - video_id + - live_or_on_demand + - subscribed_status + - country_code + - traffic_source_type + - traffic_source_detail + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/playlist_traffic_source_a1" + base_retriever: + type: AsyncRetriever + creation_requester: + type: CustomRequester + class_name: source_declarative_manifest.components.CreationRequester + $ref: "#/definitions/base_requester" + path: jobs + http_method: POST + polling_requester: + type: CustomRequester + class_name: source_declarative_manifest.components.PollingRequester + $ref: "#/definitions/base_requester" + path: jobs + http_method: GET + status_extractor: + type: DpathExtractor + field_path: - status - status_mapping: - failed: + status_mapping: + failed: - failed - running: + running: - pending - timeout: + timeout: - timeout - completed: + completed: - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_basic_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_combined_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_combined_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - traffic_source_type - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "traffic_source_type": - "type": - - "null" - - "integer" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_device_os_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: + urls_extractor: + type: DpathExtractor + field_path: - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_device_os_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - device_type - - operating_system - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "device_type": - "type": - - "null" - - "integer" - "operating_system": - "type": - - "null" - - "integer" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_playback_location_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: + download_requester: + $ref: "#/definitions/base_requester" + path: "{{stream_slice.extra_fields['downloadUrl']}}" + http_method: GET + decoder: + type: GzipJsonDecoder + record_selector: + type: RecordSelector + extractor: type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_playback_location_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - playback_location_type - - playback_location_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "playback_location_type": - "type": - - "null" - - "integer" - "playback_location_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_province_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_province_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - province_code - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "province_code": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "string" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "string" - "playlist_saves_added": - "type": - - "null" - - "string" - "playlist_saves_removed": - "type": - - "null" - - "string" - - type: DeclarativeStream - retriever: - type: AsyncRetriever - creation_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.CreationRequester - path: jobs - http_method: POST - request_body_json: - name: Airbyte reporting job - reportTypeId: playlist_traffic_source_a1 - polling_requester: - type: CustomRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - class_name: source_declarative_manifest.components.PollingRequester - path: jobs - http_method: GET - status_extractor: - type: DpathExtractor - field_path: - - status - status_mapping: - failed: - - failed - running: - - pending - timeout: - - timeout - completed: - - ready - urls_extractor: - type: DpathExtractor - field_path: - - downloadUrl - download_requester: - type: HttpRequester - url_base: https://youtubereporting.googleapis.com/v1/ - authenticator: - type: OAuthAuthenticator - client_id: '{{ config[''credentials'']["client_id"] }}' - grant_type: refresh_token - client_secret: '{{ config[''credentials'']["client_secret"] }}' - refresh_token: '{{ config[''credentials'']["refresh_token"] }}' - refresh_request_body: {} - token_refresh_endpoint: https://oauth2.googleapis.com/token - error_handlers: - type: CustomErrorHandler - class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" - path: "{{stream_slice.extra_fields['downloadUrl']}}" - http_method: GET - decoder: - type: GzipJsonDecoder - record_selector: - type: RecordSelector - extractor: - type: DpathExtractor - field_path: [] - name: playlist_traffic_source_a1 - primary_key: - - date - - channel_id - - playlist_id - - video_id - - live_or_on_demand - - subscribed_status - - country_code - - traffic_source_type - - traffic_source_detail - schema_loader: - type: InlineSchemaLoader - schema: - type: object - $schema: http://json-schema.org/draft-07/schema# - additionalProperties: true - properties: - "date": - "type": "integer" - "channel_id": - "type": - - "null" - - "string" - "playlist_id": - "type": - - "null" - - "string" - "video_id": - "type": - - "null" - - "string" - "live_or_on_demand": - "type": - - "null" - - "string" - "subscribed_status": - "type": - - "null" - - "string" - "country_code": - "type": - - "null" - - "string" - "traffic_source_type": - "type": - - "null" - - "integer" - "traffic_source_detail": - "type": - - "null" - - "string" - "views": - "type": - - "null" - - "integer" - "watch_time_minutes": - "type": - - "null" - - "number" - "average_view_duration_seconds": - "type": - - "null" - - "number" - "playlist_starts": - "type": - - "null" - - "integer" - "playlist_saves_added": - "type": - - "null" - - "integer" - "playlist_saves_removed": - "type": - - "null" - - "integer" + field_path: [] + base_requester: + type: HttpRequester + url_base: https://youtubereporting.googleapis.com/v1/ + authenticator: + type: OAuthAuthenticator + client_id: '{{ config[''credentials'']["client_id"] }}' + grant_type: refresh_token + client_secret: '{{ config[''credentials'']["client_secret"] }}' + refresh_token: '{{ config[''credentials'']["refresh_token"] }}' + refresh_request_body: {} + token_refresh_endpoint: https://oauth2.googleapis.com/token + error_handlers: + type: CustomErrorHandler + class_name: "source_declarative_manifest.components.YoutubeAnalyticsErrorHandler" + +streams: + - $ref: "#/definitions/streams/channel_annotations_a1" + - $ref: "#/definitions/streams/channel_basic_a2" + - $ref: "#/definitions/streams/channel_cards_a1" + - $ref: "#/definitions/streams/channel_combined_a2" + - $ref: "#/definitions/streams/channel_demographics_a1" + - $ref: "#/definitions/streams/channel_device_os_a2" + - $ref: "#/definitions/streams/channel_end_screens_a1" + - $ref: "#/definitions/streams/channel_playback_location_a2" + - $ref: "#/definitions/streams/channel_province_a2" + - $ref: "#/definitions/streams/channel_sharing_service_a1" + - $ref: "#/definitions/streams/channel_subtitles_a2" + - $ref: "#/definitions/streams/channel_traffic_source_a2" + - $ref: "#/definitions/streams/playlist_basic_a1" + - $ref: "#/definitions/streams/playlist_combined_a1" + - $ref: "#/definitions/streams/playlist_device_os_a1" + - $ref: "#/definitions/streams/playlist_playback_location_a1" + - $ref: "#/definitions/streams/playlist_province_a1" + - $ref: "#/definitions/streams/playlist_traffic_source_a1" spec: type: Spec @@ -2894,3 +571,1189 @@ spec: path_in_connector_config: - credentials - client_secret + +metadata: + autoImportSchema: + channel_annotations_a1: false + channel_basic_a2: false + channel_cards_a1: false + channel_combined_a2: false + channel_demographics_a1: false + channel_device_os_a2: false + channel_end_screens_a1: false + channel_playback_location_a2: false + channel_province_a2: false + channel_sharing_service_a1: false + channel_subtitles_a2: false + channel_traffic_source_a2: false + playlist_basic_a1: false + playlist_combined_a1: false + playlist_device_os_a1: false + playlist_playback_location_a1: false + playlist_province_a1: false + playlist_traffic_source_a1: false + yamlComponents: + global: + - authenticator + testedStreams: {} + assist: {} + +schemas: + channel_annotations_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + annotation_click_through_rate: + type: + - "null" + - string + annotation_clickable_impressions: + type: + - "null" + - string + annotation_clicks: + type: + - "null" + - string + annotation_closable_impressions: + type: + - "null" + - string + annotation_close_rate: + type: + - "null" + - string + annotation_closes: + type: + - "null" + - string + annotation_id: + type: + - "null" + - string + annotation_impressions: + type: + - "null" + - string + annotation_type: + type: + - "null" + - string + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + channel_basic_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + annotation_click_through_rate: + type: + - "null" + - number + annotation_clickable_impressions: + type: + - "null" + - integer + annotation_clicks: + type: + - "null" + - integer + annotation_closable_impressions: + type: + - "null" + - integer + annotation_close_rate: + type: + - "null" + - number + annotation_closes: + type: + - "null" + - integer + annotation_impressions: + type: + - "null" + - integer + average_view_duration_percentage: + type: + - "null" + - number + average_view_duration_seconds: + type: + - "null" + - number + card_click_rate: + type: + - "null" + - number + card_clicks: + type: + - "null" + - integer + card_impressions: + type: + - "null" + - integer + card_teaser_click_rate: + type: + - "null" + - number + card_teaser_clicks: + type: + - "null" + - integer + card_teaser_impressions: + type: + - "null" + - integer + channel_id: + type: + - "null" + - string + comments: + type: + - "null" + - integer + country_code: + type: + - "null" + - string + date: + type: integer + dislikes: + type: + - "null" + - integer + likes: + type: + - "null" + - integer + live_or_on_demand: + type: + - "null" + - string + red_views: + type: + - "null" + - integer + red_watch_time_minutes: + type: + - "null" + - number + shares: + type: + - "null" + - integer + subscribed_status: + type: + - "null" + - string + subscribers_gained: + type: + - "null" + - integer + subscribers_lost: + type: + - "null" + - integer + video_id: + type: + - "null" + - string + videos_added_to_playlists: + type: + - "null" + - integer + videos_removed_from_playlists: + type: + - "null" + - integer + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + channel_cards_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + card_click_rate: + type: + - "null" + - string + card_clicks: + type: + - "null" + - string + card_id: + type: + - "null" + - string + card_impressions: + type: + - "null" + - string + card_teaser_click_rate: + type: + - "null" + - string + card_teaser_clicks: + type: + - "null" + - string + card_teaser_impressions: + type: + - "null" + - string + card_type: + type: + - "null" + - string + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + channel_combined_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_percentage: + type: + - "null" + - number + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + device_type: + type: + - "null" + - integer + live_or_on_demand: + type: + - "null" + - string + operating_system: + type: + - "null" + - integer + playback_location_type: + type: + - "null" + - integer + red_views: + type: + - "null" + - integer + red_watch_time_minutes: + type: + - "null" + - number + subscribed_status: + type: + - "null" + - string + traffic_source_type: + type: + - "null" + - integer + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + channel_demographics_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + age_group: + type: + - "null" + - string + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + gender: + type: + - "null" + - string + live_or_on_demand: + type: + - "null" + - string + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views_percentage: + type: + - "null" + - string + channel_device_os_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_percentage: + type: + - "null" + - number + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + device_type: + type: + - "null" + - integer + live_or_on_demand: + type: + - "null" + - string + operating_system: + type: + - "null" + - integer + red_views: + type: + - "null" + - integer + red_watch_time_minutes: + type: + - "null" + - number + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + channel_end_screens_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + end_screen_element_click_rate: + type: + - "null" + - string + end_screen_element_clicks: + type: + - "null" + - string + end_screen_element_id: + type: + - "null" + - string + end_screen_element_impressions: + type: + - "null" + - string + end_screen_element_type: + type: + - "null" + - string + live_or_on_demand: + type: + - "null" + - string + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + channel_playback_location_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_percentage: + type: + - "null" + - number + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + playback_location_detail: + type: + - "null" + - string + playback_location_type: + type: + - "null" + - integer + red_views: + type: + - "null" + - integer + red_watch_time_minutes: + type: + - "null" + - number + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + channel_province_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + annotation_click_through_rate: + type: + - "null" + - integer + annotation_clickable_impressions: + type: + - "null" + - integer + annotation_clicks: + type: + - "null" + - integer + annotation_closable_impressions: + type: + - "null" + - integer + annotation_close_rate: + type: + - "null" + - integer + annotation_closes: + type: + - "null" + - integer + annotation_impressions: + type: + - "null" + - integer + average_view_duration_percentage: + type: + - "null" + - number + average_view_duration_seconds: + type: + - "null" + - number + card_click_rate: + type: + - "null" + - integer + card_clicks: + type: + - "null" + - integer + card_impressions: + type: + - "null" + - integer + card_teaser_click_rate: + type: + - "null" + - integer + card_teaser_clicks: + type: + - "null" + - integer + card_teaser_impressions: + type: + - "null" + - integer + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + province_code: + type: + - "null" + - string + red_views: + type: + - "null" + - integer + red_watch_time_minutes: + type: + - "null" + - number + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + channel_sharing_service_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + shares: + type: + - "null" + - string + sharing_service: + type: + - "null" + - string + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + channel_subtitles_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_percentage: + type: + - "null" + - number + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + red_views: + type: + - "null" + - integer + red_watch_time_minutes: + type: + - "null" + - number + subscribed_status: + type: + - "null" + - string + subtitle_language: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + channel_traffic_source_a2: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_percentage: + type: + - "null" + - number + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + red_views: + type: + - "null" + - integer + red_watch_time_minutes: + type: + - "null" + - number + subscribed_status: + type: + - "null" + - string + traffic_source_detail: + type: + - "null" + - string + traffic_source_type: + type: + - "null" + - integer + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + playlist_basic_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + playlist_id: + type: + - "null" + - string + playlist_saves_added: + type: + - "null" + - integer + playlist_saves_removed: + type: + - "null" + - integer + playlist_starts: + type: + - "null" + - integer + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + playlist_combined_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + device_type: + type: + - "null" + - integer + live_or_on_demand: + type: + - "null" + - string + operating_system: + type: + - "null" + - integer + playback_location_type: + type: + - "null" + - integer + playlist_id: + type: + - "null" + - string + playlist_saves_added: + type: + - "null" + - integer + playlist_saves_removed: + type: + - "null" + - integer + playlist_starts: + type: + - "null" + - integer + subscribed_status: + type: + - "null" + - string + traffic_source_type: + type: + - "null" + - integer + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + playlist_device_os_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + device_type: + type: + - "null" + - integer + live_or_on_demand: + type: + - "null" + - string + operating_system: + type: + - "null" + - integer + playlist_id: + type: + - "null" + - string + playlist_saves_added: + type: + - "null" + - integer + playlist_saves_removed: + type: + - "null" + - integer + playlist_starts: + type: + - "null" + - integer + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + playlist_playback_location_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + playback_location_detail: + type: + - "null" + - string + playback_location_type: + type: + - "null" + - integer + playlist_id: + type: + - "null" + - string + playlist_saves_added: + type: + - "null" + - integer + playlist_saves_removed: + type: + - "null" + - integer + playlist_starts: + type: + - "null" + - integer + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number + playlist_province_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + playlist_id: + type: + - "null" + - string + playlist_saves_added: + type: + - "null" + - string + playlist_saves_removed: + type: + - "null" + - string + playlist_starts: + type: + - "null" + - string + province_code: + type: + - "null" + - string + subscribed_status: + type: + - "null" + - string + video_id: + type: + - "null" + - string + views: + type: + - "null" + - string + watch_time_minutes: + type: + - "null" + - number + playlist_traffic_source_a1: + type: object + $schema: http://json-schema.org/draft-07/schema# + additionalProperties: true + properties: + average_view_duration_seconds: + type: + - "null" + - number + channel_id: + type: + - "null" + - string + country_code: + type: + - "null" + - string + date: + type: integer + live_or_on_demand: + type: + - "null" + - string + playlist_id: + type: + - "null" + - string + playlist_saves_added: + type: + - "null" + - integer + playlist_saves_removed: + type: + - "null" + - integer + playlist_starts: + type: + - "null" + - integer + subscribed_status: + type: + - "null" + - string + traffic_source_detail: + type: + - "null" + - string + traffic_source_type: + type: + - "null" + - integer + video_id: + type: + - "null" + - string + views: + type: + - "null" + - integer + watch_time_minutes: + type: + - "null" + - number