omniload 0.1.0__tar.gz → 0.2.0__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.
- {omniload-0.1.0 → omniload-0.2.0}/PKG-INFO +17 -14
- {omniload-0.1.0 → omniload-0.2.0}/omniload/conftest.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/main.py +40 -40
- {omniload-0.1.0 → omniload-0.2.0}/omniload/main_test.py +204 -44
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/adjust/__init__.py +14 -11
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/adjust/adjust_helpers.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/anthropic/helpers_test.py +2 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/applovin_max/__init__.py +6 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appsflyer/client.py +12 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appsflyer/client_test.py +3 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/models.py +8 -8
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/arrow/__init__.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/asana_source/__init__.py +8 -8
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/blob_test.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/chess/__init__.py +8 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/chess/helpers.py +4 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/clickup/__init__.py +17 -9
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/collector/spinner.py +3 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/couchbase_source/__init__.py +5 -5
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/couchbase_source/helpers.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/customer_io/__init__.py +4 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/destinations.py +10 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/destinations_test.py +20 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/dynamodb/__init__.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/elasticsearch/__init__.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/errors.py +5 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/__init__.py +30 -20
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/helpers.py +15 -12
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/filesystem/__init__.py +4 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/filesystem/helpers.py +18 -9
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/filesystem/readers.py +5 -5
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/filters.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fireflies/__init__.py +3 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fireflies/helpers.py +4 -6
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/frankfurter/__init__.py +9 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/frankfurter/helpers.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/freshdesk/__init__.py +9 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/freshdesk/freshdesk_client.py +3 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fundraiseup/__init__.py +3 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/github/__init__.py +16 -9
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/github/helpers.py +9 -5
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/__init__.py +5 -6
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_analytics/helpers.py +8 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/api_calls.py +6 -6
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/data_processing.py +12 -9
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/gorgias/__init__.py +5 -5
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/gorgias/helpers.py +29 -13
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hostaway/__init__.py +5 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/http/readers.py +5 -5
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hubspot/__init__.py +27 -20
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hubspot/helpers.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/influxdb/client.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/intercom/__init__.py +4 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/intercom/helpers.py +2 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/jira_source/helpers.py +3 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/kafka/__init__.py +21 -17
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/kafka/helpers.py +76 -43
- omniload-0.2.0/omniload/src/kafka/model.py +169 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/kinesis/__init__.py +8 -8
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/klaviyo/__init__.py +15 -11
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/klaviyo/client.py +10 -9
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linkedin_ads/__init__.py +5 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/loader.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/loader_test.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/masking.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mixpanel/__init__.py +6 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mongodb/__init__.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mongodb/helpers.py +36 -31
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/partition.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/personio/__init__.py +11 -11
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/phantombuster/__init__.py +11 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pinterest/__init__.py +8 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/__init__.py +7 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/pages.py +5 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/primer/__init__.py +3 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/quickbooks/__init__.py +9 -8
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/reddit_ads/__init__.py +6 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/resource.py +17 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/revenuecat/__init__.py +7 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/revenuecat/helpers.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/salesforce/__init__.py +1 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/__init__.py +23 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/helpers.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/slack/helpers.py +14 -10
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/smartsheets/__init__.py +11 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/smartsheets/test_smartsheets.py +3 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/__init__.py +7 -7
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/socrata_source/__init__.py +5 -7
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/solidgate/__init__.py +4 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/solidgate/helpers.py +17 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/sources.py +156 -130
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/sources_test.py +32 -8
- omniload-0.2.0/omniload/src/sql_database/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/sql_database/callbacks.py +2 -1
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/stripe_analytics/__init__.py +4 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/stripe_analytics/helpers.py +4 -4
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/tiktok_ads/__init__.py +13 -9
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/tiktok_ads/tiktok_helpers.py +5 -5
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/trustpilot/__init__.py +5 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/wise/__init__.py +11 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/wise/client.py +8 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/__init__.py +38 -16
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/helpers/api_helpers.py +2 -2
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zoom/__init__.py +16 -10
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zoom/helpers.py +15 -3
- {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/PKG-INFO +17 -14
- {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/SOURCES.txt +2 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/requires.txt +16 -13
- {omniload-0.1.0 → omniload-0.2.0}/pyproject.toml +17 -92
- {omniload-0.1.0 → omniload-0.2.0}/LICENSE +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/LICENSE.Apache-2.0 +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/MANIFEST.in +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/NOTICE +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/README.md +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/docs/conf.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/__init__.py +0 -0
- /omniload-0.1.0/omniload/src/sql_database/__init__.py → /omniload-0.2.0/omniload/py.typed +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/adjust/adjust_helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/airtable/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/allium/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/anthropic/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/anthropic/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/applovin/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appsflyer/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/errors.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/resources.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/asana_source/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/asana_source/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/attio/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/attio/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/blob.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/bruin/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/chess/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/clickup/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/couchbase_source/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/cursor/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/cursor/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/customer_io/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/docebo/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/docebo/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/docebo/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/docebo/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/dune/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/dune/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/elasticsearch/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/exceptions.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/utils.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/factory.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/factory_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fireflies/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fluxx/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fluxx/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fluxx/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/freshdesk/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fundraiseup/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fundraiseup/client_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/github/queries.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/github/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/field.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/metrics.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/predicates.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/reports.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/reports_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/test_google_ads.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_analytics/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_analytics/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_sheets/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/gorgias/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hostaway/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/http/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/http_client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hubspot/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/indeed/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/indeed/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/influxdb/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/intercom/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/intercom/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/isoc_pulse/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/jira_source/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/jira_source/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/kinesis/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/klaviyo/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/klaviyo/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linear/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linear/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linkedin_ads/dimension_time_enum.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linkedin_ads/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linkedin_ads/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mailchimp/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mailchimp/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mailchimp/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mailchimp/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/masking_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mixpanel/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/monday/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/monday/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/monday/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mongodb/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/helpers/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/helpers/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/helpers/database.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/personio/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/phantombuster/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/custom_fields_munger.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/typing.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/plusvibeai/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/plusvibeai/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/plusvibeai/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/primer/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/primer/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/reddit_ads/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/reddit_ads/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/revenuecat/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/salesforce/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/exceptions.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/slack/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/slack/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/socrata_source/helpers.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/socrata_source/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/stripe_analytics/helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/stripe_analytics/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/table_definition.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/tiktok_ads/tiktok_helpers_test.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/time.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/trustpilot/client.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/helpers/__init__.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/helpers/credentials.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/helpers/talk_api.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/settings.py +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/dependency_links.txt +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/entry_points.txt +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/top_level.txt +0 -0
- {omniload-0.1.0 → omniload-0.2.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omniload
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: omniload is a polyglot data loader based on dlt. Copy data between any source and any destination.
|
|
5
5
|
Author: Mustafa Ersan, Sanju Shah Gupta, Saravjeet 'Aman' Singh
|
|
6
6
|
Author-email: Burak Karakan <burak.karakan@getbruin.com>
|
|
@@ -63,12 +63,12 @@ License-File: LICENSE
|
|
|
63
63
|
License-File: LICENSE.Apache-2.0
|
|
64
64
|
License-File: NOTICE
|
|
65
65
|
Requires-Dist: aiohttp<4
|
|
66
|
-
Requires-Dist: asana<
|
|
67
|
-
Requires-Dist: click<8.
|
|
66
|
+
Requires-Dist: asana<3.3
|
|
67
|
+
Requires-Dist: click<8.5
|
|
68
68
|
Requires-Dist: clickhouse-connect<1,>=0.8
|
|
69
69
|
Requires-Dist: clickhouse-driver<0.3
|
|
70
70
|
Requires-Dist: clickhouse-sqlalchemy<0.4
|
|
71
|
-
Requires-Dist: confluent-kafka<2.
|
|
71
|
+
Requires-Dist: confluent-kafka<2.15
|
|
72
72
|
Requires-Dist: couchbase<5,>=4
|
|
73
73
|
Requires-Dist: databricks-sql-connector<5
|
|
74
74
|
Requires-Dist: databricks-sqlalchemy<3
|
|
@@ -77,12 +77,12 @@ Requires-Dist: dlt<1.22
|
|
|
77
77
|
Requires-Dist: dlt-cratedb<0.2
|
|
78
78
|
Requires-Dist: duckdb<1.6
|
|
79
79
|
Requires-Dist: duckdb-engine<0.18
|
|
80
|
-
Requires-Dist: elasticsearch<
|
|
81
|
-
Requires-Dist: facebook-business<
|
|
80
|
+
Requires-Dist: elasticsearch<10
|
|
81
|
+
Requires-Dist: facebook-business<26
|
|
82
82
|
Requires-Dist: flatten-json<0.2
|
|
83
83
|
Requires-Dist: gcsfs
|
|
84
|
-
Requires-Dist: google-ads<
|
|
85
|
-
Requires-Dist: google-analytics-data<0.
|
|
84
|
+
Requires-Dist: google-ads<32
|
|
85
|
+
Requires-Dist: google-analytics-data<0.24
|
|
86
86
|
Requires-Dist: google-api-python-client<3
|
|
87
87
|
Requires-Dist: google-auth<3
|
|
88
88
|
Requires-Dist: google-cloud-bigquery-storage<3
|
|
@@ -90,13 +90,15 @@ Requires-Dist: google-cloud-spanner<4
|
|
|
90
90
|
Requires-Dist: influxdb-client<2
|
|
91
91
|
Requires-Dist: mysql-connector-python<10
|
|
92
92
|
Requires-Dist: oracledb<4
|
|
93
|
+
Requires-Dist: orjson<4
|
|
93
94
|
Requires-Dist: pendulum<4,>=3
|
|
94
95
|
Requires-Dist: psycopg2-binary<3
|
|
95
96
|
Requires-Dist: py-machineid<2
|
|
96
|
-
Requires-Dist: pyairtable<
|
|
97
|
+
Requires-Dist: pyairtable<4
|
|
97
98
|
Requires-Dist: pyarrow<25,>=18
|
|
98
99
|
Requires-Dist: pyathena<4
|
|
99
100
|
Requires-Dist: pymongo<5
|
|
101
|
+
Requires-Dist: pymongoarrow<2
|
|
100
102
|
Requires-Dist: pymysql<2
|
|
101
103
|
Requires-Dist: pyrate-limiter<4
|
|
102
104
|
Requires-Dist: python-quickbooks<0.10
|
|
@@ -104,7 +106,7 @@ Requires-Dist: requests<3
|
|
|
104
106
|
Requires-Dist: rudder-sdk-python<2.2
|
|
105
107
|
Requires-Dist: s3fs
|
|
106
108
|
Requires-Dist: simple-salesforce<2
|
|
107
|
-
Requires-Dist: smartsheet-python-sdk<
|
|
109
|
+
Requires-Dist: smartsheet-python-sdk<5
|
|
108
110
|
Requires-Dist: snowflake-connector-python<5,>=3.18
|
|
109
111
|
Requires-Dist: snowflake-sqlalchemy<2
|
|
110
112
|
Requires-Dist: sqlalchemy<2.1
|
|
@@ -113,19 +115,20 @@ Requires-Dist: sqlalchemy-cratedb<1
|
|
|
113
115
|
Requires-Dist: sqlalchemy-hana<5
|
|
114
116
|
Requires-Dist: sqlalchemy-redshift<2
|
|
115
117
|
Requires-Dist: sqlalchemy-spanner<2
|
|
116
|
-
Requires-Dist: stripe<
|
|
118
|
+
Requires-Dist: stripe<16
|
|
117
119
|
Requires-Dist: tldextract<6
|
|
120
|
+
Requires-Dist: toolz<2
|
|
118
121
|
Requires-Dist: tqdm<5
|
|
119
122
|
Requires-Dist: trino[sqlalchemy]==0.337.0
|
|
120
|
-
Requires-Dist: typer<0.
|
|
123
|
+
Requires-Dist: typer<0.27
|
|
121
124
|
Requires-Dist: urllib3<2.8
|
|
122
125
|
Provides-Extra: develop
|
|
123
|
-
Requires-Dist: mypy<1.16; extra == "develop"
|
|
124
126
|
Requires-Dist: pkginfo<2; extra == "develop"
|
|
125
127
|
Requires-Dist: poethepoet<1; extra == "develop"
|
|
126
128
|
Requires-Dist: pyproject-fmt<3; extra == "develop"
|
|
127
129
|
Requires-Dist: pytest-repeat<1; extra == "develop"
|
|
128
130
|
Requires-Dist: ruff<0.16; extra == "develop"
|
|
131
|
+
Requires-Dist: ty==0.0.51; extra == "develop"
|
|
129
132
|
Requires-Dist: validate-pyproject<1; extra == "develop"
|
|
130
133
|
Provides-Extra: full
|
|
131
134
|
Requires-Dist: omniload[ibm-db,odbc,oracle]; extra == "full"
|
|
@@ -145,7 +148,7 @@ Requires-Dist: pytest<10; extra == "test"
|
|
|
145
148
|
Requires-Dist: pytest-asyncio<2; extra == "test"
|
|
146
149
|
Requires-Dist: pytest-cov<8; extra == "test"
|
|
147
150
|
Requires-Dist: pytest-xdist[psutil]<4; extra == "test"
|
|
148
|
-
Requires-Dist: testcontainers[mysql,postgres]<4.9; extra == "test"
|
|
151
|
+
Requires-Dist: testcontainers[mysql,postgres]<4.15,>=4.9.1; extra == "test"
|
|
149
152
|
Requires-Dist: types-requests<3; extra == "test"
|
|
150
153
|
Requires-Dist: verlib2; extra == "test"
|
|
151
154
|
Dynamic: license-file
|
|
@@ -4,7 +4,7 @@ from concurrent.futures import ThreadPoolExecutor
|
|
|
4
4
|
|
|
5
5
|
import pytest
|
|
6
6
|
|
|
7
|
-
from .main_test import DESTINATIONS, SOURCES
|
|
7
|
+
from .main_test import DESTINATIONS, SOURCES
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def pytest_configure(config):
|
|
@@ -38,7 +38,7 @@ def start_containers(config):
|
|
|
38
38
|
|
|
39
39
|
unique_containers = set(SOURCES.values()) | set(DESTINATIONS.values())
|
|
40
40
|
for container in unique_containers:
|
|
41
|
-
container.container_lock_dir = config.shared_directory
|
|
41
|
+
container.container_lock_dir = config.shared_directory # ty: ignore[invalid-assignment]
|
|
42
42
|
|
|
43
43
|
with ThreadPoolExecutor() as executor:
|
|
44
44
|
for container in unique_containers:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import warnings
|
|
2
2
|
from datetime import datetime
|
|
3
3
|
from enum import Enum
|
|
4
|
-
from typing import Optional
|
|
4
|
+
from typing import Any, Dict, Optional
|
|
5
5
|
|
|
6
6
|
import typer
|
|
7
7
|
from typing_extensions import Annotated
|
|
@@ -92,42 +92,42 @@ def ingest(
|
|
|
92
92
|
help="The URI of the [green]source[/green]",
|
|
93
93
|
envvar=["SOURCE_URI", "OMNILOAD_SOURCE_URI"],
|
|
94
94
|
),
|
|
95
|
-
],
|
|
95
|
+
],
|
|
96
96
|
dest_uri: Annotated[
|
|
97
97
|
str,
|
|
98
98
|
typer.Option(
|
|
99
99
|
help="The URI of the [cyan]destination[/cyan]",
|
|
100
100
|
envvar=["DESTINATION_URI", "OMNILOAD_DESTINATION_URI"],
|
|
101
101
|
),
|
|
102
|
-
],
|
|
102
|
+
],
|
|
103
103
|
source_table: Annotated[
|
|
104
104
|
str,
|
|
105
105
|
typer.Option(
|
|
106
106
|
help="The table name in the [green]source[/green] to fetch",
|
|
107
107
|
envvar=["SOURCE_TABLE", "OMNILOAD_SOURCE_TABLE"],
|
|
108
108
|
),
|
|
109
|
-
],
|
|
110
|
-
dest_table: Annotated[
|
|
109
|
+
],
|
|
110
|
+
dest_table: Annotated[ # ty: ignore[invalid-parameter-default]
|
|
111
111
|
str,
|
|
112
112
|
typer.Option(
|
|
113
113
|
help="The table in the [cyan]destination[/cyan] to save the data into",
|
|
114
114
|
envvar=["DESTINATION_TABLE", "OMNILOAD_DESTINATION_TABLE"],
|
|
115
115
|
),
|
|
116
|
-
] = None,
|
|
116
|
+
] = None,
|
|
117
117
|
incremental_key: Annotated[
|
|
118
118
|
Optional[str],
|
|
119
119
|
typer.Option(
|
|
120
120
|
help="The incremental key from the table to be used for incremental strategies",
|
|
121
121
|
envvar=["INCREMENTAL_KEY", "OMNILOAD_INCREMENTAL_KEY"],
|
|
122
122
|
),
|
|
123
|
-
] = None,
|
|
123
|
+
] = None,
|
|
124
124
|
incremental_strategy: Annotated[
|
|
125
125
|
IncrementalStrategy,
|
|
126
126
|
typer.Option(
|
|
127
127
|
help="The incremental strategy to use",
|
|
128
128
|
envvar=["INCREMENTAL_STRATEGY", "OMNILOAD_INCREMENTAL_STRATEGY"],
|
|
129
129
|
),
|
|
130
|
-
] = IncrementalStrategy.create_replace,
|
|
130
|
+
] = IncrementalStrategy.create_replace,
|
|
131
131
|
interval_start: Annotated[
|
|
132
132
|
Optional[datetime],
|
|
133
133
|
typer.Option(
|
|
@@ -135,7 +135,7 @@ def ingest(
|
|
|
135
135
|
formats=DATE_FORMATS,
|
|
136
136
|
envvar=["INTERVAL_START", "OMNILOAD_INTERVAL_START"],
|
|
137
137
|
),
|
|
138
|
-
] = None,
|
|
138
|
+
] = None,
|
|
139
139
|
interval_end: Annotated[
|
|
140
140
|
Optional[datetime],
|
|
141
141
|
typer.Option(
|
|
@@ -143,147 +143,147 @@ def ingest(
|
|
|
143
143
|
formats=DATE_FORMATS,
|
|
144
144
|
envvar=["INTERVAL_END", "OMNILOAD_INTERVAL_END"],
|
|
145
145
|
),
|
|
146
|
-
] = None,
|
|
146
|
+
] = None,
|
|
147
147
|
primary_key: Annotated[
|
|
148
148
|
Optional[list[str]],
|
|
149
149
|
typer.Option(
|
|
150
150
|
help="The key that will be used to deduplicate the resulting table",
|
|
151
151
|
envvar=["PRIMARY_KEY", "OMNILOAD_PRIMARY_KEY"],
|
|
152
152
|
),
|
|
153
|
-
] = None,
|
|
153
|
+
] = None,
|
|
154
154
|
partition_by: Annotated[
|
|
155
155
|
Optional[str],
|
|
156
156
|
typer.Option(
|
|
157
157
|
help="The partition key to be used for partitioning the destination table",
|
|
158
158
|
envvar=["PARTITION_BY", "OMNILOAD_PARTITION_BY"],
|
|
159
159
|
),
|
|
160
|
-
] = None,
|
|
160
|
+
] = None,
|
|
161
161
|
cluster_by: Annotated[
|
|
162
162
|
Optional[str],
|
|
163
163
|
typer.Option(
|
|
164
164
|
help="The clustering key to be used for clustering the destination table, not every destination supports clustering.",
|
|
165
165
|
envvar=["CLUSTER_BY", "OMNILOAD_CLUSTER_BY"],
|
|
166
166
|
),
|
|
167
|
-
] = None,
|
|
167
|
+
] = None,
|
|
168
168
|
dry_run: Annotated[
|
|
169
169
|
Optional[bool],
|
|
170
170
|
typer.Option(
|
|
171
171
|
help="Display data transfer plan but don't invoke it",
|
|
172
172
|
envvar=["DRY_RUN", "OMNILOAD_DRY_RUN"],
|
|
173
173
|
),
|
|
174
|
-
] = False,
|
|
174
|
+
] = False,
|
|
175
175
|
full_refresh: Annotated[
|
|
176
176
|
bool,
|
|
177
177
|
typer.Option(
|
|
178
178
|
help="Ignore the state and refresh the destination table completely",
|
|
179
179
|
envvar=["FULL_REFRESH", "OMNILOAD_FULL_REFRESH"],
|
|
180
180
|
),
|
|
181
|
-
] = False,
|
|
181
|
+
] = False,
|
|
182
182
|
progress: Annotated[
|
|
183
183
|
Progress,
|
|
184
184
|
typer.Option(
|
|
185
185
|
help="The progress display type, must be one of 'interactive', 'log'",
|
|
186
186
|
envvar=["PROGRESS", "OMNILOAD_PROGRESS"],
|
|
187
187
|
),
|
|
188
|
-
] = Progress.interactive,
|
|
188
|
+
] = Progress.interactive,
|
|
189
189
|
sql_backend: Annotated[
|
|
190
190
|
SqlBackend,
|
|
191
191
|
typer.Option(
|
|
192
192
|
help="The SQL backend to use",
|
|
193
193
|
envvar=["SQL_BACKEND", "OMNILOAD_SQL_BACKEND"],
|
|
194
194
|
),
|
|
195
|
-
] = SqlBackend.default,
|
|
195
|
+
] = SqlBackend.default,
|
|
196
196
|
loader_file_format: Annotated[
|
|
197
197
|
Optional[LoaderFileFormat],
|
|
198
198
|
typer.Option(
|
|
199
199
|
help="The file format to use when loading data",
|
|
200
200
|
envvar=["LOADER_FILE_FORMAT", "OMNILOAD_LOADER_FILE_FORMAT"],
|
|
201
201
|
),
|
|
202
|
-
] = None,
|
|
202
|
+
] = None,
|
|
203
203
|
page_size: Annotated[
|
|
204
204
|
Optional[int],
|
|
205
205
|
typer.Option(
|
|
206
206
|
help="The page size to be used when fetching data from SQL sources",
|
|
207
207
|
envvar=["PAGE_SIZE", "OMNILOAD_PAGE_SIZE"],
|
|
208
208
|
),
|
|
209
|
-
] = 50000,
|
|
209
|
+
] = 50000,
|
|
210
210
|
loader_file_size: Annotated[
|
|
211
211
|
Optional[int],
|
|
212
212
|
typer.Option(
|
|
213
213
|
help="The file size to be used by the loader to split the data into multiple files. This can be set independent of the page size, since page size is used for fetching the data from the sources whereas this is used for the processing/loading part.",
|
|
214
214
|
envvar=["LOADER_FILE_SIZE", "OMNILOAD_LOADER_FILE_SIZE"],
|
|
215
215
|
),
|
|
216
|
-
] = 100000,
|
|
216
|
+
] = 100000,
|
|
217
217
|
schema_naming: Annotated[
|
|
218
218
|
SchemaNaming,
|
|
219
219
|
typer.Option(
|
|
220
220
|
help="The naming convention to use when moving the tables from source to destination. The default behavior is explained here: https://dlthub.com/docs/general-usage/schema#naming-convention",
|
|
221
221
|
envvar=["SCHEMA_NAMING", "OMNILOAD_SCHEMA_NAMING"],
|
|
222
222
|
),
|
|
223
|
-
] = SchemaNaming.default,
|
|
223
|
+
] = SchemaNaming.default,
|
|
224
224
|
pipelines_dir: Annotated[
|
|
225
225
|
Optional[str],
|
|
226
226
|
typer.Option(
|
|
227
227
|
help="The path to store dlt-related pipeline metadata. By default, omniload will create a temporary directory and delete it after the execution is done in order to make retries stateless.",
|
|
228
228
|
envvar=["PIPELINES_DIR", "OMNILOAD_PIPELINES_DIR"],
|
|
229
229
|
),
|
|
230
|
-
] = None,
|
|
230
|
+
] = None,
|
|
231
231
|
extract_parallelism: Annotated[
|
|
232
232
|
Optional[int],
|
|
233
233
|
typer.Option(
|
|
234
234
|
help="The number of parallel jobs to run for extracting data from the source, only applicable for certain sources",
|
|
235
235
|
envvar=["EXTRACT_PARALLELISM", "OMNILOAD_EXTRACT_PARALLELISM"],
|
|
236
236
|
),
|
|
237
|
-
] = 5,
|
|
237
|
+
] = 5,
|
|
238
238
|
sql_reflection_level: Annotated[
|
|
239
239
|
SqlReflectionLevel,
|
|
240
240
|
typer.Option(
|
|
241
241
|
help="The reflection level to use when reflecting the table schema from the source",
|
|
242
242
|
envvar=["SQL_REFLECTION_LEVEL", "OMNILOAD_SQL_REFLECTION_LEVEL"],
|
|
243
243
|
),
|
|
244
|
-
] = SqlReflectionLevel.full,
|
|
244
|
+
] = SqlReflectionLevel.full,
|
|
245
245
|
sql_limit: Annotated[
|
|
246
246
|
Optional[int],
|
|
247
247
|
typer.Option(
|
|
248
248
|
help="The limit to use when fetching data from the source",
|
|
249
249
|
envvar=["SQL_LIMIT", "OMNILOAD_SQL_LIMIT"],
|
|
250
250
|
),
|
|
251
|
-
] = None,
|
|
251
|
+
] = None,
|
|
252
252
|
sql_exclude_columns: Annotated[
|
|
253
253
|
Optional[list[str]],
|
|
254
254
|
typer.Option(
|
|
255
255
|
help="The columns to exclude from the source table",
|
|
256
256
|
envvar=["SQL_EXCLUDE_COLUMNS", "OMNILOAD_SQL_EXCLUDE_COLUMNS"],
|
|
257
257
|
),
|
|
258
|
-
] = [],
|
|
258
|
+
] = [],
|
|
259
259
|
columns: Annotated[
|
|
260
260
|
Optional[list[str]],
|
|
261
261
|
typer.Option(
|
|
262
262
|
help="The column types to be used for the destination table in the format of 'column_name:column_type'",
|
|
263
263
|
envvar=["OMNILOAD_COLUMNS"],
|
|
264
264
|
),
|
|
265
|
-
] = None,
|
|
265
|
+
] = None,
|
|
266
266
|
yield_limit: Annotated[
|
|
267
267
|
Optional[int],
|
|
268
268
|
typer.Option(
|
|
269
269
|
help="Limit the number of pages yielded from the source",
|
|
270
270
|
envvar=["YIELD_LIMIT", "OMNILOAD_YIELD_LIMIT"],
|
|
271
271
|
),
|
|
272
|
-
] = None,
|
|
272
|
+
] = None,
|
|
273
273
|
staging_bucket: Annotated[
|
|
274
274
|
Optional[str],
|
|
275
275
|
typer.Option(
|
|
276
276
|
help="The staging bucket to be used for the ingestion, must be prefixed with 'gs://' or 's3://'",
|
|
277
277
|
envvar=["STAGING_BUCKET", "OMNILOAD_STAGING_BUCKET"],
|
|
278
278
|
),
|
|
279
|
-
] = None,
|
|
279
|
+
] = None,
|
|
280
280
|
mask: Annotated[
|
|
281
281
|
Optional[list[str]],
|
|
282
282
|
typer.Option(
|
|
283
283
|
help="Column masking configuration in format 'column:algorithm[:param]'. Can be specified multiple times.",
|
|
284
284
|
envvar=["MASK", "OMNILOAD_MASK"],
|
|
285
285
|
),
|
|
286
|
-
] = [],
|
|
286
|
+
] = [],
|
|
287
287
|
):
|
|
288
288
|
import hashlib
|
|
289
289
|
import tempfile
|
|
@@ -471,12 +471,12 @@ def ingest(
|
|
|
471
471
|
|
|
472
472
|
column_hints[key]["primary_key"] = True
|
|
473
473
|
|
|
474
|
-
pipeline = dlt.pipeline(
|
|
474
|
+
pipeline = dlt.pipeline(
|
|
475
475
|
pipeline_name=m.hexdigest(),
|
|
476
476
|
destination=dlt_dest,
|
|
477
477
|
progress=progressInstance,
|
|
478
478
|
pipelines_dir=pipelines_dir,
|
|
479
|
-
refresh="drop_resources" if full_refresh else None,
|
|
479
|
+
refresh="drop_resources" if full_refresh else None, # ty: ignore[invalid-argument-type]
|
|
480
480
|
)
|
|
481
481
|
|
|
482
482
|
if source.handles_incrementality():
|
|
@@ -532,9 +532,9 @@ def ingest(
|
|
|
532
532
|
# In order to eliminate this, we have introduced a new option to omniload, --columns, which allows the user to specify the column types for the destination table.
|
|
533
533
|
# This way, omniload will know the data type of the incremental field, and will be able to convert the start and end dates to the correct data type before running the ingestion.
|
|
534
534
|
if interval_start:
|
|
535
|
-
interval_start = interval_start.date() #
|
|
535
|
+
interval_start = interval_start.date() # ty: ignore[invalid-assignment]
|
|
536
536
|
if interval_end:
|
|
537
|
-
interval_end = interval_end.date() #
|
|
537
|
+
interval_end = interval_end.date() # ty: ignore[invalid-assignment]
|
|
538
538
|
|
|
539
539
|
if factory.source_scheme.startswith("spanner"):
|
|
540
540
|
# we tend to use the 'pyarrow' backend in general, however, it has issues with JSON objects, so we override it to 'sqlalchemy' for Spanner.
|
|
@@ -608,7 +608,7 @@ def ingest(
|
|
|
608
608
|
engine_type = ClickhouseDestination.engine_type(dest_uri)
|
|
609
609
|
|
|
610
610
|
def apply_clickhouse_adapter(x):
|
|
611
|
-
kwargs = {"settings": settings}
|
|
611
|
+
kwargs: Dict[str, Any] = {"settings": settings}
|
|
612
612
|
if engine_type:
|
|
613
613
|
kwargs["table_engine_type"] = engine_type
|
|
614
614
|
clickhouse_adapter(x, **kwargs)
|
|
@@ -656,13 +656,13 @@ def ingest(
|
|
|
656
656
|
table=dest_table,
|
|
657
657
|
staging_bucket=staging_bucket,
|
|
658
658
|
),
|
|
659
|
-
write_disposition=write_disposition,
|
|
659
|
+
write_disposition=write_disposition,
|
|
660
660
|
primary_key=(
|
|
661
661
|
primary_key if primary_key and len(primary_key) > 0 else None
|
|
662
|
-
),
|
|
662
|
+
),
|
|
663
663
|
loader_file_format=(
|
|
664
|
-
loader_file_format.value if loader_file_format is not None else None
|
|
665
|
-
),
|
|
664
|
+
loader_file_format.value if loader_file_format is not None else None
|
|
665
|
+
),
|
|
666
666
|
)
|
|
667
667
|
|
|
668
668
|
# Databricks concurrency error patterns that are safe to retry
|
|
@@ -795,7 +795,7 @@ def example_uris():
|
|
|
795
795
|
|
|
796
796
|
@app.command()
|
|
797
797
|
def version():
|
|
798
|
-
from omniload import __version__
|
|
798
|
+
from omniload import __version__
|
|
799
799
|
|
|
800
800
|
print(f"v{__version__}")
|
|
801
801
|
|