ingestr 0.13.51__tar.gz → 0.13.52__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.51 → ingestr-0.13.52}/PKG-INFO +1 -1
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/solidgate.md +3 -2
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/sqlite.md +1 -1
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/main.py +19 -2
- ingestr-0.13.52/ingestr/src/buildinfo.py +1 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/destinations.py +12 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/factory.py +3 -1
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/filters.py +14 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/solidgate/__init__.py +3 -3
- ingestr-0.13.51/ingestr/src/buildinfo.py +0 -1
- {ingestr-0.13.51 → ingestr-0.13.52}/.dockerignore +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.githooks/pre-commit-hook.sh +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.github/workflows/deploy-docs.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.github/workflows/release.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.github/workflows/secrets-scan.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.github/workflows/tests.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.gitignore +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.gitleaksignore +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.python-version +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/.vale.ini +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/Dockerfile +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/LICENSE.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/Makefile +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/README.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/.vitepress/config.mjs +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/.vitepress/theme/custom.css +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/.vitepress/theme/index.js +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/commands/example-uris.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/commands/ingest.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/getting-started/core-concepts.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/getting-started/incremental-loading.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/getting-started/quickstart.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/getting-started/telemetry.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/index.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/applovin_max.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/athena.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/clickhouse_img.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/freshdesk_ingestion.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/gcp_spanner_ingestion.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/github.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/google_analytics_realtime_report.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/googleanalytics.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/ingestion_elasticsearch_img.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/kinesis.bigquery.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/linkedin_ads.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/personio.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/personio_duckdb.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/phantombuster.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/pipedrive.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/stripe_postgres.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/media/tiktok.png +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/adjust.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/airtable.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/applovin.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/applovin_max.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/appsflyer.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/appstore.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/asana.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/athena.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/attio.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/bigquery.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/chess.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/clickhouse.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/csv.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/custom_queries.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/databricks.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/db2.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/duckdb.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/dynamodb.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/elasticsearch.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/facebook-ads.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/frankfurter.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/freshdesk.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/gcs.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/github.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/google-ads.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/google_analytics.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/gorgias.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/gsheets.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/hubspot.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/kafka.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/kinesis.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/klaviyo.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/linkedin_ads.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/mongodb.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/mssql.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/mysql.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/notion.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/oracle.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/personio.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/phantombuster.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/pipedrive.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/postgres.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/redshift.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/s3.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/salesforce.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/sap-hana.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/shopify.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/slack.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/smartsheets.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/snowflake.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/spanner.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/stripe.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/tiktok-ads.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/supported-sources/zendesk.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/tutorials/load-kinesis-bigquery.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/tutorials/load-personio-duckdb.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/docs/tutorials/load-stripe-postgres.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/conftest.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/.gitignore +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/adjust/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/adjust/adjust_helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/airtable/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/applovin/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/applovin_max/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/appsflyer/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/appsflyer/client.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/appstore/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/appstore/client.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/appstore/errors.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/appstore/models.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/appstore/resources.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/arrow/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/asana_source/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/asana_source/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/asana_source/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/attio/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/attio/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/blob.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/chess/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/chess/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/chess/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/collector/spinner.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/dynamodb/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/elasticsearch/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/errors.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/facebook_ads/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/facebook_ads/exceptions.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/facebook_ads/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/facebook_ads/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/filesystem/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/filesystem/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/filesystem/readers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/frankfurter/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/frankfurter/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/freshdesk/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/freshdesk/freshdesk_client.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/freshdesk/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/github/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/github/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/github/queries.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/github/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_ads/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_ads/field.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_ads/metrics.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_ads/predicates.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_ads/reports.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_analytics/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_analytics/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_sheets/README.md +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_sheets/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/gorgias/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/gorgias/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/http_client.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/hubspot/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/hubspot/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/hubspot/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/kafka/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/kafka/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/kinesis/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/kinesis/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/klaviyo/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/klaviyo/client.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/klaviyo/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/linkedin_ads/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/linkedin_ads/dimension_time_enum.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/linkedin_ads/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/loader.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/mongodb/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/mongodb/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/notion/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/notion/helpers/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/notion/helpers/client.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/notion/helpers/database.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/notion/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/partition.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/personio/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/personio/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/phantombuster/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/phantombuster/client.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/pipedrive/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/pipedrive/helpers/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/pipedrive/helpers/custom_fields_munger.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/pipedrive/helpers/pages.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/pipedrive/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/pipedrive/typing.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/resource.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/salesforce/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/salesforce/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/shopify/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/shopify/exceptions.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/shopify/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/shopify/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/slack/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/slack/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/slack/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/smartsheets/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/solidgate/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/sources.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/sql_database/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/sql_database/callbacks.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/stripe_analytics/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/stripe_analytics/helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/stripe_analytics/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/table_definition.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/telemetry/event.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/testdata/fakebqcredentials.json +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/tiktok_ads/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/time.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/version.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/zendesk/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/zendesk/helpers/__init__.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/zendesk/helpers/credentials.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/src/zendesk/settings.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/testdata/.gitignore +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/testdata/create_replace.csv +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/testdata/delete_insert_expected.csv +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/testdata/delete_insert_part1.csv +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/testdata/delete_insert_part2.csv +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/testdata/merge_expected.csv +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/testdata/merge_part1.csv +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/testdata/merge_part2.csv +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/ingestr/tests/unit/test_smartsheets.py +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/package-lock.json +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/package.json +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/pyproject.toml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/requirements-dev.txt +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/requirements.in +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/requirements.txt +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/requirements_arm64.txt +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/resources/demo.gif +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/resources/demo.tape +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/resources/ingestr.svg +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/AMPM.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Acronyms.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Colons.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Contractions.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/DateFormat.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Ellipses.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/EmDash.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Exclamation.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/FirstPerson.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Gender.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/GenderBias.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/HeadingPunctuation.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Headings.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Latin.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/LyHyphens.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/OptionalPlurals.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Ordinal.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/OxfordComma.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Parens.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Passive.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Periods.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Quotes.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Ranges.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Semicolons.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Slang.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Spacing.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Spelling.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Units.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/We.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/Will.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/WordList.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/meta.json +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/Google/vocab.txt +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/bruin/Ingestr.yml +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/styles/config/vocabularies/bruin/accept.txt +0 -0
- {ingestr-0.13.51 → ingestr-0.13.52}/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.52
|
|
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
|
|
@@ -39,8 +39,9 @@ The result of this command will be a table in the `Solidgate.duckdb` database wi
|
|
|
39
39
|
|
|
40
40
|
Solidgate source allows ingesting the following sources into separate tables:
|
|
41
41
|
- `subscriptions`: Provides a comprehensive view of customer subscriptions, including subscription IDs, statuses, and key timestamps such as creation, update, and expiration dates.
|
|
42
|
-
- `
|
|
43
|
-
- `
|
|
42
|
+
- `apm_orders`: Provides essential information for anti-fraud purposes, including order IDs, transaction statuses, amounts, currencies, and payment methods, along with crucial customer details such as email addresses.
|
|
43
|
+
- `card_orders`: Provides detailed information on orders processed via card payments, including transaction data, payment status, and customer details.
|
|
44
|
+
- `financial_entries`: Provides a detailed transaction-level breakdown of financial records.
|
|
44
45
|
|
|
45
46
|
Use these as `--source-table` parameter in the `ingestr ingest` command.
|
|
46
47
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# SQLite
|
|
2
2
|
SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.
|
|
3
3
|
|
|
4
|
-
ingestr supports SQLite as a source.
|
|
4
|
+
ingestr supports SQLite as a source and a destination.
|
|
5
5
|
|
|
6
6
|
## URI format
|
|
7
7
|
The URI format for SQLite is as follows:
|
|
@@ -58,6 +58,7 @@ class LoaderFileFormat(str, Enum):
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
class SqlBackend(str, Enum):
|
|
61
|
+
default = "default"
|
|
61
62
|
sqlalchemy = "sqlalchemy"
|
|
62
63
|
pyarrow = "pyarrow"
|
|
63
64
|
connectorx = "connectorx"
|
|
@@ -187,7 +188,7 @@ def ingest(
|
|
|
187
188
|
help="The SQL backend to use",
|
|
188
189
|
envvar=["SQL_BACKEND", "INGESTR_SQL_BACKEND"],
|
|
189
190
|
),
|
|
190
|
-
] = SqlBackend.
|
|
191
|
+
] = SqlBackend.default, # type: ignore
|
|
191
192
|
loader_file_format: Annotated[
|
|
192
193
|
Optional[LoaderFileFormat],
|
|
193
194
|
typer.Option(
|
|
@@ -289,7 +290,11 @@ def ingest(
|
|
|
289
290
|
from ingestr.src.collector.spinner import SpinnerCollector
|
|
290
291
|
from ingestr.src.destinations import AthenaDestination
|
|
291
292
|
from ingestr.src.factory import SourceDestinationFactory
|
|
292
|
-
from ingestr.src.filters import
|
|
293
|
+
from ingestr.src.filters import (
|
|
294
|
+
cast_set_to_list,
|
|
295
|
+
cast_spanner_types,
|
|
296
|
+
handle_mysql_empty_dates,
|
|
297
|
+
)
|
|
293
298
|
from ingestr.src.sources import MongoDbSource
|
|
294
299
|
|
|
295
300
|
def report_errors(run_info: LoadInfo):
|
|
@@ -517,6 +522,15 @@ def ingest(
|
|
|
517
522
|
if interval_end:
|
|
518
523
|
interval_end = interval_end.date() # type: ignore
|
|
519
524
|
|
|
525
|
+
if factory.source_scheme.startswith("spanner"):
|
|
526
|
+
# we tend to use the 'pyarrow' backend in general, however, it has issues with JSON objects, so we override it to 'sqlalchemy' for Spanner.
|
|
527
|
+
if sql_backend.value == SqlBackend.default:
|
|
528
|
+
sql_backend = SqlBackend.sqlalchemy
|
|
529
|
+
|
|
530
|
+
# this allows us to identify the cases where the user does not have a preference, so that for some sources we can override it.
|
|
531
|
+
if sql_backend == SqlBackend.default:
|
|
532
|
+
sql_backend = SqlBackend.pyarrow
|
|
533
|
+
|
|
520
534
|
dlt_source = source.dlt_source(
|
|
521
535
|
uri=source_uri,
|
|
522
536
|
table=source_table,
|
|
@@ -535,6 +549,9 @@ def ingest(
|
|
|
535
549
|
if factory.source_scheme.startswith("mysql"):
|
|
536
550
|
resource.for_each(dlt_source, lambda x: x.add_map(handle_mysql_empty_dates))
|
|
537
551
|
|
|
552
|
+
if factory.source_scheme.startswith("spanner"):
|
|
553
|
+
resource.for_each(dlt_source, lambda x: x.add_map(cast_spanner_types))
|
|
554
|
+
|
|
538
555
|
if yield_limit:
|
|
539
556
|
resource.for_each(dlt_source, lambda x: x.add_limit(yield_limit))
|
|
540
557
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = "v0.13.52"
|
|
@@ -468,3 +468,15 @@ class S3Destination:
|
|
|
468
468
|
|
|
469
469
|
def post_load(self) -> None:
|
|
470
470
|
pass
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
class SqliteDestination(GenericSqlDestination):
|
|
474
|
+
def dlt_dest(self, uri: str, **kwargs):
|
|
475
|
+
return dlt.destinations.sqlalchemy(credentials=uri)
|
|
476
|
+
|
|
477
|
+
def dlt_run_params(self, uri: str, table: str, **kwargs):
|
|
478
|
+
return {
|
|
479
|
+
#https://dlthub.com/docs/dlt-ecosystem/destinations/sqlalchemy#dataset-files
|
|
480
|
+
"dataset_name": "main",
|
|
481
|
+
"table_name": table,
|
|
482
|
+
}
|
|
@@ -15,6 +15,7 @@ from ingestr.src.destinations import (
|
|
|
15
15
|
RedshiftDestination,
|
|
16
16
|
S3Destination,
|
|
17
17
|
SnowflakeDestination,
|
|
18
|
+
SqliteDestination,
|
|
18
19
|
SynapseDestination,
|
|
19
20
|
)
|
|
20
21
|
from ingestr.src.sources import (
|
|
@@ -54,12 +55,12 @@ from ingestr.src.sources import (
|
|
|
54
55
|
SalesforceSource,
|
|
55
56
|
ShopifySource,
|
|
56
57
|
SlackSource,
|
|
58
|
+
SmartsheetSource,
|
|
57
59
|
SolidgateSource,
|
|
58
60
|
SqlSource,
|
|
59
61
|
StripeAnalyticsSource,
|
|
60
62
|
TikTokSource,
|
|
61
63
|
ZendeskSource,
|
|
62
|
-
SmartsheetSource,
|
|
63
64
|
)
|
|
64
65
|
|
|
65
66
|
SQL_SOURCE_SCHEMES = [
|
|
@@ -182,6 +183,7 @@ class SourceDestinationFactory:
|
|
|
182
183
|
"clickhouse+native": ClickhouseDestination,
|
|
183
184
|
"clickhouse": ClickhouseDestination,
|
|
184
185
|
"s3": S3Destination,
|
|
186
|
+
"sqlite": SqliteDestination,
|
|
185
187
|
}
|
|
186
188
|
|
|
187
189
|
def __init__(self, source_uri: str, destination_uri: str):
|
|
@@ -7,6 +7,20 @@ def cast_set_to_list(row):
|
|
|
7
7
|
return row
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
def cast_spanner_types(row):
|
|
11
|
+
if not isinstance(row, dict):
|
|
12
|
+
return row
|
|
13
|
+
|
|
14
|
+
from google.cloud.spanner_v1.data_types import JsonObject
|
|
15
|
+
|
|
16
|
+
for key in row.keys():
|
|
17
|
+
if isinstance(row[key], JsonObject):
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
row[key] = json.loads(row[key].serialize())
|
|
21
|
+
return row
|
|
22
|
+
|
|
23
|
+
|
|
10
24
|
def handle_mysql_empty_dates(row):
|
|
11
25
|
# MySQL returns empty dates as 0000-00-00, which is not a valid date, we handle them here.
|
|
12
26
|
if not isinstance(row, dict):
|
|
@@ -43,7 +43,7 @@ def solidgate_source(
|
|
|
43
43
|
yield solidgate_client.fetch_data(path, date_from=start_dt, date_to=end_dt)
|
|
44
44
|
|
|
45
45
|
@dlt.resource(
|
|
46
|
-
name="
|
|
46
|
+
name="apm_orders",
|
|
47
47
|
write_disposition="merge",
|
|
48
48
|
primary_key="order_id",
|
|
49
49
|
columns={
|
|
@@ -69,7 +69,7 @@ def solidgate_source(
|
|
|
69
69
|
yield solidgate_client.fetch_data(path, date_from=start_dt, date_to=end_dt)
|
|
70
70
|
|
|
71
71
|
@dlt.resource(
|
|
72
|
-
name="
|
|
72
|
+
name="card_orders",
|
|
73
73
|
write_disposition="merge",
|
|
74
74
|
primary_key="order_id",
|
|
75
75
|
columns={
|
|
@@ -95,7 +95,7 @@ def solidgate_source(
|
|
|
95
95
|
yield solidgate_client.fetch_data(path, date_from=start_dt, date_to=end_dt)
|
|
96
96
|
|
|
97
97
|
@dlt.resource(
|
|
98
|
-
name="
|
|
98
|
+
name="financial_entries",
|
|
99
99
|
write_disposition="merge",
|
|
100
100
|
primary_key="id",
|
|
101
101
|
columns={
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
version = "v0.13.51"
|
|
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
|
|
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
|