ingestr 0.13.52__tar.gz → 0.13.54__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.52 → ingestr-0.13.54}/.gitignore +1 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/PKG-INFO +58 -4
- {ingestr-0.13.52 → ingestr-0.13.54}/README.md +42 -2
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/.vitepress/config.mjs +3 -0
- ingestr-0.13.54/docs/media/cratedb-source.png +0 -0
- ingestr-0.13.54/docs/media/mixpanel_ingestion.png +0 -0
- ingestr-0.13.54/docs/media/quickbook_ingestion.png +0 -0
- ingestr-0.13.54/docs/media/sftp.png +0 -0
- ingestr-0.13.54/docs/supported-sources/cratedb.md +80 -0
- ingestr-0.13.54/docs/supported-sources/mixpanel.md +46 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/mysql.md +3 -3
- ingestr-0.13.54/docs/supported-sources/quickbooks.md +49 -0
- ingestr-0.13.54/docs/supported-sources/sftp.md +43 -0
- ingestr-0.13.54/ingestr/src/buildinfo.py +1 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/destinations.py +16 -1
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/factory.py +10 -0
- ingestr-0.13.54/ingestr/src/mixpanel/__init__.py +62 -0
- ingestr-0.13.54/ingestr/src/mixpanel/client.py +99 -0
- ingestr-0.13.54/ingestr/src/quickbooks/__init__.py +117 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/sources.py +175 -26
- {ingestr-0.13.52 → ingestr-0.13.54}/requirements.in +3 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/requirements.txt +54 -4
- {ingestr-0.13.52 → ingestr-0.13.54}/requirements_arm64.txt +53 -3
- ingestr-0.13.52/ingestr/src/buildinfo.py +0 -1
- {ingestr-0.13.52 → ingestr-0.13.54}/.dockerignore +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/.githooks/pre-commit-hook.sh +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/.github/workflows/deploy-docs.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/.github/workflows/release.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/.github/workflows/secrets-scan.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/.github/workflows/tests.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/.gitleaksignore +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/.python-version +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/.vale.ini +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/Dockerfile +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/LICENSE.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/Makefile +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/.vitepress/theme/custom.css +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/.vitepress/theme/index.js +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/commands/example-uris.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/commands/ingest.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/getting-started/core-concepts.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/getting-started/incremental-loading.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/getting-started/quickstart.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/getting-started/telemetry.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/index.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/applovin_max.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/athena.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/clickhouse_img.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/freshdesk_ingestion.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/gcp_spanner_ingestion.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/github.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/google_analytics_realtime_report.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/googleanalytics.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/ingestion_elasticsearch_img.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/kinesis.bigquery.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/linkedin_ads.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/personio.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/personio_duckdb.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/phantombuster.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/pipedrive.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/stripe_postgres.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/media/tiktok.png +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/adjust.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/airtable.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/applovin.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/applovin_max.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/appsflyer.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/appstore.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/asana.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/athena.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/attio.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/bigquery.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/chess.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/clickhouse.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/csv.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/custom_queries.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/databricks.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/db2.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/duckdb.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/dynamodb.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/elasticsearch.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/facebook-ads.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/frankfurter.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/freshdesk.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/gcs.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/github.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/google-ads.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/google_analytics.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/gorgias.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/gsheets.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/hubspot.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/kafka.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/kinesis.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/klaviyo.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/linkedin_ads.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/mongodb.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/mssql.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/notion.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/oracle.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/personio.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/phantombuster.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/pipedrive.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/postgres.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/redshift.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/s3.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/salesforce.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/sap-hana.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/shopify.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/slack.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/smartsheets.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/snowflake.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/solidgate.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/spanner.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/sqlite.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/stripe.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/tiktok-ads.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/supported-sources/zendesk.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/tutorials/load-kinesis-bigquery.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/tutorials/load-personio-duckdb.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/docs/tutorials/load-stripe-postgres.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/conftest.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/main.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/.gitignore +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/adjust/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/adjust/adjust_helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/airtable/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/applovin/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/applovin_max/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/appsflyer/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/appsflyer/client.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/appstore/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/appstore/client.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/appstore/errors.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/appstore/models.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/appstore/resources.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/arrow/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/asana_source/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/asana_source/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/asana_source/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/attio/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/attio/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/blob.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/chess/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/chess/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/chess/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/collector/spinner.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/dynamodb/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/elasticsearch/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/errors.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/facebook_ads/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/facebook_ads/exceptions.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/facebook_ads/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/facebook_ads/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/filesystem/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/filesystem/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/filesystem/readers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/filters.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/frankfurter/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/frankfurter/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/freshdesk/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/freshdesk/freshdesk_client.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/freshdesk/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/github/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/github/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/github/queries.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/github/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_ads/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_ads/field.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_ads/metrics.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_ads/predicates.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_ads/reports.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_analytics/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_analytics/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_sheets/README.md +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_sheets/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/gorgias/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/gorgias/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/http_client.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/hubspot/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/hubspot/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/hubspot/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/kafka/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/kafka/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/kinesis/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/kinesis/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/klaviyo/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/klaviyo/client.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/klaviyo/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/linkedin_ads/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/linkedin_ads/dimension_time_enum.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/linkedin_ads/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/loader.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/mongodb/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/mongodb/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/notion/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/notion/helpers/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/notion/helpers/client.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/notion/helpers/database.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/notion/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/partition.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/personio/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/personio/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/phantombuster/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/phantombuster/client.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/pipedrive/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/pipedrive/helpers/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/pipedrive/helpers/custom_fields_munger.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/pipedrive/helpers/pages.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/pipedrive/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/pipedrive/typing.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/resource.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/salesforce/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/salesforce/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/shopify/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/shopify/exceptions.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/shopify/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/shopify/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/slack/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/slack/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/slack/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/smartsheets/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/solidgate/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/solidgate/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/sql_database/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/sql_database/callbacks.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/stripe_analytics/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/stripe_analytics/helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/stripe_analytics/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/table_definition.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/telemetry/event.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/testdata/fakebqcredentials.json +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/tiktok_ads/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/time.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/version.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/zendesk/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/zendesk/helpers/__init__.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/zendesk/helpers/credentials.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/src/zendesk/settings.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/testdata/.gitignore +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/testdata/create_replace.csv +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/testdata/delete_insert_expected.csv +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/testdata/delete_insert_part1.csv +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/testdata/delete_insert_part2.csv +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/testdata/merge_expected.csv +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/testdata/merge_part1.csv +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/testdata/merge_part2.csv +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/ingestr/tests/unit/test_smartsheets.py +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/package-lock.json +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/package.json +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/pyproject.toml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/requirements-dev.txt +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/resources/demo.gif +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/resources/demo.tape +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/resources/ingestr.svg +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/AMPM.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Acronyms.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Colons.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Contractions.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/DateFormat.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Ellipses.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/EmDash.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Exclamation.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/FirstPerson.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Gender.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/GenderBias.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/HeadingPunctuation.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Headings.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Latin.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/LyHyphens.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/OptionalPlurals.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Ordinal.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/OxfordComma.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Parens.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Passive.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Periods.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Quotes.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Ranges.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Semicolons.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Slang.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Spacing.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Spelling.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Units.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/We.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/Will.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/WordList.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/meta.json +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/Google/vocab.txt +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/bruin/Ingestr.yml +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/styles/config/vocabularies/bruin/accept.txt +0 -0
- {ingestr-0.13.52 → ingestr-0.13.54}/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.54
|
|
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
|
|
@@ -26,6 +26,7 @@ Requires-Dist: asn1crypto==1.5.1
|
|
|
26
26
|
Requires-Dist: asynch==0.2.4
|
|
27
27
|
Requires-Dist: attrs==25.1.0
|
|
28
28
|
Requires-Dist: backoff==2.2.1
|
|
29
|
+
Requires-Dist: bcrypt==4.3.0
|
|
29
30
|
Requires-Dist: beautifulsoup4==4.13.3
|
|
30
31
|
Requires-Dist: boto3==1.37.1
|
|
31
32
|
Requires-Dist: botocore==1.37.1
|
|
@@ -39,6 +40,7 @@ Requires-Dist: clickhouse-connect==0.8.14
|
|
|
39
40
|
Requires-Dist: clickhouse-driver==0.2.9
|
|
40
41
|
Requires-Dist: clickhouse-sqlalchemy==0.2.7
|
|
41
42
|
Requires-Dist: confluent-kafka==2.8.0
|
|
43
|
+
Requires-Dist: crate==2.0.0
|
|
42
44
|
Requires-Dist: cryptography==44.0.2
|
|
43
45
|
Requires-Dist: curlify==2.2.1
|
|
44
46
|
Requires-Dist: databricks-sql-connector==2.9.3
|
|
@@ -50,15 +52,19 @@ Requires-Dist: dlt==1.10.0
|
|
|
50
52
|
Requires-Dist: dnspython==2.7.0
|
|
51
53
|
Requires-Dist: duckdb-engine==0.17.0
|
|
52
54
|
Requires-Dist: duckdb==1.2.1
|
|
55
|
+
Requires-Dist: ecdsa==0.19.1
|
|
53
56
|
Requires-Dist: elastic-transport==8.17.1
|
|
54
57
|
Requires-Dist: elasticsearch==8.10.1
|
|
58
|
+
Requires-Dist: enum-compat==0.0.3
|
|
55
59
|
Requires-Dist: et-xmlfile==2.0.0
|
|
56
60
|
Requires-Dist: facebook-business==20.0.0
|
|
57
61
|
Requires-Dist: filelock==3.17.0
|
|
58
62
|
Requires-Dist: flatten-json==0.1.14
|
|
59
63
|
Requires-Dist: frozenlist==1.5.0
|
|
60
64
|
Requires-Dist: fsspec==2025.3.2
|
|
65
|
+
Requires-Dist: future==1.0.0
|
|
61
66
|
Requires-Dist: gcsfs==2025.3.2
|
|
67
|
+
Requires-Dist: geojson==3.2.0
|
|
62
68
|
Requires-Dist: gitdb==4.0.12
|
|
63
69
|
Requires-Dist: gitpython==3.1.44
|
|
64
70
|
Requires-Dist: giturlparse==0.12.0
|
|
@@ -77,7 +83,7 @@ Requires-Dist: google-cloud-storage==3.1.0
|
|
|
77
83
|
Requires-Dist: google-crc32c==1.6.0
|
|
78
84
|
Requires-Dist: google-resumable-media==2.7.2
|
|
79
85
|
Requires-Dist: googleapis-common-protos==1.69.0
|
|
80
|
-
Requires-Dist: greenlet==3.2.
|
|
86
|
+
Requires-Dist: greenlet==3.2.3
|
|
81
87
|
Requires-Dist: grpc-google-iam-v1==0.14.2
|
|
82
88
|
Requires-Dist: grpc-interceptor==0.15.4
|
|
83
89
|
Requires-Dist: grpcio-status==1.62.3
|
|
@@ -90,6 +96,7 @@ Requires-Dist: ibm-db-sa==0.4.1
|
|
|
90
96
|
Requires-Dist: ibm-db==3.2.6
|
|
91
97
|
Requires-Dist: idna==3.10
|
|
92
98
|
Requires-Dist: inflection==0.5.1
|
|
99
|
+
Requires-Dist: intuit-oauth==1.2.4
|
|
93
100
|
Requires-Dist: isodate==0.7.2
|
|
94
101
|
Requires-Dist: jmespath==1.0.1
|
|
95
102
|
Requires-Dist: jsonpath-ng==1.7.0
|
|
@@ -113,6 +120,7 @@ Requires-Dist: openpyxl==3.1.5
|
|
|
113
120
|
Requires-Dist: orjson==3.10.15
|
|
114
121
|
Requires-Dist: packaging==24.2
|
|
115
122
|
Requires-Dist: pandas==2.2.3
|
|
123
|
+
Requires-Dist: paramiko==3.5.1
|
|
116
124
|
Requires-Dist: pathvalidate==3.2.3
|
|
117
125
|
Requires-Dist: pendulum==3.0.0
|
|
118
126
|
Requires-Dist: platformdirs==4.3.6
|
|
@@ -137,13 +145,17 @@ Requires-Dist: pygments==2.19.1
|
|
|
137
145
|
Requires-Dist: pyjwt==2.10.1
|
|
138
146
|
Requires-Dist: pymongo==4.11.1
|
|
139
147
|
Requires-Dist: pymysql==1.1.1
|
|
148
|
+
Requires-Dist: pynacl==1.5.0
|
|
140
149
|
Requires-Dist: pyopenssl==25.0.0
|
|
141
150
|
Requires-Dist: pyparsing==3.2.1
|
|
142
151
|
Requires-Dist: pyrate-limiter==3.7.0
|
|
143
152
|
Requires-Dist: python-dateutil==2.9.0.post0
|
|
144
153
|
Requires-Dist: python-dotenv==1.0.1
|
|
154
|
+
Requires-Dist: python-jose==3.5.0
|
|
155
|
+
Requires-Dist: python-quickbooks==0.9.2
|
|
145
156
|
Requires-Dist: pytz==2025.1
|
|
146
157
|
Requires-Dist: pyyaml==6.0.2
|
|
158
|
+
Requires-Dist: rauth==0.7.3
|
|
147
159
|
Requires-Dist: redshift-connector==2.1.5
|
|
148
160
|
Requires-Dist: requests-file==2.1.0
|
|
149
161
|
Requires-Dist: requests-oauthlib==1.3.1
|
|
@@ -170,6 +182,7 @@ Requires-Dist: snowflake-sqlalchemy==1.6.1
|
|
|
170
182
|
Requires-Dist: sortedcontainers==2.4.0
|
|
171
183
|
Requires-Dist: soupsieve==2.6
|
|
172
184
|
Requires-Dist: sqlalchemy-bigquery==1.12.1
|
|
185
|
+
Requires-Dist: sqlalchemy-cratedb==0.42.0.dev2
|
|
173
186
|
Requires-Dist: sqlalchemy-hana==2.0.0
|
|
174
187
|
Requires-Dist: sqlalchemy-redshift==0.8.14
|
|
175
188
|
Requires-Dist: sqlalchemy-spanner==1.11.0
|
|
@@ -192,6 +205,7 @@ Requires-Dist: tzdata==2025.1
|
|
|
192
205
|
Requires-Dist: tzlocal==5.3
|
|
193
206
|
Requires-Dist: uritemplate==4.1.1
|
|
194
207
|
Requires-Dist: urllib3==2.3.0
|
|
208
|
+
Requires-Dist: verlib2==0.3.1
|
|
195
209
|
Requires-Dist: wrapt==1.17.2
|
|
196
210
|
Requires-Dist: yarl==1.18.3
|
|
197
211
|
Requires-Dist: zeep==4.3.1
|
|
@@ -292,11 +306,21 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
292
306
|
<td>✅</td>
|
|
293
307
|
<td>✅</td>
|
|
294
308
|
</tr>
|
|
309
|
+
<tr>
|
|
310
|
+
<td>CrateDB</td>
|
|
311
|
+
<td>✅</td>
|
|
312
|
+
<td>❌</td>
|
|
313
|
+
</tr>
|
|
295
314
|
<tr>
|
|
296
315
|
<td>Databricks</td>
|
|
297
316
|
<td>✅</td>
|
|
298
317
|
<td>✅</td>
|
|
299
318
|
</tr>
|
|
319
|
+
<tr>
|
|
320
|
+
<td>IBM Db2</td>
|
|
321
|
+
<td>✅</td>
|
|
322
|
+
<td>-</td>
|
|
323
|
+
</tr>
|
|
300
324
|
<tr>
|
|
301
325
|
<td>DuckDB</td>
|
|
302
326
|
<td>✅</td>
|
|
@@ -307,6 +331,16 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
307
331
|
<td>✅</td>
|
|
308
332
|
<td>-</td>
|
|
309
333
|
</tr>
|
|
334
|
+
<tr>
|
|
335
|
+
<td>Elasticsearch</td>
|
|
336
|
+
<td>✅</td>
|
|
337
|
+
<td>-</td>
|
|
338
|
+
</tr>
|
|
339
|
+
<tr>
|
|
340
|
+
<td>GCP Spanner</td>
|
|
341
|
+
<td>✅</td>
|
|
342
|
+
<td>-</td>
|
|
343
|
+
</tr>
|
|
310
344
|
<tr>
|
|
311
345
|
<td>Local CSV file</td>
|
|
312
346
|
<td>✅</td>
|
|
@@ -393,6 +427,11 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
393
427
|
<td>✅</td>
|
|
394
428
|
<td>-</td>
|
|
395
429
|
</tr>
|
|
430
|
+
<tr>
|
|
431
|
+
<td>Attio</td>
|
|
432
|
+
<td>✅</td>
|
|
433
|
+
<td>-</td>
|
|
434
|
+
</tr>
|
|
396
435
|
<tr>
|
|
397
436
|
<td>Chess.com</td>
|
|
398
437
|
<td>✅</td>
|
|
@@ -404,7 +443,7 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
404
443
|
<td>-</td>
|
|
405
444
|
</tr>
|
|
406
445
|
<tr>
|
|
407
|
-
<td>
|
|
446
|
+
<td>GitHub</td>
|
|
408
447
|
<td>✅</td>
|
|
409
448
|
<td>-</td>
|
|
410
449
|
</tr>
|
|
@@ -447,6 +486,16 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
447
486
|
<td>Personio</td>
|
|
448
487
|
<td>✅</td>
|
|
449
488
|
<td>-</td>
|
|
489
|
+
</tr>
|
|
490
|
+
<tr>
|
|
491
|
+
<td>Phantombuster</td>
|
|
492
|
+
<td>✅</td>
|
|
493
|
+
<td>-</td>
|
|
494
|
+
</tr>
|
|
495
|
+
<tr>
|
|
496
|
+
<td>Pipedrive</td>
|
|
497
|
+
<td>✅</td>
|
|
498
|
+
<td>-</td>
|
|
450
499
|
</tr>
|
|
451
500
|
<tr>
|
|
452
501
|
<td>S3</td>
|
|
@@ -469,7 +518,12 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
469
518
|
<td>-</td>
|
|
470
519
|
</tr>
|
|
471
520
|
<tr>
|
|
472
|
-
<td>
|
|
521
|
+
<td>Smartsheets</td>
|
|
522
|
+
<td>✅</td>
|
|
523
|
+
<td>-</td>
|
|
524
|
+
</tr>
|
|
525
|
+
<tr>
|
|
526
|
+
<td>Solidgate</td>
|
|
473
527
|
<td>✅</td>
|
|
474
528
|
<td>-</td>
|
|
475
529
|
</tr>
|
|
@@ -87,11 +87,21 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
87
87
|
<td>✅</td>
|
|
88
88
|
<td>✅</td>
|
|
89
89
|
</tr>
|
|
90
|
+
<tr>
|
|
91
|
+
<td>CrateDB</td>
|
|
92
|
+
<td>✅</td>
|
|
93
|
+
<td>❌</td>
|
|
94
|
+
</tr>
|
|
90
95
|
<tr>
|
|
91
96
|
<td>Databricks</td>
|
|
92
97
|
<td>✅</td>
|
|
93
98
|
<td>✅</td>
|
|
94
99
|
</tr>
|
|
100
|
+
<tr>
|
|
101
|
+
<td>IBM Db2</td>
|
|
102
|
+
<td>✅</td>
|
|
103
|
+
<td>-</td>
|
|
104
|
+
</tr>
|
|
95
105
|
<tr>
|
|
96
106
|
<td>DuckDB</td>
|
|
97
107
|
<td>✅</td>
|
|
@@ -102,6 +112,16 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
102
112
|
<td>✅</td>
|
|
103
113
|
<td>-</td>
|
|
104
114
|
</tr>
|
|
115
|
+
<tr>
|
|
116
|
+
<td>Elasticsearch</td>
|
|
117
|
+
<td>✅</td>
|
|
118
|
+
<td>-</td>
|
|
119
|
+
</tr>
|
|
120
|
+
<tr>
|
|
121
|
+
<td>GCP Spanner</td>
|
|
122
|
+
<td>✅</td>
|
|
123
|
+
<td>-</td>
|
|
124
|
+
</tr>
|
|
105
125
|
<tr>
|
|
106
126
|
<td>Local CSV file</td>
|
|
107
127
|
<td>✅</td>
|
|
@@ -188,6 +208,11 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
188
208
|
<td>✅</td>
|
|
189
209
|
<td>-</td>
|
|
190
210
|
</tr>
|
|
211
|
+
<tr>
|
|
212
|
+
<td>Attio</td>
|
|
213
|
+
<td>✅</td>
|
|
214
|
+
<td>-</td>
|
|
215
|
+
</tr>
|
|
191
216
|
<tr>
|
|
192
217
|
<td>Chess.com</td>
|
|
193
218
|
<td>✅</td>
|
|
@@ -199,7 +224,7 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
199
224
|
<td>-</td>
|
|
200
225
|
</tr>
|
|
201
226
|
<tr>
|
|
202
|
-
<td>
|
|
227
|
+
<td>GitHub</td>
|
|
203
228
|
<td>✅</td>
|
|
204
229
|
<td>-</td>
|
|
205
230
|
</tr>
|
|
@@ -242,6 +267,16 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
242
267
|
<td>Personio</td>
|
|
243
268
|
<td>✅</td>
|
|
244
269
|
<td>-</td>
|
|
270
|
+
</tr>
|
|
271
|
+
<tr>
|
|
272
|
+
<td>Phantombuster</td>
|
|
273
|
+
<td>✅</td>
|
|
274
|
+
<td>-</td>
|
|
275
|
+
</tr>
|
|
276
|
+
<tr>
|
|
277
|
+
<td>Pipedrive</td>
|
|
278
|
+
<td>✅</td>
|
|
279
|
+
<td>-</td>
|
|
245
280
|
</tr>
|
|
246
281
|
<tr>
|
|
247
282
|
<td>S3</td>
|
|
@@ -264,7 +299,12 @@ Pull requests are welcome. However, please open an issue first to discuss what y
|
|
|
264
299
|
<td>-</td>
|
|
265
300
|
</tr>
|
|
266
301
|
<tr>
|
|
267
|
-
<td>
|
|
302
|
+
<td>Smartsheets</td>
|
|
303
|
+
<td>✅</td>
|
|
304
|
+
<td>-</td>
|
|
305
|
+
</tr>
|
|
306
|
+
<tr>
|
|
307
|
+
<td>Solidgate</td>
|
|
268
308
|
<td>✅</td>
|
|
269
309
|
<td>-</td>
|
|
270
310
|
</tr>
|
|
@@ -132,12 +132,15 @@ export default defineConfig({
|
|
|
132
132
|
{ text: "HubSpot", link: "/supported-sources/hubspot.md" },
|
|
133
133
|
{ text: "Klaviyo", link: "/supported-sources/klaviyo.md" },
|
|
134
134
|
{ text: "LinkedIn Ads", link: "/supported-sources/linkedin_ads.md" },
|
|
135
|
+
{ text: "Mixpanel", link: "/supported-sources/mixpanel.md" },
|
|
135
136
|
{ text: "Notion", link: "/supported-sources/notion.md" },
|
|
136
137
|
{ text: "Personio", link: "/supported-sources/personio.md" },
|
|
137
138
|
{ text: "PhantomBuster", link: "/supported-sources/phantombuster.md" },
|
|
138
139
|
{ text: "Pipedrive", link: "/supported-sources/pipedrive.md" },
|
|
140
|
+
{ text: "QuickBooks", link: "/supported-sources/quickbooks.md" },
|
|
139
141
|
{ text: "S3", link: "/supported-sources/s3.md" },
|
|
140
142
|
{ text: "Salesforce", link: "/supported-sources/salesforce.md" },
|
|
143
|
+
{ text: "SFTP", link: "/supported-sources/sftp.md"},
|
|
141
144
|
{ text: "Shopify", link: "/supported-sources/shopify.md" },
|
|
142
145
|
{ text: "Slack", link: "/supported-sources/slack.md" },
|
|
143
146
|
{ text: "Smartsheet", link: "/supported-sources/smartsheets.md" },
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# CrateDB
|
|
2
|
+
|
|
3
|
+
[CrateDB] is a distributed and scalable SQL database for storing and analyzing
|
|
4
|
+
massive amounts of data in near real-time, even with complex queries. It is
|
|
5
|
+
PostgreSQL-compatible, and based on Lucene.
|
|
6
|
+
|
|
7
|
+
ingestr supports CrateDB as a source database.
|
|
8
|
+
|
|
9
|
+
## Source
|
|
10
|
+
|
|
11
|
+
For connecting to CrateDB as a database source, ingestr uses its SQLAlchemy
|
|
12
|
+
dialect package [sqlalchemy-cratedb].
|
|
13
|
+
|
|
14
|
+
### URI format
|
|
15
|
+
|
|
16
|
+
The URI format for CrateDB as a source is as follows:
|
|
17
|
+
```plaintext
|
|
18
|
+
crate://<username>:<password>@<host>:<port>?ssl=<ssl>
|
|
19
|
+
```
|
|
20
|
+
> [!INFO]
|
|
21
|
+
> The driver does not require any option, and will default to
|
|
22
|
+
> `crate://crate@localhost:4200?ssl=false` when just using `crate://`.
|
|
23
|
+
>
|
|
24
|
+
> When connecting to CrateDB on localhost, use:
|
|
25
|
+
> ```plaintext
|
|
26
|
+
> crate://crate@localhost:4200?ssl=false
|
|
27
|
+
> ```
|
|
28
|
+
>
|
|
29
|
+
> When connecting to [CrateDB Cloud], the URI looks like this:
|
|
30
|
+
> ```plaintext
|
|
31
|
+
> crate://admin:<PASSWORD>@<CLUSTERNAME>.eks1.eu-west-1.aws.cratedb.net:4200?ssl=true
|
|
32
|
+
> ```
|
|
33
|
+
|
|
34
|
+
### URI parameters
|
|
35
|
+
- `username` (required): The username is required to authenticate with the CrateDB server.
|
|
36
|
+
- `password` (required): The password is required to authenticate the provided username.
|
|
37
|
+
- `host` (required): The hostname or IP address of the CrateDB server where the database is hosted.
|
|
38
|
+
- `port` (required): The TCP port number used by the CrateDB server. Mostly `4200`.
|
|
39
|
+
- `ssl` (optional): Set to `true` for a secure HTTPS connection. By default, SSL is disabled (`false`).
|
|
40
|
+
|
|
41
|
+
### Example
|
|
42
|
+
|
|
43
|
+
This is an example command that will copy the `sys.summits` table from CrateDB
|
|
44
|
+
to DuckDB, then display the content from DuckDB.
|
|
45
|
+
|
|
46
|
+
```shell
|
|
47
|
+
ingestr ingest \
|
|
48
|
+
--source-uri 'crate://crate@localhost:4200/' \
|
|
49
|
+
--source-table 'sys.summits' \
|
|
50
|
+
--dest-uri 'duckdb:///cratedb.duckdb' \
|
|
51
|
+
--dest-table 'dest.summits'
|
|
52
|
+
```
|
|
53
|
+
```shell
|
|
54
|
+
duckdb cratedb.duckdb 'SELECT * FROM dest.summits LIMIT 5'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
<img alt="CrateDB_img" src="../media/cratedb-source.png" />
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## Appendix
|
|
61
|
+
|
|
62
|
+
To start a single-node instance of CrateDB for evaluation purposes,
|
|
63
|
+
use Docker or Podman.
|
|
64
|
+
```shell
|
|
65
|
+
docker run --rm -it --name=cratedb \
|
|
66
|
+
--publish=4200:4200 --publish=5432:5432 \
|
|
67
|
+
--env=CRATE_HEAP_SIZE=2g crate/crate:nightly \
|
|
68
|
+
-Cdiscovery.type=single-node
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
We are tracking development progress and incompatibilities at
|
|
72
|
+
[Support for ingestr/CrateDB] and ["tool: dlt/ingestr"]. Please join the discussion
|
|
73
|
+
or share relevant issue reports that help us improve interoperability. Thanks!
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
[CrateDB]: https://github.com/crate/crate
|
|
77
|
+
[CrateDB Cloud]: https://console.cratedb.cloud/
|
|
78
|
+
[sqlalchemy-cratedb]: https://pypi.org/project/sqlalchemy-cratedb/
|
|
79
|
+
[Support for ingestr/CrateDB]: https://github.com/crate/crate-clients-tools/issues/86
|
|
80
|
+
["tool: dlt/ingestr"]: https://github.com/crate/crate/issues?q=state%3Aopen%20label%3A%22tool%3A%20dlt%2Fingestr%22
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Mixpanel
|
|
2
|
+
|
|
3
|
+
[Mixpanel](https://mixpanel.com/) is an analytics service for tracking user interactions in web and mobile applications.
|
|
4
|
+
|
|
5
|
+
ingestr supports Mixpanel as a source.
|
|
6
|
+
|
|
7
|
+
## URI format
|
|
8
|
+
|
|
9
|
+
```plaintext
|
|
10
|
+
mixpanel://?username=<service_account_username>&password=<service_account_secret>&project_id=<project_id>&server=<server>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
URI parameters:
|
|
14
|
+
|
|
15
|
+
- `username`: Mixpanel service account username.
|
|
16
|
+
- `password`: Mixpanel service account secret. This is the secret associated with the service account.
|
|
17
|
+
- `project_id`: The numeric project ID.
|
|
18
|
+
- `server`: (Optional) The server region to use. Can be "us", "eu", or "in". Defaults to "eu".
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
To grab mixpanel credentials, please follow the guide [here](https://developer.mixpanel.com/reference/service-accounts).
|
|
22
|
+
|
|
23
|
+
## Example
|
|
24
|
+
|
|
25
|
+
Copy events from Mixpanel into a DuckDB database:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
ingestr ingest \
|
|
29
|
+
--source-uri 'mixpanel://?username=my-service-account&password=my-secret&project_id=12345' \
|
|
30
|
+
--source-table 'events' \
|
|
31
|
+
--dest-uri duckdb:///mixpanel.duckdb \
|
|
32
|
+
--dest-table 'mixpanel.events'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
<img alt="mixpanel" src="../media/mixpanel_ingestion.png"/>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## Tables
|
|
40
|
+
|
|
41
|
+
Mixpanel source allows ingesting the following tables:
|
|
42
|
+
|
|
43
|
+
- `events`: Raw event data returned from the export API.
|
|
44
|
+
- `profiles`: User profiles from the Engage API.
|
|
45
|
+
|
|
46
|
+
Use these as `--source-table` values in the `ingestr ingest` command.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# MySQL
|
|
2
2
|
MySQL is an open source relational database management system, known for its speed and reliability.
|
|
3
3
|
|
|
4
|
-
ingestr supports MySQL as a source.
|
|
4
|
+
ingestr supports MySQL as a source and a destination.
|
|
5
5
|
|
|
6
6
|
## URI format
|
|
7
7
|
The URI format for MySQL is as follows:
|
|
8
8
|
|
|
9
9
|
```plaintext
|
|
10
|
-
mysql://user:password@host:port/dbname
|
|
10
|
+
mysql://user:password@host:port/dbname
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
URI parameters:
|
|
@@ -17,4 +17,4 @@ URI parameters:
|
|
|
17
17
|
- `port`: the port number the database server is listening on, the default is 3306
|
|
18
18
|
- `dbname`: the name of the database to connect to
|
|
19
19
|
|
|
20
|
-
The same URI structure can be used both for sources and destinations. You can read more about SQLAlchemy's MySQL dialect [here](https://docs.sqlalchemy.org/en/20/core/engines.html#mysql).
|
|
20
|
+
The same URI structure and table can be used both for sources and destinations. You can read more about SQLAlchemy's MySQL dialect [here](https://docs.sqlalchemy.org/en/20/core/engines.html#mysql).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# QuickBooks
|
|
2
|
+
|
|
3
|
+
[QuickBooks](https://quickbooks.intuit.com/) is an accounting software package developed and marketed by Intuit.
|
|
4
|
+
|
|
5
|
+
ingestr supports QuickBooks as a source.
|
|
6
|
+
|
|
7
|
+
## URI format
|
|
8
|
+
|
|
9
|
+
```plaintext
|
|
10
|
+
quickbooks://?company_id=<company_id>client_id=<client_id>&client_secret=<client_secret>&refresh_token=<refresh_token>&access_token=<access_token>&environment=<environment>&minor_version=<minor_version>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
URI parameters:
|
|
14
|
+
- `company_id`: The QuickBooks company (realm) id.
|
|
15
|
+
- `client_id`: OAuth client id from your Intuit application.
|
|
16
|
+
- `client_secret`: OAuth client secret.
|
|
17
|
+
- `refresh_token`: OAuth refresh token used to obtain access tokens.
|
|
18
|
+
- `environment`: Optional environment name, either `production` or `sandbox`. Defaults to `production`.
|
|
19
|
+
- `minor_version`: Optional API minor version.
|
|
20
|
+
|
|
21
|
+
## Setting up a QuickBooks integration
|
|
22
|
+
|
|
23
|
+
Follow Intuit's [OAuth setup guide](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization) to create an app and generate your credentials.
|
|
24
|
+
|
|
25
|
+
Once you have the credentials, you can ingest data. For example, to copy customers data into DuckDB:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
ingestr ingest \
|
|
29
|
+
--source-uri 'quickbooks://?company_id=1234567890&client_id=cid&client_secret=csecret&refresh_token=rtoken' \
|
|
30
|
+
--source-table 'customers' \
|
|
31
|
+
--dest-uri duckdb:///customers.duckdb \
|
|
32
|
+
--dest-table 'dest.details'
|
|
33
|
+
```
|
|
34
|
+
This command will retrieve customers data and save it to the `dest.details` table in the DuckDB database.
|
|
35
|
+
|
|
36
|
+
<img alt="quickbooks" src="../media/quickbook_ingestion.png"/>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## Tables
|
|
40
|
+
QuickBooks source allows ingesting the following tables:
|
|
41
|
+
|
|
42
|
+
- `customers`: Retrives list of customers.
|
|
43
|
+
- `invoices`: Retrives sales invoices.
|
|
44
|
+
- `accounts`: Retrives details of accounts.
|
|
45
|
+
- `vendors`: Retrives vendor records.
|
|
46
|
+
- `payments`: Retrives payments recorded.
|
|
47
|
+
|
|
48
|
+
Use these as the `--source-table` parameter in the `ingestr ingest` command.
|
|
49
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# SFTP
|
|
2
|
+
|
|
3
|
+
SFTP (SSH File Transfer Protocol) is a secure file transfer protocol that runs over the SSH protocol. It provides a secure way to transfer files between a local and a remote computer.
|
|
4
|
+
|
|
5
|
+
`ingestr` supports SFTP as a data source.
|
|
6
|
+
|
|
7
|
+
## URI Format
|
|
8
|
+
|
|
9
|
+
The URI for connecting to an SFTP server is structured as follows:
|
|
10
|
+
|
|
11
|
+
```plaintext
|
|
12
|
+
sftp://<username>:<password>@<host>:<port>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## URI Components:
|
|
16
|
+
- `username`: The username for the SFTP server.
|
|
17
|
+
- `password`: The password for the SFTP server.
|
|
18
|
+
- `host`: The hostname or IP address of the SFTP server.
|
|
19
|
+
- `port`: The port number of the SFTP server (defaults to 22 if not specified).
|
|
20
|
+
|
|
21
|
+
## Setting up an SFTP Integration
|
|
22
|
+
|
|
23
|
+
To integrate `ingestr` with an SFTP server, you need the server's hostname, port, a valid username, and a password.
|
|
24
|
+
|
|
25
|
+
Once you have your credentials, you can load data to desired destaination.
|
|
26
|
+
|
|
27
|
+
### Example: Loading data from SFTP TO DUCKDB
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
ingestr ingest \
|
|
31
|
+
--source-uri 'sftp://myuser:MySecretPassword123@sftp.example.com' \
|
|
32
|
+
--source-table 'user.csv' \
|
|
33
|
+
--dest-uri duckdb:///sftp_data.duckdb \
|
|
34
|
+
--dest-table 'dest.users_deatils'
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
<img alt="sftp" src="../media/sftp.png"/>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
The `--source-table` specifies `/path/to/directory` The base directory on the server where `ingestr` should start looking for files.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = "v0.13.54"
|
|
@@ -476,7 +476,22 @@ class SqliteDestination(GenericSqlDestination):
|
|
|
476
476
|
|
|
477
477
|
def dlt_run_params(self, uri: str, table: str, **kwargs):
|
|
478
478
|
return {
|
|
479
|
-
#https://dlthub.com/docs/dlt-ecosystem/destinations/sqlalchemy#dataset-files
|
|
479
|
+
# https://dlthub.com/docs/dlt-ecosystem/destinations/sqlalchemy#dataset-files
|
|
480
480
|
"dataset_name": "main",
|
|
481
481
|
"table_name": table,
|
|
482
482
|
}
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
class MySqlDestination(GenericSqlDestination):
|
|
486
|
+
def dlt_dest(self, uri: str, **kwargs):
|
|
487
|
+
return dlt.destinations.sqlalchemy(credentials=uri)
|
|
488
|
+
|
|
489
|
+
def dlt_run_params(self, uri: str, table: str, **kwargs):
|
|
490
|
+
parsed = urlparse(uri)
|
|
491
|
+
database = parsed.path.lstrip("/")
|
|
492
|
+
if not database:
|
|
493
|
+
raise ValueError("You need to specify a database")
|
|
494
|
+
return {
|
|
495
|
+
"dataset_name": database,
|
|
496
|
+
"table_name": table,
|
|
497
|
+
}
|
|
@@ -11,6 +11,7 @@ from ingestr.src.destinations import (
|
|
|
11
11
|
DatabricksDestination,
|
|
12
12
|
DuckDBDestination,
|
|
13
13
|
MsSQLDestination,
|
|
14
|
+
MySqlDestination,
|
|
14
15
|
PostgresDestination,
|
|
15
16
|
RedshiftDestination,
|
|
16
17
|
S3Destination,
|
|
@@ -46,13 +47,16 @@ from ingestr.src.sources import (
|
|
|
46
47
|
KlaviyoSource,
|
|
47
48
|
LinkedInAdsSource,
|
|
48
49
|
LocalCsvSource,
|
|
50
|
+
MixpanelSource,
|
|
49
51
|
MongoDbSource,
|
|
50
52
|
NotionSource,
|
|
51
53
|
PersonioSource,
|
|
52
54
|
PhantombusterSource,
|
|
53
55
|
PipedriveSource,
|
|
56
|
+
QuickBooksSource,
|
|
54
57
|
S3Source,
|
|
55
58
|
SalesforceSource,
|
|
59
|
+
SFTPSource,
|
|
56
60
|
ShopifySource,
|
|
57
61
|
SlackSource,
|
|
58
62
|
SmartsheetSource,
|
|
@@ -65,6 +69,7 @@ from ingestr.src.sources import (
|
|
|
65
69
|
|
|
66
70
|
SQL_SOURCE_SCHEMES = [
|
|
67
71
|
"bigquery",
|
|
72
|
+
"crate",
|
|
68
73
|
"duckdb",
|
|
69
74
|
"mssql",
|
|
70
75
|
"mysql",
|
|
@@ -137,6 +142,7 @@ class SourceDestinationFactory:
|
|
|
137
142
|
"hubspot": HubspotSource,
|
|
138
143
|
"airtable": AirtableSource,
|
|
139
144
|
"klaviyo": KlaviyoSource,
|
|
145
|
+
"mixpanel": MixpanelSource,
|
|
140
146
|
"appsflyer": AppsflyerSource,
|
|
141
147
|
"kafka": KafkaSource,
|
|
142
148
|
"adjust": AdjustSource,
|
|
@@ -163,7 +169,9 @@ class SourceDestinationFactory:
|
|
|
163
169
|
"elasticsearch": ElasticsearchSource,
|
|
164
170
|
"attio": AttioSource,
|
|
165
171
|
"solidgate": SolidgateSource,
|
|
172
|
+
"quickbooks": QuickBooksSource,
|
|
166
173
|
"smartsheet": SmartsheetSource,
|
|
174
|
+
"sftp": SFTPSource,
|
|
167
175
|
}
|
|
168
176
|
destinations: Dict[str, Type[DestinationProtocol]] = {
|
|
169
177
|
"bigquery": BigQueryDestination,
|
|
@@ -184,6 +192,8 @@ class SourceDestinationFactory:
|
|
|
184
192
|
"clickhouse": ClickhouseDestination,
|
|
185
193
|
"s3": S3Destination,
|
|
186
194
|
"sqlite": SqliteDestination,
|
|
195
|
+
"mysql": MySqlDestination,
|
|
196
|
+
"mysql+pymysql": MySqlDestination,
|
|
187
197
|
}
|
|
188
198
|
|
|
189
199
|
def __init__(self, source_uri: str, destination_uri: str):
|