ingestr 0.13.40__tar.gz → 0.13.41__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ingestr might be problematic. Click here for more details.
- {ingestr-0.13.40 → ingestr-0.13.41}/PKG-INFO +6 -1
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/.vitepress/config.mjs +1 -0
- ingestr-0.13.41/docs/media/spanner_ingestion.png +0 -0
- ingestr-0.13.41/docs/supported-sources/spanner.md +41 -0
- ingestr-0.13.41/ingestr/src/buildinfo.py +1 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/factory.py +1 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/sources.py +46 -2
- {ingestr-0.13.40 → ingestr-0.13.41}/requirements.in +2 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/requirements.txt +25 -1
- {ingestr-0.13.40 → ingestr-0.13.41}/requirements_arm64.txt +25 -1
- ingestr-0.13.40/ingestr/src/buildinfo.py +0 -1
- {ingestr-0.13.40 → ingestr-0.13.41}/.dockerignore +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.githooks/pre-commit-hook.sh +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.github/workflows/deploy-docs.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.github/workflows/release.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.github/workflows/secrets-scan.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.github/workflows/tests.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.gitignore +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.gitleaksignore +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.python-version +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/.vale.ini +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/Dockerfile +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/LICENSE.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/Makefile +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/README.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/.vitepress/theme/custom.css +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/.vitepress/theme/index.js +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/commands/example-uris.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/commands/ingest.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/getting-started/core-concepts.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/getting-started/incremental-loading.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/getting-started/quickstart.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/getting-started/telemetry.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/index.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/applovin_max.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/athena.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/clickhouse_img.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/freshdesk_ingestion.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/github.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/google_analytics_realtime_report.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/googleanalytics.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/ingestion_elasticsearch_img.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/kinesis.bigquery.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/linkedin_ads.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/personio.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/personio_duckdb.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/phantombuster.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/pipedrive.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/stripe_postgres.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/media/tiktok.png +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/adjust.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/airtable.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/applovin.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/applovin_max.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/appsflyer.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/appstore.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/asana.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/athena.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/bigquery.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/chess.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/clickhouse.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/csv.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/custom_queries.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/databricks.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/db2.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/duckdb.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/dynamodb.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/elasticsearch.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/facebook-ads.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/frankfurter.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/freshdesk.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/gcs.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/github.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/google-ads.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/google_analytics.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/gorgias.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/gsheets.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/hubspot.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/kafka.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/kinesis.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/klaviyo.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/linkedin_ads.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/mongodb.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/mssql.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/mysql.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/notion.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/oracle.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/personio.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/phantombuster.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/pipedrive.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/postgres.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/redshift.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/s3.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/salesforce.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/sap-hana.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/shopify.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/slack.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/snowflake.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/sqlite.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/stripe.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/tiktok-ads.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/supported-sources/zendesk.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/tutorials/load-kinesis-bigquery.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/tutorials/load-personio-duckdb.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/docs/tutorials/load-stripe-postgres.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/conftest.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/main.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/.gitignore +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/adjust/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/adjust/adjust_helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/airtable/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/applovin/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/applovin_max/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/appsflyer/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/appsflyer/client.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/appstore/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/appstore/client.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/appstore/errors.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/appstore/models.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/appstore/resources.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/arrow/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/asana_source/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/asana_source/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/asana_source/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/blob.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/chess/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/chess/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/chess/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/collector/spinner.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/destinations.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/dynamodb/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/elasticsearch/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/errors.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/facebook_ads/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/facebook_ads/exceptions.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/facebook_ads/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/facebook_ads/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/filesystem/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/filesystem/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/filesystem/readers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/filters.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/frankfurter/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/frankfurter/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/freshdesk/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/freshdesk/freshdesk_client.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/freshdesk/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/github/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/github/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/github/queries.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/github/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_ads/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_ads/field.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_ads/metrics.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_ads/predicates.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_ads/reports.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_analytics/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_analytics/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_sheets/README.md +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_sheets/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/gorgias/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/gorgias/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/hubspot/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/hubspot/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/hubspot/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/kafka/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/kafka/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/kinesis/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/kinesis/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/klaviyo/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/klaviyo/client.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/klaviyo/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/linkedin_ads/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/linkedin_ads/dimension_time_enum.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/linkedin_ads/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/loader.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/mongodb/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/mongodb/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/notion/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/notion/helpers/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/notion/helpers/client.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/notion/helpers/database.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/notion/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/partition.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/personio/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/personio/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/phantombuster/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/phantombuster/client.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/pipedrive/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/pipedrive/helpers/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/pipedrive/helpers/custom_fields_munger.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/pipedrive/helpers/pages.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/pipedrive/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/pipedrive/typing.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/resource.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/salesforce/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/salesforce/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/shopify/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/shopify/exceptions.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/shopify/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/shopify/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/slack/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/slack/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/slack/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/sql_database/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/sql_database/callbacks.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/stripe_analytics/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/stripe_analytics/helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/stripe_analytics/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/table_definition.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/telemetry/event.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/testdata/fakebqcredentials.json +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/tiktok_ads/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/time.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/version.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/zendesk/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/zendesk/helpers/__init__.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/zendesk/helpers/credentials.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/src/zendesk/settings.py +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/testdata/.gitignore +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/testdata/create_replace.csv +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/testdata/delete_insert_expected.csv +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/testdata/delete_insert_part1.csv +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/testdata/delete_insert_part2.csv +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/testdata/merge_expected.csv +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/testdata/merge_part1.csv +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/ingestr/testdata/merge_part2.csv +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/package-lock.json +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/package.json +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/pyproject.toml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/requirements-dev.txt +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/resources/demo.gif +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/resources/demo.tape +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/resources/ingestr.svg +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/AMPM.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Acronyms.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Colons.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Contractions.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/DateFormat.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Ellipses.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/EmDash.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Exclamation.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/FirstPerson.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Gender.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/GenderBias.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/HeadingPunctuation.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Headings.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Latin.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/LyHyphens.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/OptionalPlurals.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Ordinal.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/OxfordComma.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Parens.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Passive.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Periods.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Quotes.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Ranges.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Semicolons.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Slang.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Spacing.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Spelling.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Units.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/We.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/Will.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/WordList.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/meta.json +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/Google/vocab.txt +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/bruin/Ingestr.yml +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/styles/config/vocabularies/bruin/accept.txt +0 -0
- {ingestr-0.13.40 → ingestr-0.13.41}/test.env.template +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ingestr
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.41
|
|
4
4
|
Summary: ingestr is a command-line application that ingests data from various sources and stores them in any database.
|
|
5
5
|
Project-URL: Homepage, https://github.com/bruin-data/ingestr
|
|
6
6
|
Project-URL: Issues, https://github.com/bruin-data/ingestr/issues
|
|
@@ -72,11 +72,14 @@ Requires-Dist: google-auth==2.38.0
|
|
|
72
72
|
Requires-Dist: google-cloud-bigquery-storage==2.24.0
|
|
73
73
|
Requires-Dist: google-cloud-bigquery==3.30.0
|
|
74
74
|
Requires-Dist: google-cloud-core==2.4.2
|
|
75
|
+
Requires-Dist: google-cloud-spanner==3.54.0
|
|
75
76
|
Requires-Dist: google-cloud-storage==3.1.0
|
|
76
77
|
Requires-Dist: google-crc32c==1.6.0
|
|
77
78
|
Requires-Dist: google-resumable-media==2.7.2
|
|
78
79
|
Requires-Dist: googleapis-common-protos==1.69.0
|
|
79
80
|
Requires-Dist: greenlet==3.2.2
|
|
81
|
+
Requires-Dist: grpc-google-iam-v1==0.14.2
|
|
82
|
+
Requires-Dist: grpc-interceptor==0.15.4
|
|
80
83
|
Requires-Dist: grpcio-status==1.62.3
|
|
81
84
|
Requires-Dist: grpcio==1.70.0
|
|
82
85
|
Requires-Dist: hdbcli==2.23.27
|
|
@@ -168,9 +171,11 @@ Requires-Dist: soupsieve==2.6
|
|
|
168
171
|
Requires-Dist: sqlalchemy-bigquery==1.12.1
|
|
169
172
|
Requires-Dist: sqlalchemy-hana==2.0.0
|
|
170
173
|
Requires-Dist: sqlalchemy-redshift==0.8.14
|
|
174
|
+
Requires-Dist: sqlalchemy-spanner==1.11.0
|
|
171
175
|
Requires-Dist: sqlalchemy2-stubs==0.0.2a38
|
|
172
176
|
Requires-Dist: sqlalchemy==1.4.52
|
|
173
177
|
Requires-Dist: sqlglot==26.12.1
|
|
178
|
+
Requires-Dist: sqlparse==0.5.3
|
|
174
179
|
Requires-Dist: stripe==10.7.0
|
|
175
180
|
Requires-Dist: tenacity==9.0.0
|
|
176
181
|
Requires-Dist: thrift==0.16.0
|
|
@@ -138,6 +138,7 @@ export default defineConfig({
|
|
|
138
138
|
{ text: "Salesforce", link: "/supported-sources/salesforce.md" },
|
|
139
139
|
{ text: "Shopify", link: "/supported-sources/shopify.md" },
|
|
140
140
|
{ text: "Slack", link: "/supported-sources/slack.md" },
|
|
141
|
+
{ text: "Spanner", link: "/supported-sources/spanner.md" },
|
|
141
142
|
{ text: "Stripe", link: "/supported-sources/stripe.md" },
|
|
142
143
|
{ text: "TikTok Ads", link: "/supported-sources/tiktok-ads.md" },
|
|
143
144
|
{ text: "Zendesk", link: "/supported-sources/zendesk.md" },
|
|
Binary file
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Spanner
|
|
2
|
+
[Spanner](https://cloud.google.com/spanner) is a fully managed, scalable, and strongly consistent database service.
|
|
3
|
+
|
|
4
|
+
ingestr supports Spanner as a source.
|
|
5
|
+
|
|
6
|
+
## URI format
|
|
7
|
+
The URI format for Spanner is as follows:
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
```plaintext
|
|
11
|
+
spanner://?project_id=<project_id>&instance_id=<instance_id>&database=<database>&credentials_path=</path/to/service/account.json>
|
|
12
|
+
```
|
|
13
|
+
or
|
|
14
|
+
```plaintext
|
|
15
|
+
spanner://?project_id=<project_id>&instance_id=<instance_id>&database=<database>&credentials_base64=<base64_encoded_credentials>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
URI parameters:
|
|
19
|
+
- `project_id`: Your Google Cloud project ID (e.g., "my-project-123")
|
|
20
|
+
- `instance_id`: The Spanner instance ID (e.g., "my-instance")
|
|
21
|
+
- `database`: The database name (e.g., "my-database")
|
|
22
|
+
- `credentials_path`: Path to your Google Cloud service account JSON file
|
|
23
|
+
- `credentials_base64`: Base64-encoded service account credentials (alternative to credentials_path)
|
|
24
|
+
|
|
25
|
+
Let's say we have the above credentials. Here's a sample command that will copy the data from Spanner (GoogleSQL) to DuckDB.
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
ingestr ingest \
|
|
29
|
+
--source-uri 'spanner://?project_id=id_123&instance_id=instance_123&database=db_123&credentials_path=./service_account.json' \
|
|
30
|
+
--source-table 'users' \
|
|
31
|
+
--dest-uri duckdb:///spanner.duckdb \
|
|
32
|
+
--dest-table 'dest.output'
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
<img alt="pipedrive_img" src="../media/spanner_ingestion.png"/>
|
|
37
|
+
|
|
38
|
+
> [!NOTE]
|
|
39
|
+
> Currently, only GoogleSQL databases are supported.
|
|
40
|
+
|
|
41
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = "v0.13.41"
|
|
@@ -52,7 +52,10 @@ class SqlSource:
|
|
|
52
52
|
def dlt_source(self, uri: str, table: str, **kwargs):
|
|
53
53
|
table_fields = TableDefinition(dataset="custom", table="custom")
|
|
54
54
|
if not table.startswith("query:"):
|
|
55
|
-
|
|
55
|
+
if uri.startswith("spanner://"):
|
|
56
|
+
table_fields = TableDefinition(dataset="", table=table)
|
|
57
|
+
else:
|
|
58
|
+
table_fields = table_string_to_dataclass(table)
|
|
56
59
|
|
|
57
60
|
incremental = None
|
|
58
61
|
if kwargs.get("incremental_key"):
|
|
@@ -113,6 +116,45 @@ class SqlSource:
|
|
|
113
116
|
if uri.startswith("db2://"):
|
|
114
117
|
uri = uri.replace("db2://", "db2+ibm_db://")
|
|
115
118
|
|
|
119
|
+
if uri.startswith("spanner://"):
|
|
120
|
+
parsed_uri = urlparse(uri)
|
|
121
|
+
query_params = parse_qs(parsed_uri.query)
|
|
122
|
+
|
|
123
|
+
project_id_param = query_params.get("project_id")
|
|
124
|
+
instance_id_param = query_params.get("instance_id")
|
|
125
|
+
database_param = query_params.get("database")
|
|
126
|
+
|
|
127
|
+
cred_path = query_params.get("credentials_path")
|
|
128
|
+
cred_base64 = query_params.get("credentials_base64")
|
|
129
|
+
|
|
130
|
+
if not project_id_param or not instance_id_param or not database_param:
|
|
131
|
+
raise ValueError(
|
|
132
|
+
"project_id, instance_id and database are required in the URI to get data from Google Spanner"
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
project_id = project_id_param[0]
|
|
136
|
+
instance_id = instance_id_param[0]
|
|
137
|
+
database = database_param[0]
|
|
138
|
+
|
|
139
|
+
if not cred_path and not cred_base64:
|
|
140
|
+
raise ValueError(
|
|
141
|
+
"credentials_path or credentials_base64 is required in the URI to get data from Google Sheets"
|
|
142
|
+
)
|
|
143
|
+
if cred_path:
|
|
144
|
+
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = cred_path[0]
|
|
145
|
+
elif cred_base64:
|
|
146
|
+
credentials = json.loads(
|
|
147
|
+
base64.b64decode(cred_base64[0]).decode("utf-8")
|
|
148
|
+
)
|
|
149
|
+
temp = tempfile.NamedTemporaryFile(
|
|
150
|
+
mode="w", delete=False, suffix=".json"
|
|
151
|
+
)
|
|
152
|
+
json.dump(credentials, temp)
|
|
153
|
+
temp.close()
|
|
154
|
+
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = temp.name
|
|
155
|
+
|
|
156
|
+
uri = f"spanner+spanner:///projects/{project_id}/instances/{instance_id}/databases/{database}"
|
|
157
|
+
|
|
116
158
|
from dlt.common.libs.sql_alchemy import (
|
|
117
159
|
Engine,
|
|
118
160
|
MetaData,
|
|
@@ -2325,7 +2367,9 @@ class ElasticsearchSource:
|
|
|
2325
2367
|
|
|
2326
2368
|
index = table
|
|
2327
2369
|
if not index:
|
|
2328
|
-
raise ValueError(
|
|
2370
|
+
raise ValueError(
|
|
2371
|
+
"Table name must be provided which is the index name in elasticsearch"
|
|
2372
|
+
)
|
|
2329
2373
|
|
|
2330
2374
|
query_params = parsed.query
|
|
2331
2375
|
params = parse_qs(query_params)
|
|
@@ -16,7 +16,9 @@ aioitertools==0.12.0
|
|
|
16
16
|
aiosignal==1.3.2
|
|
17
17
|
# via aiohttp
|
|
18
18
|
alembic==1.15.1
|
|
19
|
-
# via
|
|
19
|
+
# via
|
|
20
|
+
# databricks-sql-connector
|
|
21
|
+
# sqlalchemy-spanner
|
|
20
22
|
annotated-types==0.7.0
|
|
21
23
|
# via pydantic
|
|
22
24
|
asana==3.2.3
|
|
@@ -147,6 +149,7 @@ google-api-core==2.24.1
|
|
|
147
149
|
# google-cloud-bigquery
|
|
148
150
|
# google-cloud-bigquery-storage
|
|
149
151
|
# google-cloud-core
|
|
152
|
+
# google-cloud-spanner
|
|
150
153
|
# google-cloud-storage
|
|
151
154
|
# sqlalchemy-bigquery
|
|
152
155
|
google-api-python-client==2.130.0
|
|
@@ -176,7 +179,12 @@ google-cloud-bigquery-storage==2.24.0
|
|
|
176
179
|
google-cloud-core==2.4.2
|
|
177
180
|
# via
|
|
178
181
|
# google-cloud-bigquery
|
|
182
|
+
# google-cloud-spanner
|
|
179
183
|
# google-cloud-storage
|
|
184
|
+
google-cloud-spanner==3.54.0
|
|
185
|
+
# via
|
|
186
|
+
# -r requirements.in
|
|
187
|
+
# sqlalchemy-spanner
|
|
180
188
|
google-cloud-storage==3.1.0
|
|
181
189
|
# via gcsfs
|
|
182
190
|
google-crc32c==1.6.0
|
|
@@ -191,13 +199,21 @@ googleapis-common-protos==1.69.0
|
|
|
191
199
|
# via
|
|
192
200
|
# google-ads
|
|
193
201
|
# google-api-core
|
|
202
|
+
# grpc-google-iam-v1
|
|
194
203
|
# grpcio-status
|
|
195
204
|
greenlet==3.2.2
|
|
196
205
|
# via sqlalchemy
|
|
206
|
+
grpc-google-iam-v1==0.14.2
|
|
207
|
+
# via google-cloud-spanner
|
|
208
|
+
grpc-interceptor==0.15.4
|
|
209
|
+
# via google-cloud-spanner
|
|
197
210
|
grpcio==1.70.0
|
|
198
211
|
# via
|
|
199
212
|
# google-ads
|
|
200
213
|
# google-api-core
|
|
214
|
+
# googleapis-common-protos
|
|
215
|
+
# grpc-google-iam-v1
|
|
216
|
+
# grpc-interceptor
|
|
201
217
|
# grpcio-status
|
|
202
218
|
grpcio-status==1.62.3
|
|
203
219
|
# via
|
|
@@ -321,13 +337,16 @@ proto-plus==1.26.0
|
|
|
321
337
|
# google-analytics-data
|
|
322
338
|
# google-api-core
|
|
323
339
|
# google-cloud-bigquery-storage
|
|
340
|
+
# google-cloud-spanner
|
|
324
341
|
protobuf==4.25.6
|
|
325
342
|
# via
|
|
326
343
|
# google-ads
|
|
327
344
|
# google-analytics-data
|
|
328
345
|
# google-api-core
|
|
329
346
|
# google-cloud-bigquery-storage
|
|
347
|
+
# google-cloud-spanner
|
|
330
348
|
# googleapis-common-protos
|
|
349
|
+
# grpc-google-iam-v1
|
|
331
350
|
# grpcio-status
|
|
332
351
|
# proto-plus
|
|
333
352
|
psutil==6.1.1
|
|
@@ -493,16 +512,21 @@ sqlalchemy==1.4.52
|
|
|
493
512
|
# sqlalchemy-bigquery
|
|
494
513
|
# sqlalchemy-hana
|
|
495
514
|
# sqlalchemy-redshift
|
|
515
|
+
# sqlalchemy-spanner
|
|
496
516
|
sqlalchemy-bigquery==1.12.1
|
|
497
517
|
# via -r requirements.in
|
|
498
518
|
sqlalchemy-hana==2.0.0
|
|
499
519
|
# via -r requirements.in
|
|
500
520
|
sqlalchemy-redshift==0.8.14
|
|
501
521
|
# via -r requirements.in
|
|
522
|
+
sqlalchemy-spanner==1.11.0
|
|
523
|
+
# via -r requirements.in
|
|
502
524
|
sqlalchemy2-stubs==0.0.2a38
|
|
503
525
|
# via -r requirements.in
|
|
504
526
|
sqlglot==26.12.1
|
|
505
527
|
# via dlt
|
|
528
|
+
sqlparse==0.5.3
|
|
529
|
+
# via google-cloud-spanner
|
|
506
530
|
stripe==10.7.0
|
|
507
531
|
# via -r requirements.in
|
|
508
532
|
tenacity==9.0.0
|
|
@@ -16,7 +16,9 @@ aioitertools==0.12.0
|
|
|
16
16
|
aiosignal==1.3.2
|
|
17
17
|
# via aiohttp
|
|
18
18
|
alembic==1.15.2
|
|
19
|
-
# via
|
|
19
|
+
# via
|
|
20
|
+
# databricks-sql-connector
|
|
21
|
+
# sqlalchemy-spanner
|
|
20
22
|
annotated-types==0.7.0
|
|
21
23
|
# via pydantic
|
|
22
24
|
asana==3.2.3
|
|
@@ -147,6 +149,7 @@ google-api-core==2.24.2
|
|
|
147
149
|
# google-cloud-bigquery
|
|
148
150
|
# google-cloud-bigquery-storage
|
|
149
151
|
# google-cloud-core
|
|
152
|
+
# google-cloud-spanner
|
|
150
153
|
# google-cloud-storage
|
|
151
154
|
# sqlalchemy-bigquery
|
|
152
155
|
google-api-python-client==2.130.0
|
|
@@ -176,7 +179,12 @@ google-cloud-bigquery-storage==2.24.0
|
|
|
176
179
|
google-cloud-core==2.4.3
|
|
177
180
|
# via
|
|
178
181
|
# google-cloud-bigquery
|
|
182
|
+
# google-cloud-spanner
|
|
179
183
|
# google-cloud-storage
|
|
184
|
+
google-cloud-spanner==3.54.0
|
|
185
|
+
# via
|
|
186
|
+
# -r requirements.in
|
|
187
|
+
# sqlalchemy-spanner
|
|
180
188
|
google-cloud-storage==3.1.0
|
|
181
189
|
# via gcsfs
|
|
182
190
|
google-crc32c==1.7.1
|
|
@@ -191,13 +199,21 @@ googleapis-common-protos==1.69.2
|
|
|
191
199
|
# via
|
|
192
200
|
# google-ads
|
|
193
201
|
# google-api-core
|
|
202
|
+
# grpc-google-iam-v1
|
|
194
203
|
# grpcio-status
|
|
195
204
|
greenlet==3.1.1
|
|
196
205
|
# via sqlalchemy
|
|
206
|
+
grpc-google-iam-v1==0.14.2
|
|
207
|
+
# via google-cloud-spanner
|
|
208
|
+
grpc-interceptor==0.15.4
|
|
209
|
+
# via google-cloud-spanner
|
|
197
210
|
grpcio==1.71.0
|
|
198
211
|
# via
|
|
199
212
|
# google-ads
|
|
200
213
|
# google-api-core
|
|
214
|
+
# googleapis-common-protos
|
|
215
|
+
# grpc-google-iam-v1
|
|
216
|
+
# grpc-interceptor
|
|
201
217
|
# grpcio-status
|
|
202
218
|
grpcio-status==1.62.3
|
|
203
219
|
# via
|
|
@@ -315,13 +331,16 @@ proto-plus==1.26.1
|
|
|
315
331
|
# google-analytics-data
|
|
316
332
|
# google-api-core
|
|
317
333
|
# google-cloud-bigquery-storage
|
|
334
|
+
# google-cloud-spanner
|
|
318
335
|
protobuf==4.25.6
|
|
319
336
|
# via
|
|
320
337
|
# google-ads
|
|
321
338
|
# google-analytics-data
|
|
322
339
|
# google-api-core
|
|
323
340
|
# google-cloud-bigquery-storage
|
|
341
|
+
# google-cloud-spanner
|
|
324
342
|
# googleapis-common-protos
|
|
343
|
+
# grpc-google-iam-v1
|
|
325
344
|
# grpcio-status
|
|
326
345
|
# proto-plus
|
|
327
346
|
psutil==6.1.1
|
|
@@ -486,16 +505,21 @@ sqlalchemy==1.4.52
|
|
|
486
505
|
# sqlalchemy-bigquery
|
|
487
506
|
# sqlalchemy-hana
|
|
488
507
|
# sqlalchemy-redshift
|
|
508
|
+
# sqlalchemy-spanner
|
|
489
509
|
sqlalchemy-bigquery==1.12.1
|
|
490
510
|
# via -r requirements.in
|
|
491
511
|
sqlalchemy-hana==2.0.0
|
|
492
512
|
# via -r requirements.in
|
|
493
513
|
sqlalchemy-redshift==0.8.14
|
|
494
514
|
# via -r requirements.in
|
|
515
|
+
sqlalchemy-spanner==1.11.0
|
|
516
|
+
# via -r requirements.in
|
|
495
517
|
sqlalchemy2-stubs==0.0.2a38
|
|
496
518
|
# via -r requirements.in
|
|
497
519
|
sqlglot==26.12.1
|
|
498
520
|
# via dlt
|
|
521
|
+
sqlparse==0.5.3
|
|
522
|
+
# via google-cloud-spanner
|
|
499
523
|
stripe==10.7.0
|
|
500
524
|
# via -r requirements.in
|
|
501
525
|
tenacity==9.0.0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
version = "v0.13.40"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|