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.
Files changed (248) hide show
  1. {omniload-0.1.0 → omniload-0.2.0}/PKG-INFO +17 -14
  2. {omniload-0.1.0 → omniload-0.2.0}/omniload/conftest.py +2 -2
  3. {omniload-0.1.0 → omniload-0.2.0}/omniload/main.py +40 -40
  4. {omniload-0.1.0 → omniload-0.2.0}/omniload/main_test.py +204 -44
  5. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/adjust/__init__.py +14 -11
  6. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/adjust/adjust_helpers.py +1 -1
  7. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/anthropic/helpers_test.py +2 -0
  8. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/applovin_max/__init__.py +6 -1
  9. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appsflyer/client.py +12 -4
  10. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appsflyer/client_test.py +3 -1
  11. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/models.py +8 -8
  12. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/arrow/__init__.py +2 -2
  13. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/asana_source/__init__.py +8 -8
  14. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/blob_test.py +1 -1
  15. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/chess/__init__.py +8 -4
  16. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/chess/helpers.py +4 -2
  17. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/clickup/__init__.py +17 -9
  18. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/collector/spinner.py +3 -3
  19. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/couchbase_source/__init__.py +5 -5
  20. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/couchbase_source/helpers.py +2 -2
  21. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/customer_io/__init__.py +4 -4
  22. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/destinations.py +10 -4
  23. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/destinations_test.py +20 -4
  24. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/dynamodb/__init__.py +1 -1
  25. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/elasticsearch/__init__.py +2 -2
  26. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/errors.py +5 -0
  27. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/__init__.py +30 -20
  28. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/helpers.py +15 -12
  29. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/filesystem/__init__.py +4 -3
  30. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/filesystem/helpers.py +18 -9
  31. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/filesystem/readers.py +5 -5
  32. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/filters.py +2 -2
  33. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fireflies/__init__.py +3 -3
  34. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fireflies/helpers.py +4 -6
  35. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/frankfurter/__init__.py +9 -4
  36. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/frankfurter/helpers.py +1 -1
  37. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/freshdesk/__init__.py +9 -4
  38. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/freshdesk/freshdesk_client.py +3 -2
  39. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fundraiseup/__init__.py +3 -3
  40. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/github/__init__.py +16 -9
  41. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/github/helpers.py +9 -5
  42. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/__init__.py +5 -6
  43. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_analytics/helpers.py +8 -2
  44. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/api_calls.py +6 -6
  45. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/data_processing.py +12 -9
  46. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/gorgias/__init__.py +5 -5
  47. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/gorgias/helpers.py +29 -13
  48. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hostaway/__init__.py +5 -0
  49. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/http/readers.py +5 -5
  50. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hubspot/__init__.py +27 -20
  51. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hubspot/helpers.py +2 -2
  52. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/influxdb/client.py +1 -1
  53. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/intercom/__init__.py +4 -4
  54. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/intercom/helpers.py +2 -1
  55. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/jira_source/helpers.py +3 -3
  56. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/kafka/__init__.py +21 -17
  57. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/kafka/helpers.py +76 -43
  58. omniload-0.2.0/omniload/src/kafka/model.py +169 -0
  59. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/kinesis/__init__.py +8 -8
  60. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/klaviyo/__init__.py +15 -11
  61. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/klaviyo/client.py +10 -9
  62. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linkedin_ads/__init__.py +5 -0
  63. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/loader.py +1 -1
  64. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/loader_test.py +1 -1
  65. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/masking.py +2 -2
  66. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mixpanel/__init__.py +6 -0
  67. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mongodb/__init__.py +2 -2
  68. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mongodb/helpers.py +36 -31
  69. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/partition.py +1 -1
  70. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/personio/__init__.py +11 -11
  71. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/phantombuster/__init__.py +11 -1
  72. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pinterest/__init__.py +8 -2
  73. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/__init__.py +7 -4
  74. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/pages.py +5 -1
  75. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/primer/__init__.py +3 -3
  76. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/quickbooks/__init__.py +9 -8
  77. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/reddit_ads/__init__.py +6 -0
  78. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/resource.py +17 -4
  79. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/revenuecat/__init__.py +7 -3
  80. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/revenuecat/helpers.py +2 -2
  81. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/salesforce/__init__.py +1 -1
  82. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/__init__.py +23 -4
  83. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/helpers.py +2 -2
  84. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/slack/helpers.py +14 -10
  85. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/smartsheets/__init__.py +11 -3
  86. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/smartsheets/test_smartsheets.py +3 -2
  87. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/__init__.py +7 -7
  88. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/socrata_source/__init__.py +5 -7
  89. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/solidgate/__init__.py +4 -4
  90. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/solidgate/helpers.py +17 -3
  91. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/sources.py +156 -130
  92. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/sources_test.py +32 -8
  93. omniload-0.2.0/omniload/src/sql_database/__init__.py +0 -0
  94. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/sql_database/callbacks.py +2 -1
  95. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/stripe_analytics/__init__.py +4 -3
  96. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/stripe_analytics/helpers.py +4 -4
  97. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/tiktok_ads/__init__.py +13 -9
  98. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/tiktok_ads/tiktok_helpers.py +5 -5
  99. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/trustpilot/__init__.py +5 -0
  100. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/wise/__init__.py +11 -2
  101. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/wise/client.py +8 -2
  102. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/__init__.py +38 -16
  103. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/helpers/api_helpers.py +2 -2
  104. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zoom/__init__.py +16 -10
  105. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zoom/helpers.py +15 -3
  106. {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/PKG-INFO +17 -14
  107. {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/SOURCES.txt +2 -0
  108. {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/requires.txt +16 -13
  109. {omniload-0.1.0 → omniload-0.2.0}/pyproject.toml +17 -92
  110. {omniload-0.1.0 → omniload-0.2.0}/LICENSE +0 -0
  111. {omniload-0.1.0 → omniload-0.2.0}/LICENSE.Apache-2.0 +0 -0
  112. {omniload-0.1.0 → omniload-0.2.0}/MANIFEST.in +0 -0
  113. {omniload-0.1.0 → omniload-0.2.0}/NOTICE +0 -0
  114. {omniload-0.1.0 → omniload-0.2.0}/README.md +0 -0
  115. {omniload-0.1.0 → omniload-0.2.0}/docs/conf.py +0 -0
  116. {omniload-0.1.0 → omniload-0.2.0}/omniload/__init__.py +0 -0
  117. /omniload-0.1.0/omniload/src/sql_database/__init__.py → /omniload-0.2.0/omniload/py.typed +0 -0
  118. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/adjust/adjust_helpers_test.py +0 -0
  119. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/airtable/__init__.py +0 -0
  120. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/allium/__init__.py +0 -0
  121. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/anthropic/__init__.py +0 -0
  122. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/anthropic/helpers.py +0 -0
  123. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/applovin/__init__.py +0 -0
  124. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appsflyer/__init__.py +0 -0
  125. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/__init__.py +0 -0
  126. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/client.py +0 -0
  127. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/errors.py +0 -0
  128. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/appstore/resources.py +0 -0
  129. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/asana_source/helpers.py +0 -0
  130. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/asana_source/settings.py +0 -0
  131. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/attio/__init__.py +0 -0
  132. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/attio/helpers.py +0 -0
  133. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/blob.py +0 -0
  134. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/bruin/__init__.py +0 -0
  135. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/chess/settings.py +0 -0
  136. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/clickup/helpers.py +0 -0
  137. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/couchbase_source/helpers_test.py +0 -0
  138. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/cursor/__init__.py +0 -0
  139. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/cursor/helpers.py +0 -0
  140. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/customer_io/helpers.py +0 -0
  141. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/docebo/__init__.py +0 -0
  142. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/docebo/client.py +0 -0
  143. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/docebo/helpers.py +0 -0
  144. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/docebo/helpers_test.py +0 -0
  145. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/dune/__init__.py +0 -0
  146. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/dune/helpers.py +0 -0
  147. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/elasticsearch/helpers.py +0 -0
  148. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/exceptions.py +0 -0
  149. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/helpers_test.py +0 -0
  150. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/settings.py +0 -0
  151. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/facebook_ads/utils.py +0 -0
  152. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/factory.py +0 -0
  153. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/factory_test.py +0 -0
  154. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fireflies/helpers_test.py +0 -0
  155. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fluxx/__init__.py +0 -0
  156. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fluxx/helpers.py +0 -0
  157. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fluxx/helpers_test.py +0 -0
  158. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/freshdesk/settings.py +0 -0
  159. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fundraiseup/client.py +0 -0
  160. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/fundraiseup/client_test.py +0 -0
  161. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/github/queries.py +0 -0
  162. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/github/settings.py +0 -0
  163. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/field.py +0 -0
  164. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/metrics.py +0 -0
  165. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/predicates.py +0 -0
  166. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/reports.py +0 -0
  167. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/reports_test.py +0 -0
  168. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_ads/test_google_ads.py +0 -0
  169. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_analytics/__init__.py +0 -0
  170. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_analytics/helpers_test.py +0 -0
  171. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_sheets/__init__.py +0 -0
  172. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/__init__.py +0 -0
  173. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/gorgias/helpers_test.py +0 -0
  174. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hostaway/client.py +0 -0
  175. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/http/__init__.py +0 -0
  176. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/http_client.py +0 -0
  177. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/hubspot/settings.py +0 -0
  178. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/indeed/__init__.py +0 -0
  179. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/indeed/helpers.py +0 -0
  180. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/influxdb/__init__.py +0 -0
  181. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/intercom/helpers_test.py +0 -0
  182. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/intercom/settings.py +0 -0
  183. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/isoc_pulse/__init__.py +0 -0
  184. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/jira_source/__init__.py +0 -0
  185. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/jira_source/settings.py +0 -0
  186. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/kinesis/helpers.py +0 -0
  187. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/klaviyo/helpers.py +0 -0
  188. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/klaviyo/helpers_test.py +0 -0
  189. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linear/__init__.py +0 -0
  190. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linear/helpers.py +0 -0
  191. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linkedin_ads/dimension_time_enum.py +0 -0
  192. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linkedin_ads/helpers.py +0 -0
  193. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/linkedin_ads/helpers_test.py +0 -0
  194. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mailchimp/__init__.py +0 -0
  195. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mailchimp/helpers.py +0 -0
  196. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mailchimp/helpers_test.py +0 -0
  197. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mailchimp/settings.py +0 -0
  198. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/masking_test.py +0 -0
  199. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mixpanel/client.py +0 -0
  200. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/monday/__init__.py +0 -0
  201. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/monday/helpers.py +0 -0
  202. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/monday/settings.py +0 -0
  203. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/mongodb/helpers_test.py +0 -0
  204. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/__init__.py +0 -0
  205. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/helpers/__init__.py +0 -0
  206. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/helpers/client.py +0 -0
  207. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/helpers/database.py +0 -0
  208. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/notion/settings.py +0 -0
  209. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/personio/helpers.py +0 -0
  210. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/phantombuster/client.py +0 -0
  211. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/__init__.py +0 -0
  212. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/custom_fields_munger.py +0 -0
  213. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/settings.py +0 -0
  214. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/pipedrive/typing.py +0 -0
  215. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/plusvibeai/__init__.py +0 -0
  216. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/plusvibeai/helpers.py +0 -0
  217. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/plusvibeai/settings.py +0 -0
  218. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/primer/helpers.py +0 -0
  219. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/primer/helpers_test.py +0 -0
  220. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/reddit_ads/helpers.py +0 -0
  221. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/reddit_ads/helpers_test.py +0 -0
  222. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/revenuecat/helpers_test.py +0 -0
  223. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/salesforce/helpers.py +0 -0
  224. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/exceptions.py +0 -0
  225. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/helpers_test.py +0 -0
  226. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/shopify/settings.py +0 -0
  227. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/slack/__init__.py +0 -0
  228. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/slack/settings.py +0 -0
  229. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/client.py +0 -0
  230. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/helpers.py +0 -0
  231. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/helpers_test.py +0 -0
  232. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/snapchat_ads/settings.py +0 -0
  233. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/socrata_source/helpers.py +0 -0
  234. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/socrata_source/settings.py +0 -0
  235. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/stripe_analytics/helpers_test.py +0 -0
  236. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/stripe_analytics/settings.py +0 -0
  237. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/table_definition.py +0 -0
  238. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/tiktok_ads/tiktok_helpers_test.py +0 -0
  239. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/time.py +0 -0
  240. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/trustpilot/client.py +0 -0
  241. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/helpers/__init__.py +0 -0
  242. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/helpers/credentials.py +0 -0
  243. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/helpers/talk_api.py +0 -0
  244. {omniload-0.1.0 → omniload-0.2.0}/omniload/src/zendesk/settings.py +0 -0
  245. {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/dependency_links.txt +0 -0
  246. {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/entry_points.txt +0 -0
  247. {omniload-0.1.0 → omniload-0.2.0}/omniload.egg-info/top_level.txt +0 -0
  248. {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.1.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<4
67
- Requires-Dist: click<8.2
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.13
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<9
81
- Requires-Dist: facebook-business<24
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<29
85
- Requires-Dist: google-analytics-data<0.19
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<3
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<4
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<11
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.14
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 # type: ignore
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
- ], # type: ignore
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
- ], # type: ignore
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
- ], # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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
- ] = [], # type: ignore
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, # type: ignore
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, # type: ignore
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, # type: ignore
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
- ] = [], # type: ignore
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( # type: ignore
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() # type: ignore
535
+ interval_start = interval_start.date() # ty: ignore[invalid-assignment]
536
536
  if interval_end:
537
- interval_end = interval_end.date() # type: ignore
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, # type: ignore
659
+ write_disposition=write_disposition,
660
660
  primary_key=(
661
661
  primary_key if primary_key and len(primary_key) > 0 else None
662
- ), # type: ignore
662
+ ),
663
663
  loader_file_format=(
664
- loader_file_format.value if loader_file_format is not None else None # type: ignore
665
- ), # type: ignore
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__ # type: ignore
798
+ from omniload import __version__
799
799
 
800
800
  print(f"v{__version__}")
801
801