ingestr 0.13.28__tar.gz → 0.13.29__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.28 → ingestr-0.13.29}/PKG-INFO +1 -1
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/main.py +10 -0
- ingestr-0.13.29/ingestr/src/buildinfo.py +1 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/hubspot/__init__.py +8 -9
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/hubspot/helpers.py +20 -13
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/hubspot/settings.py +13 -7
- ingestr-0.13.28/ingestr/src/buildinfo.py +0 -1
- {ingestr-0.13.28 → ingestr-0.13.29}/.dockerignore +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.githooks/pre-commit-hook.sh +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.github/workflows/deploy-docs.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.github/workflows/release.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.github/workflows/secrets-scan.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.github/workflows/tests.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.gitignore +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.gitleaksignore +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.python-version +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/.vale.ini +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/Dockerfile +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/LICENSE.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/Makefile +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/README.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/.vitepress/config.mjs +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/.vitepress/theme/custom.css +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/.vitepress/theme/index.js +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/commands/example-uris.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/commands/ingest.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/getting-started/core-concepts.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/getting-started/incremental-loading.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/getting-started/quickstart.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/getting-started/telemetry.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/index.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/applovin_max.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/athena.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/clickhouse_img.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/github.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/googleanalytics.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/kinesis.bigquery.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/linkedin_ads.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/personio.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/personio_duckdb.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/pipedrive.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/stripe_postgres.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/media/tiktok.png +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/adjust.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/airtable.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/applovin.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/applovin_max.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/appsflyer.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/appstore.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/asana.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/athena.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/bigquery.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/chess.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/clickhouse.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/csv.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/custom_queries.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/databricks.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/db2.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/duckdb.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/dynamodb.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/facebook-ads.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/frankfurter.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/gcs.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/github.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/google-ads.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/google_analytics.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/gorgias.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/gsheets.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/hubspot.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/kafka.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/kinesis.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/klaviyo.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/linkedin_ads.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/mongodb.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/mssql.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/mysql.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/notion.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/oracle.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/personio.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/pipedrive.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/postgres.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/redshift.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/s3.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/salesforce.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/sap-hana.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/shopify.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/slack.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/snowflake.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/sqlite.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/stripe.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/tiktok-ads.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/supported-sources/zendesk.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/tutorials/load-kinesis-bigquery.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/tutorials/load-personio-duckdb.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/docs/tutorials/load-stripe-postgres.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/conftest.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/.gitignore +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/adjust/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/adjust/adjust_helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/airtable/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/applovin/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/applovin_max/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/appsflyer/_init_.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/appsflyer/client.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/appstore/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/appstore/client.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/appstore/errors.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/appstore/models.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/appstore/resources.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/arrow/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/asana_source/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/asana_source/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/asana_source/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/blob.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/chess/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/chess/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/chess/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/destinations.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/dynamodb/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/errors.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/facebook_ads/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/facebook_ads/exceptions.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/facebook_ads/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/facebook_ads/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/factory.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/filesystem/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/filesystem/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/filesystem/readers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/filters.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/frankfurter/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/frankfurter/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/github/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/github/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/github/queries.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/github/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_ads/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_ads/field.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_ads/metrics.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_ads/predicates.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_ads/reports.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_analytics/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_analytics/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_sheets/README.md +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_sheets/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/gorgias/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/gorgias/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/kafka/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/kafka/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/kinesis/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/kinesis/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/klaviyo/_init_.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/klaviyo/client.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/klaviyo/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/linkedin_ads/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/linkedin_ads/dimension_time_enum.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/linkedin_ads/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/loader.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/mongodb/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/mongodb/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/notion/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/notion/helpers/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/notion/helpers/client.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/notion/helpers/database.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/notion/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/partition.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/personio/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/personio/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/pipedrive/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/pipedrive/helpers/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/pipedrive/helpers/custom_fields_munger.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/pipedrive/helpers/pages.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/pipedrive/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/pipedrive/typing.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/resource.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/salesforce/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/salesforce/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/shopify/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/shopify/exceptions.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/shopify/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/shopify/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/slack/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/slack/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/slack/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/sources.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/sql_database/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/sql_database/callbacks.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/stripe_analytics/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/stripe_analytics/helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/stripe_analytics/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/table_definition.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/telemetry/event.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/testdata/fakebqcredentials.json +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/tiktok_ads/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/time.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/version.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/zendesk/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/zendesk/helpers/__init__.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/zendesk/helpers/credentials.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/src/zendesk/settings.py +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/testdata/.gitignore +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/testdata/create_replace.csv +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/testdata/delete_insert_expected.csv +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/testdata/delete_insert_part1.csv +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/testdata/delete_insert_part2.csv +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/testdata/merge_expected.csv +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/testdata/merge_part1.csv +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/ingestr/testdata/merge_part2.csv +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/package-lock.json +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/package.json +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/pyproject.toml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/requirements-dev.txt +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/requirements.in +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/requirements.txt +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/requirements_arm64.txt +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/resources/demo.gif +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/resources/demo.tape +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/resources/ingestr.svg +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/AMPM.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Acronyms.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Colons.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Contractions.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/DateFormat.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Ellipses.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/EmDash.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Exclamation.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/FirstPerson.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Gender.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/GenderBias.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/HeadingPunctuation.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Headings.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Latin.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/LyHyphens.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/OptionalPlurals.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Ordinal.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/OxfordComma.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Parens.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Passive.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Periods.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Quotes.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Ranges.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Semicolons.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Slang.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Spacing.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Spelling.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Units.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/We.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/Will.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/WordList.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/meta.json +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/Google/vocab.txt +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/bruin/Ingestr.yml +0 -0
- {ingestr-0.13.28 → ingestr-0.13.29}/styles/config/vocabularies/bruin/accept.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ingestr
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.29
|
|
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
|
|
@@ -302,6 +302,13 @@ def ingest(
|
|
|
302
302
|
envvar=["COLUMNS", "INGESTR_COLUMNS"],
|
|
303
303
|
),
|
|
304
304
|
] = None, # type: ignore
|
|
305
|
+
yield_limit: Annotated[
|
|
306
|
+
Optional[int],
|
|
307
|
+
typer.Option(
|
|
308
|
+
help="Limit the number of pages yielded from the source",
|
|
309
|
+
envvar=["YIELD_LIMIT", "INGESTR_YIELD_LIMIT"],
|
|
310
|
+
),
|
|
311
|
+
] = None, # type: ignore
|
|
305
312
|
):
|
|
306
313
|
import hashlib
|
|
307
314
|
import tempfile
|
|
@@ -556,6 +563,9 @@ def ingest(
|
|
|
556
563
|
if factory.source_scheme.startswith("mysql"):
|
|
557
564
|
resource.for_each(dlt_source, lambda x: x.add_map(handle_mysql_empty_dates))
|
|
558
565
|
|
|
566
|
+
if yield_limit:
|
|
567
|
+
resource.for_each(dlt_source, lambda x: x.add_limit(yield_limit))
|
|
568
|
+
|
|
559
569
|
def col_h(x):
|
|
560
570
|
if column_hints:
|
|
561
571
|
x.apply_hints(columns=column_hints)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = "v0.13.29"
|
|
@@ -169,7 +169,7 @@ def hubspot(
|
|
|
169
169
|
api_key: str = api_key,
|
|
170
170
|
) -> Iterator[TDataItems]:
|
|
171
171
|
"""Hubspot schemas resource"""
|
|
172
|
-
yield from fetch_data(CRM_SCHEMAS_ENDPOINT, api_key,resource_name="schemas")
|
|
172
|
+
yield from fetch_data(CRM_SCHEMAS_ENDPOINT, api_key, resource_name="schemas")
|
|
173
173
|
|
|
174
174
|
@dlt.resource(name="quotes", write_disposition="replace")
|
|
175
175
|
def quotes(
|
|
@@ -192,8 +192,7 @@ def hubspot(
|
|
|
192
192
|
api_key: str = api_key,
|
|
193
193
|
custom_object_name: str = custom_object,
|
|
194
194
|
) -> Iterator[TDataItems]:
|
|
195
|
-
|
|
196
|
-
get_custom_object = schemas(api_key)
|
|
195
|
+
get_custom_object = schemas(api_key)
|
|
197
196
|
object_type_id = None
|
|
198
197
|
for custom_object in get_custom_object:
|
|
199
198
|
if custom_object["name"] == custom_object_name.capitalize():
|
|
@@ -201,18 +200,18 @@ def hubspot(
|
|
|
201
200
|
break
|
|
202
201
|
if object_type_id is None:
|
|
203
202
|
raise ValueError(f"There is no such custom object as {custom_object_name}")
|
|
204
|
-
custom_object_properties= f"crm/v3/properties/{object_type_id}"
|
|
205
|
-
|
|
203
|
+
custom_object_properties = f"crm/v3/properties/{object_type_id}"
|
|
204
|
+
|
|
206
205
|
props_pages = fetch_data(custom_object_properties, api_key)
|
|
207
206
|
props = []
|
|
208
207
|
for page in props_pages:
|
|
209
208
|
props.extend([prop["name"] for prop in page])
|
|
210
209
|
props = ",".join(sorted(list(set(props))))
|
|
211
|
-
|
|
212
|
-
custom_object_endpoint= f"crm/v3/objects/{object_type_id}/?properties={props}"
|
|
213
|
-
|
|
210
|
+
|
|
211
|
+
custom_object_endpoint = f"crm/v3/objects/{object_type_id}/?properties={props}"
|
|
212
|
+
|
|
214
213
|
"""Hubspot custom object details resource"""
|
|
215
|
-
yield from fetch_data(custom_object_endpoint, api_key,resource_name="custom")
|
|
214
|
+
yield from fetch_data(custom_object_endpoint, api_key, resource_name="custom")
|
|
216
215
|
|
|
217
216
|
return companies, contacts, deals, tickets, products, quotes, schemas, custom
|
|
218
217
|
|
|
@@ -90,7 +90,10 @@ def fetch_property_history(
|
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
def fetch_data(
|
|
93
|
-
endpoint: str,
|
|
93
|
+
endpoint: str,
|
|
94
|
+
api_key: str,
|
|
95
|
+
params: Optional[Dict[str, Any]] = None,
|
|
96
|
+
resource_name: str = None,
|
|
94
97
|
) -> Iterator[List[Dict[str, Any]]]:
|
|
95
98
|
"""
|
|
96
99
|
Fetch data from HUBSPOT endpoint using a specified API key and yield the properties of each result.
|
|
@@ -133,15 +136,17 @@ def fetch_data(
|
|
|
133
136
|
_objects: List[Dict[str, Any]] = []
|
|
134
137
|
for _result in _data["results"]:
|
|
135
138
|
if resource_name == "schemas":
|
|
136
|
-
_objects.append(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
139
|
+
_objects.append(
|
|
140
|
+
{
|
|
141
|
+
"name": _result["labels"].get("singular", ""),
|
|
142
|
+
"objectTypeId": _result.get("objectTypeId", ""),
|
|
143
|
+
"id": _result.get("id", ""),
|
|
144
|
+
"fullyQualifiedName": _result.get("fullyQualifiedName", ""),
|
|
145
|
+
"properties": _result.get("properties", ""),
|
|
146
|
+
"createdAt": _result.get("createdAt", ""),
|
|
147
|
+
"updatedAt": _result.get("updatedAt", ""),
|
|
148
|
+
}
|
|
149
|
+
)
|
|
145
150
|
elif resource_name == "custom":
|
|
146
151
|
_objects.append(
|
|
147
152
|
_result.get("properties", ""),
|
|
@@ -157,9 +162,11 @@ def fetch_data(
|
|
|
157
162
|
{
|
|
158
163
|
"value": _obj["hs_object_id"],
|
|
159
164
|
f"{association}_id": __r["id"],
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
165
|
+
}
|
|
166
|
+
for __r in _result["associations"][association][
|
|
167
|
+
"results"
|
|
168
|
+
]
|
|
169
|
+
]
|
|
163
170
|
|
|
164
171
|
# remove duplicates from list of dicts
|
|
165
172
|
__values = [
|
|
@@ -5,15 +5,21 @@ from dlt.common import pendulum
|
|
|
5
5
|
STARTDATE = pendulum.datetime(year=2000, month=1, day=1)
|
|
6
6
|
|
|
7
7
|
CRM_CONTACTS_ENDPOINT = (
|
|
8
|
-
"/crm/v3/objects/contacts?associations=deals,products,tickets,quotes"
|
|
8
|
+
"/crm/v3/objects/contacts?associations=companies,deals,products,tickets,quotes"
|
|
9
9
|
)
|
|
10
|
-
CRM_COMPANIES_ENDPOINT =
|
|
11
|
-
|
|
10
|
+
CRM_COMPANIES_ENDPOINT = "/crm/v3/objects/companies?associations=products"
|
|
11
|
+
CRM_DEALS_ENDPOINT = (
|
|
12
|
+
"/crm/v3/objects/deals?associations=companies,contacts,products,tickets,quotes"
|
|
13
|
+
)
|
|
14
|
+
CRM_PRODUCTS_ENDPOINT = (
|
|
15
|
+
"/crm/v3/objects/products?associations=companies,contacts,deals,tickets,quotes"
|
|
16
|
+
)
|
|
17
|
+
CRM_TICKETS_ENDPOINT = (
|
|
18
|
+
"/crm/v3/objects/tickets?associations=companies,contacts,deals,products,quotes"
|
|
19
|
+
)
|
|
20
|
+
CRM_QUOTES_ENDPOINT = (
|
|
21
|
+
"/crm/v3/objects/quotes?associations=companies,contacts,deals,products,tickets"
|
|
12
22
|
)
|
|
13
|
-
CRM_DEALS_ENDPOINT = "/crm/v3/objects/deals"
|
|
14
|
-
CRM_PRODUCTS_ENDPOINT = "/crm/v3/objects/products"
|
|
15
|
-
CRM_TICKETS_ENDPOINT = "/crm/v3/objects/tickets"
|
|
16
|
-
CRM_QUOTES_ENDPOINT = "/crm/v3/objects/quotes"
|
|
17
23
|
CRM_SCHEMAS_ENDPOINT = "/crm/v3/schemas"
|
|
18
24
|
|
|
19
25
|
CRM_OBJECT_ENDPOINTS = {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
version = "v0.13.28"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|