omniload 0.3.0__tar.gz → 0.4.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 (318) hide show
  1. omniload-0.4.0/NOTICE +35 -0
  2. {omniload-0.3.0 → omniload-0.4.0}/PKG-INFO +2 -2
  3. {omniload-0.3.0 → omniload-0.4.0}/omniload/__init__.py +2 -2
  4. {omniload-0.3.0 → omniload-0.4.0}/omniload/api.py +12 -11
  5. omniload-0.3.0/omniload/src/filters.py → omniload-0.4.0/omniload/codec/filter.py +1 -1
  6. omniload-0.3.0/omniload/src/partition.py → omniload-0.4.0/omniload/codec/hint.py +1 -1
  7. omniload-0.4.0/omniload/core/factory.py +51 -0
  8. omniload-0.4.0/omniload/core/model.py +68 -0
  9. omniload-0.4.0/omniload/core/registry.py +147 -0
  10. omniload-0.4.0/omniload/core/router.py +423 -0
  11. {omniload-0.3.0 → omniload-0.4.0}/omniload/main.py +1 -1
  12. omniload-0.3.0/omniload/src/adjust/__init__.py → omniload-0.4.0/omniload/source/adjust/adapter.py +1 -1
  13. omniload-0.4.0/omniload/source/adjust/api.py +87 -0
  14. omniload-0.4.0/omniload/source/airtable/api.py +42 -0
  15. omniload-0.3.0/omniload/src/allium/__init__.py → omniload-0.4.0/omniload/source/allium/adapter.py +1 -1
  16. omniload-0.4.0/omniload/source/allium/api.py +74 -0
  17. omniload-0.4.0/omniload/source/anthropic/api.py +55 -0
  18. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/anthropic/helpers.py +1 -1
  19. omniload-0.4.0/omniload/source/applovin/api.py +50 -0
  20. omniload-0.3.0/omniload/src/applovin_max/__init__.py → omniload-0.4.0/omniload/source/applovin_max/adapter.py +1 -1
  21. omniload-0.4.0/omniload/source/applovin_max/api.py +72 -0
  22. omniload-0.3.0/omniload/src/appsflyer/__init__.py → omniload-0.4.0/omniload/source/appsflyer/adapter.py +1 -1
  23. omniload-0.4.0/omniload/source/appsflyer/api.py +43 -0
  24. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/appsflyer/client.py +1 -1
  25. omniload-0.3.0/omniload/src/appstore/__init__.py → omniload-0.4.0/omniload/source/appstore/adapter.py +1 -1
  26. omniload-0.4.0/omniload/source/appstore/api.py +83 -0
  27. omniload-0.4.0/omniload/source/arrow/api.py +54 -0
  28. omniload-0.4.0/omniload/source/asana/api.py +45 -0
  29. omniload-0.4.0/omniload/source/attio/api.py +31 -0
  30. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/attio/helpers.py +1 -1
  31. omniload-0.4.0/omniload/source/blobstorage/api.py +189 -0
  32. omniload-0.4.0/omniload/source/bruin/api.py +24 -0
  33. omniload-0.4.0/omniload/source/chess/api.py +52 -0
  34. omniload-0.3.0/omniload/src/clickup/__init__.py → omniload-0.4.0/omniload/source/clickup/adapter.py +2 -1
  35. omniload-0.4.0/omniload/source/clickup/api.py +46 -0
  36. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/clickup/helpers.py +1 -1
  37. omniload-0.4.0/omniload/source/couchbase/api.py +171 -0
  38. omniload-0.4.0/omniload/source/csv/api.py +80 -0
  39. omniload-0.4.0/omniload/source/cursor/api.py +51 -0
  40. omniload-0.3.0/omniload/src/customer_io/__init__.py → omniload-0.4.0/omniload/source/customer_io/adapter.py +1 -1
  41. omniload-0.4.0/omniload/source/customer_io/api.py +104 -0
  42. omniload-0.4.0/omniload/source/docebo/api.py +67 -0
  43. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/docebo/client.py +2 -2
  44. omniload-0.3.0/omniload/src/dune/__init__.py → omniload-0.4.0/omniload/source/dune/adapter.py +2 -2
  45. omniload-0.4.0/omniload/source/dune/api.py +85 -0
  46. omniload-0.4.0/omniload/source/dynamodb/api.py +73 -0
  47. omniload-0.3.0/omniload/src/elasticsearch/__init__.py → omniload-0.4.0/omniload/source/elasticsearch/adapter.py +1 -2
  48. omniload-0.4.0/omniload/source/elasticsearch/api.py +56 -0
  49. omniload-0.3.0/omniload/src/facebook_ads/__init__.py → omniload-0.4.0/omniload/source/facebook_ads/adapter.py +1 -1
  50. omniload-0.4.0/omniload/source/facebook_ads/api.py +177 -0
  51. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/facebook_ads/helpers.py +1 -1
  52. omniload-0.4.0/omniload/source/fireflies/api.py +62 -0
  53. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/fireflies/helpers.py +1 -1
  54. omniload-0.4.0/omniload/source/fluxx/api.py +79 -0
  55. omniload-0.3.0/omniload/src/frankfurter/__init__.py → omniload-0.4.0/omniload/source/frankfurter/adapter.py +1 -1
  56. omniload-0.4.0/omniload/source/frankfurter/api.py +55 -0
  57. omniload-0.3.0/omniload/src/freshdesk/__init__.py → omniload-0.4.0/omniload/source/freshdesk/adapter.py +1 -1
  58. omniload-0.4.0/omniload/source/freshdesk/api.py +72 -0
  59. omniload-0.3.0/omniload/src/freshdesk/freshdesk_client.py → omniload-0.4.0/omniload/source/freshdesk/client.py +1 -1
  60. omniload-0.4.0/omniload/source/fundraiseup/api.py +23 -0
  61. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/fundraiseup/client.py +1 -1
  62. omniload-0.3.0/omniload/src/github/__init__.py → omniload-0.4.0/omniload/source/github/adapter.py +2 -1
  63. omniload-0.4.0/omniload/source/github/api.py +73 -0
  64. omniload-0.4.0/omniload/source/google_ads/api.py +151 -0
  65. omniload-0.4.0/omniload/source/google_analytics/api.py +79 -0
  66. omniload-0.4.0/omniload/source/google_sheets/api.py +52 -0
  67. omniload-0.4.0/omniload/source/gorgias/api.py +48 -0
  68. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/gorgias/helpers.py +1 -1
  69. omniload-0.3.0/omniload/src/hostaway/__init__.py → omniload-0.4.0/omniload/source/hostaway/adapter.py +2 -1
  70. omniload-0.4.0/omniload/source/hostaway/api.py +94 -0
  71. omniload-0.4.0/omniload/source/http/api.py +61 -0
  72. omniload-0.3.0/omniload/src/hubspot/__init__.py → omniload-0.4.0/omniload/source/hubspot/adapter.py +2 -1
  73. omniload-0.4.0/omniload/source/hubspot/api.py +79 -0
  74. omniload-0.4.0/omniload/source/indeed/api.py +59 -0
  75. omniload-0.4.0/omniload/source/influxdb/api.py +66 -0
  76. omniload-0.4.0/omniload/source/intercom/api.py +79 -0
  77. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/intercom/helpers.py +1 -1
  78. omniload-0.4.0/omniload/source/isoc_pulse/api.py +45 -0
  79. omniload-0.4.0/omniload/source/jira/api.py +60 -0
  80. omniload-0.4.0/omniload/source/kafka/api.py +71 -0
  81. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/kafka/helpers.py +1 -1
  82. omniload-0.4.0/omniload/source/kinesis/api.py +50 -0
  83. omniload-0.3.0/omniload/src/klaviyo/__init__.py → omniload-0.4.0/omniload/source/klaviyo/adapter.py +2 -2
  84. omniload-0.4.0/omniload/source/klaviyo/api.py +52 -0
  85. omniload-0.4.0/omniload/source/linear/api.py +64 -0
  86. omniload-0.3.0/omniload/src/linkedin_ads/__init__.py → omniload-0.4.0/omniload/source/linkedin_ads/adapter.py +2 -2
  87. omniload-0.4.0/omniload/source/linkedin_ads/api.py +111 -0
  88. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/linkedin_ads/helpers.py +1 -1
  89. omniload-0.3.0/omniload/src/mailchimp/__init__.py → omniload-0.4.0/omniload/source/mailchimp/adapter.py +3 -3
  90. omniload-0.4.0/omniload/source/mailchimp/api.py +31 -0
  91. omniload-0.3.0/omniload/src/mixpanel/__init__.py → omniload-0.4.0/omniload/source/mixpanel/adapter.py +2 -1
  92. omniload-0.4.0/omniload/source/mixpanel/api.py +70 -0
  93. omniload-0.4.0/omniload/source/monday/api.py +42 -0
  94. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/monday/helpers.py +1 -1
  95. omniload-0.4.0/omniload/source/mongodb/api.py +206 -0
  96. omniload-0.4.0/omniload/source/notion/api.py +32 -0
  97. omniload-0.4.0/omniload/source/personio/api.py +57 -0
  98. omniload-0.3.0/omniload/src/phantombuster/__init__.py → omniload-0.4.0/omniload/source/phantombuster/adapter.py +2 -2
  99. omniload-0.4.0/omniload/source/phantombuster/api.py +54 -0
  100. omniload-0.3.0/omniload/src/pinterest/__init__.py → omniload-0.4.0/omniload/source/pinterest/adapter.py +1 -1
  101. omniload-0.4.0/omniload/source/pinterest/api.py +45 -0
  102. omniload-0.4.0/omniload/source/pipedrive/api.py +48 -0
  103. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/pipedrive/helpers/pages.py +2 -1
  104. omniload-0.4.0/omniload/source/plusvibeai/api.py +49 -0
  105. omniload-0.4.0/omniload/source/primer/api.py +32 -0
  106. omniload-0.3.0/omniload/src/quickbooks/__init__.py → omniload-0.4.0/omniload/source/quickbooks/adapter.py +0 -1
  107. omniload-0.4.0/omniload/source/quickbooks/api.py +80 -0
  108. omniload-0.3.0/omniload/src/reddit_ads/__init__.py → omniload-0.4.0/omniload/source/reddit_ads/adapter.py +1 -1
  109. omniload-0.4.0/omniload/source/reddit_ads/api.py +81 -0
  110. omniload-0.4.0/omniload/source/revenuecat/api.py +56 -0
  111. omniload-0.4.0/omniload/source/salesforce/api.py +43 -0
  112. omniload-0.4.0/omniload/source/sftp/api.py +57 -0
  113. omniload-0.3.0/omniload/src/shopify/__init__.py → omniload-0.4.0/omniload/source/shopify/adapter.py +1 -1
  114. omniload-0.4.0/omniload/source/shopify/api.py +93 -0
  115. omniload-0.4.0/omniload/source/slack/api.py +49 -0
  116. omniload-0.3.0/omniload/src/smartsheets/__init__.py → omniload-0.4.0/omniload/source/smartsheets/adapter.py +1 -1
  117. omniload-0.4.0/omniload/source/smartsheets/api.py +32 -0
  118. omniload-0.4.0/omniload/source/snapchat_ads/api.py +167 -0
  119. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/snapchat_ads/helpers.py +1 -1
  120. omniload-0.4.0/omniload/source/socrata/api.py +90 -0
  121. omniload-0.4.0/omniload/source/solidgate/api.py +54 -0
  122. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/solidgate/helpers.py +2 -2
  123. omniload-0.4.0/omniload/source/stripe/api.py +88 -0
  124. omniload-0.3.0/omniload/src/tiktok_ads/__init__.py → omniload-0.4.0/omniload/source/tiktok_ads/adapter.py +1 -1
  125. omniload-0.4.0/omniload/source/tiktok_ads/api.py +117 -0
  126. omniload-0.3.0/omniload/src/trustpilot/__init__.py → omniload-0.4.0/omniload/source/trustpilot/adapter.py +2 -1
  127. omniload-0.4.0/omniload/source/trustpilot/api.py +55 -0
  128. omniload-0.3.0/omniload/src/wise/__init__.py → omniload-0.4.0/omniload/source/wise/adapter.py +2 -1
  129. omniload-0.4.0/omniload/source/wise/api.py +44 -0
  130. omniload-0.3.0/omniload/src/zendesk/__init__.py → omniload-0.4.0/omniload/source/zendesk/adapter.py +2 -1
  131. omniload-0.4.0/omniload/source/zendesk/api.py +95 -0
  132. omniload-0.4.0/omniload/source/zoom/api.py +52 -0
  133. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/zoom/helpers.py +1 -1
  134. omniload-0.4.0/omniload/target/athena/__init__.py +93 -0
  135. omniload-0.4.0/omniload/target/bigquery/__init__.py +83 -0
  136. omniload-0.4.0/omniload/target/blobstorage/__init__.py +141 -0
  137. omniload-0.4.0/omniload/target/clickhouse/__init__.py +98 -0
  138. omniload-0.4.0/omniload/target/cratedb/__init__.py +9 -0
  139. omniload-0.4.0/omniload/target/csv/__init__.py +128 -0
  140. omniload-0.4.0/omniload/target/databricks/__init__.py +73 -0
  141. omniload-0.4.0/omniload/target/duckdb/__init__.py +10 -0
  142. omniload-0.3.0/omniload/src/elasticsearch/helpers.py → omniload-0.4.0/omniload/target/elasticsearch/adapter.py +0 -1
  143. omniload-0.4.0/omniload/target/elasticsearch/api.py +33 -0
  144. omniload-0.4.0/omniload/target/model.py +15 -0
  145. omniload-0.4.0/omniload/target/mongodb/__init__.py +13 -0
  146. omniload-0.4.0/omniload/target/motherduck/__init__.py +22 -0
  147. omniload-0.4.0/omniload/target/mssql/__init__.py +86 -0
  148. omniload-0.4.0/omniload/target/mysql/__init__.py +20 -0
  149. omniload-0.4.0/omniload/target/postgresql/__init__.py +8 -0
  150. omniload-0.4.0/omniload/target/redshift/__init__.py +10 -0
  151. omniload-0.4.0/omniload/target/snowflake/__init__.py +8 -0
  152. omniload-0.4.0/omniload/target/sqlite/__init__.py +15 -0
  153. omniload-0.4.0/omniload/target/synapse/__init__.py +8 -0
  154. omniload-0.4.0/omniload/target/trino/__init__.py +77 -0
  155. omniload-0.4.0/omniload/util/auth.py +73 -0
  156. omniload-0.3.0/omniload/src/blob.py → omniload-0.4.0/omniload/util/endpoint.py +1 -1
  157. omniload-0.3.0/omniload/src/http_client.py → omniload-0.4.0/omniload/util/http.py +2 -1
  158. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/util}/loader.py +1 -1
  159. omniload-0.4.0/omniload/util/time.py +29 -0
  160. {omniload-0.3.0 → omniload-0.4.0}/omniload.egg-info/PKG-INFO +2 -2
  161. omniload-0.4.0/omniload.egg-info/SOURCES.txt +309 -0
  162. {omniload-0.3.0 → omniload-0.4.0}/omniload.egg-info/requires.txt +1 -1
  163. {omniload-0.3.0 → omniload-0.4.0}/pyproject.toml +7 -2
  164. omniload-0.3.0/NOTICE +0 -35
  165. omniload-0.3.0/omniload/src/destinations.py +0 -988
  166. omniload-0.3.0/omniload/src/factory.py +0 -305
  167. omniload-0.3.0/omniload/src/sources.py +0 -5437
  168. omniload-0.3.0/omniload/src/table_definition.py +0 -16
  169. omniload-0.3.0/omniload/src/time.py +0 -11
  170. omniload-0.3.0/omniload.egg-info/SOURCES.txt +0 -213
  171. {omniload-0.3.0 → omniload-0.4.0}/LICENSE +0 -0
  172. {omniload-0.3.0 → omniload-0.4.0}/LICENSE.Apache-2.0 +0 -0
  173. {omniload-0.3.0 → omniload-0.4.0}/MANIFEST.in +0 -0
  174. {omniload-0.3.0 → omniload-0.4.0}/README.md +0 -0
  175. {omniload-0.3.0 → omniload-0.4.0}/docs/conf.py +0 -0
  176. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/codec}/masking.py +0 -0
  177. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/core}/resource.py +0 -0
  178. /omniload-0.3.0/omniload/src/errors.py → /omniload-0.4.0/omniload/error.py +0 -0
  179. {omniload-0.3.0 → omniload-0.4.0}/omniload/py.typed +0 -0
  180. /omniload-0.3.0/omniload/src/adjust/adjust_helpers.py → /omniload-0.4.0/omniload/source/adjust/helpers.py +0 -0
  181. /omniload-0.3.0/omniload/src/airtable/__init__.py → /omniload-0.4.0/omniload/source/airtable/adapter.py +0 -0
  182. /omniload-0.3.0/omniload/src/anthropic/__init__.py → /omniload-0.4.0/omniload/source/anthropic/adapter.py +0 -0
  183. /omniload-0.3.0/omniload/src/applovin/__init__.py → /omniload-0.4.0/omniload/source/applovin/adapter.py +0 -0
  184. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/appstore/client.py +0 -0
  185. /omniload-0.3.0/omniload/src/appstore/errors.py → /omniload-0.4.0/omniload/source/appstore/exceptions.py +0 -0
  186. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/appstore/models.py +0 -0
  187. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/appstore/resources.py +0 -0
  188. /omniload-0.3.0/omniload/src/arrow/__init__.py → /omniload-0.4.0/omniload/source/arrow/adapter.py +0 -0
  189. /omniload-0.3.0/omniload/src/asana_source/__init__.py → /omniload-0.4.0/omniload/source/asana/adapter.py +0 -0
  190. {omniload-0.3.0/omniload/src/asana_source → omniload-0.4.0/omniload/source/asana}/helpers.py +0 -0
  191. {omniload-0.3.0/omniload/src/asana_source → omniload-0.4.0/omniload/source/asana}/settings.py +0 -0
  192. /omniload-0.3.0/omniload/src/attio/__init__.py → /omniload-0.4.0/omniload/source/attio/adapter.py +0 -0
  193. /omniload-0.3.0/omniload/src/bruin/__init__.py → /omniload-0.4.0/omniload/source/bruin/adapter.py +0 -0
  194. /omniload-0.3.0/omniload/src/chess/__init__.py → /omniload-0.4.0/omniload/source/chess/adapter.py +0 -0
  195. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/chess/helpers.py +0 -0
  196. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/chess/settings.py +0 -0
  197. /omniload-0.3.0/omniload/src/couchbase_source/__init__.py → /omniload-0.4.0/omniload/source/couchbase/adapter.py +0 -0
  198. {omniload-0.3.0/omniload/src/couchbase_source → omniload-0.4.0/omniload/source/couchbase}/helpers.py +0 -0
  199. /omniload-0.3.0/omniload/src/cursor/__init__.py → /omniload-0.4.0/omniload/source/cursor/adapter.py +0 -0
  200. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/cursor/helpers.py +0 -0
  201. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/customer_io/helpers.py +0 -0
  202. /omniload-0.3.0/omniload/src/docebo/__init__.py → /omniload-0.4.0/omniload/source/docebo/adapter.py +0 -0
  203. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/docebo/helpers.py +0 -0
  204. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/dune/helpers.py +0 -0
  205. /omniload-0.3.0/omniload/src/dynamodb/__init__.py → /omniload-0.4.0/omniload/source/dynamodb/adapter.py +0 -0
  206. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/facebook_ads/exceptions.py +0 -0
  207. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/facebook_ads/settings.py +0 -0
  208. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/facebook_ads/utils.py +0 -0
  209. /omniload-0.3.0/omniload/src/filesystem/__init__.py → /omniload-0.4.0/omniload/source/filesystem/adapter.py +0 -0
  210. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/filesystem/helpers.py +0 -0
  211. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/filesystem/readers.py +0 -0
  212. /omniload-0.3.0/omniload/src/fireflies/__init__.py → /omniload-0.4.0/omniload/source/fireflies/adapter.py +0 -0
  213. /omniload-0.3.0/omniload/src/fluxx/__init__.py → /omniload-0.4.0/omniload/source/fluxx/adapter.py +0 -0
  214. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/fluxx/helpers.py +0 -0
  215. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/frankfurter/helpers.py +0 -0
  216. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/freshdesk/settings.py +0 -0
  217. /omniload-0.3.0/omniload/src/fundraiseup/__init__.py → /omniload-0.4.0/omniload/source/fundraiseup/adapter.py +0 -0
  218. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/github/helpers.py +0 -0
  219. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/github/queries.py +0 -0
  220. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/github/settings.py +0 -0
  221. /omniload-0.3.0/omniload/src/google_ads/__init__.py → /omniload-0.4.0/omniload/source/google_ads/adapter.py +0 -0
  222. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/google_ads/field.py +0 -0
  223. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/google_ads/metrics.py +0 -0
  224. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/google_ads/predicates.py +0 -0
  225. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/google_ads/reports.py +0 -0
  226. /omniload-0.3.0/omniload/src/google_analytics/__init__.py → /omniload-0.4.0/omniload/source/google_analytics/adapter.py +0 -0
  227. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/google_analytics/helpers.py +0 -0
  228. /omniload-0.3.0/omniload/src/google_sheets/__init__.py → /omniload-0.4.0/omniload/source/google_sheets/adapter.py +0 -0
  229. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/google_sheets/helpers/__init__.py +0 -0
  230. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/google_sheets/helpers/api_calls.py +0 -0
  231. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/google_sheets/helpers/data_processing.py +0 -0
  232. /omniload-0.3.0/omniload/src/gorgias/__init__.py → /omniload-0.4.0/omniload/source/gorgias/adapter.py +0 -0
  233. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/hostaway/client.py +0 -0
  234. /omniload-0.3.0/omniload/src/http/__init__.py → /omniload-0.4.0/omniload/source/http/adapter.py +0 -0
  235. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/http/readers.py +0 -0
  236. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/hubspot/helpers.py +0 -0
  237. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/hubspot/settings.py +0 -0
  238. /omniload-0.3.0/omniload/src/indeed/__init__.py → /omniload-0.4.0/omniload/source/indeed/adapter.py +0 -0
  239. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/indeed/helpers.py +0 -0
  240. /omniload-0.3.0/omniload/src/influxdb/__init__.py → /omniload-0.4.0/omniload/source/influxdb/adapter.py +0 -0
  241. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/influxdb/client.py +0 -0
  242. /omniload-0.3.0/omniload/src/intercom/__init__.py → /omniload-0.4.0/omniload/source/intercom/adapter.py +0 -0
  243. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/intercom/settings.py +0 -0
  244. /omniload-0.3.0/omniload/src/isoc_pulse/__init__.py → /omniload-0.4.0/omniload/source/isoc_pulse/adapter.py +0 -0
  245. /omniload-0.3.0/omniload/src/jira_source/__init__.py → /omniload-0.4.0/omniload/source/jira/adapter.py +0 -0
  246. {omniload-0.3.0/omniload/src/jira_source → omniload-0.4.0/omniload/source/jira}/helpers.py +0 -0
  247. {omniload-0.3.0/omniload/src/jira_source → omniload-0.4.0/omniload/source/jira}/settings.py +0 -0
  248. /omniload-0.3.0/omniload/src/kafka/__init__.py → /omniload-0.4.0/omniload/source/kafka/adapter.py +0 -0
  249. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/kafka/model.py +0 -0
  250. /omniload-0.3.0/omniload/src/kinesis/__init__.py → /omniload-0.4.0/omniload/source/kinesis/adapter.py +0 -0
  251. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/kinesis/helpers.py +0 -0
  252. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/klaviyo/client.py +0 -0
  253. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/klaviyo/helpers.py +0 -0
  254. /omniload-0.3.0/omniload/src/linear/__init__.py → /omniload-0.4.0/omniload/source/linear/adapter.py +0 -0
  255. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/linear/helpers.py +0 -0
  256. /omniload-0.3.0/omniload/src/linkedin_ads/dimension_time_enum.py → /omniload-0.4.0/omniload/source/linkedin_ads/model.py +0 -0
  257. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/mailchimp/helpers.py +0 -0
  258. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/mailchimp/settings.py +0 -0
  259. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/mixpanel/client.py +0 -0
  260. /omniload-0.3.0/omniload/src/monday/__init__.py → /omniload-0.4.0/omniload/source/monday/adapter.py +0 -0
  261. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/monday/settings.py +0 -0
  262. /omniload-0.3.0/omniload/src/mongodb/__init__.py → /omniload-0.4.0/omniload/source/mongodb/adapter.py +0 -0
  263. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/mongodb/helpers.py +0 -0
  264. /omniload-0.3.0/omniload/src/notion/__init__.py → /omniload-0.4.0/omniload/source/notion/adapter.py +0 -0
  265. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/notion/helpers/__init__.py +0 -0
  266. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/notion/helpers/client.py +0 -0
  267. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/notion/helpers/database.py +0 -0
  268. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/notion/settings.py +0 -0
  269. /omniload-0.3.0/omniload/src/personio/__init__.py → /omniload-0.4.0/omniload/source/personio/adapter.py +0 -0
  270. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/personio/helpers.py +0 -0
  271. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/phantombuster/client.py +0 -0
  272. /omniload-0.3.0/omniload/src/pipedrive/__init__.py → /omniload-0.4.0/omniload/source/pipedrive/adapter.py +0 -0
  273. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/pipedrive/helpers/__init__.py +0 -0
  274. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/pipedrive/helpers/custom_fields_munger.py +0 -0
  275. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/pipedrive/settings.py +0 -0
  276. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/pipedrive/typing.py +0 -0
  277. /omniload-0.3.0/omniload/src/plusvibeai/__init__.py → /omniload-0.4.0/omniload/source/plusvibeai/adapter.py +0 -0
  278. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/plusvibeai/helpers.py +0 -0
  279. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/plusvibeai/settings.py +0 -0
  280. /omniload-0.3.0/omniload/src/primer/__init__.py → /omniload-0.4.0/omniload/source/primer/adapter.py +0 -0
  281. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/primer/helpers.py +0 -0
  282. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/reddit_ads/helpers.py +0 -0
  283. /omniload-0.3.0/omniload/src/revenuecat/__init__.py → /omniload-0.4.0/omniload/source/revenuecat/adapter.py +0 -0
  284. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/revenuecat/helpers.py +0 -0
  285. /omniload-0.3.0/omniload/src/salesforce/__init__.py → /omniload-0.4.0/omniload/source/salesforce/adapter.py +0 -0
  286. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/salesforce/helpers.py +0 -0
  287. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/shopify/exceptions.py +0 -0
  288. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/shopify/helpers.py +0 -0
  289. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/shopify/settings.py +0 -0
  290. /omniload-0.3.0/omniload/src/slack/__init__.py → /omniload-0.4.0/omniload/source/slack/adapter.py +0 -0
  291. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/slack/helpers.py +0 -0
  292. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/slack/settings.py +0 -0
  293. /omniload-0.3.0/omniload/src/snapchat_ads/__init__.py → /omniload-0.4.0/omniload/source/snapchat_ads/adapter.py +0 -0
  294. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/snapchat_ads/client.py +0 -0
  295. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/snapchat_ads/settings.py +0 -0
  296. /omniload-0.3.0/omniload/src/socrata_source/__init__.py → /omniload-0.4.0/omniload/source/socrata/adapter.py +0 -0
  297. {omniload-0.3.0/omniload/src/socrata_source → omniload-0.4.0/omniload/source/socrata}/helpers.py +0 -0
  298. {omniload-0.3.0/omniload/src/socrata_source → omniload-0.4.0/omniload/source/socrata}/settings.py +0 -0
  299. /omniload-0.3.0/omniload/src/solidgate/__init__.py → /omniload-0.4.0/omniload/source/solidgate/adapter.py +0 -0
  300. /omniload-0.3.0/omniload/src/sql_database/__init__.py → /omniload-0.4.0/omniload/source/sql_database/adapter.py +0 -0
  301. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/sql_database/callbacks.py +0 -0
  302. /omniload-0.3.0/omniload/src/stripe_analytics/__init__.py → /omniload-0.4.0/omniload/source/stripe/adapter.py +0 -0
  303. {omniload-0.3.0/omniload/src/stripe_analytics → omniload-0.4.0/omniload/source/stripe}/helpers.py +0 -0
  304. {omniload-0.3.0/omniload/src/stripe_analytics → omniload-0.4.0/omniload/source/stripe}/settings.py +0 -0
  305. /omniload-0.3.0/omniload/src/tiktok_ads/tiktok_helpers.py → /omniload-0.4.0/omniload/source/tiktok_ads/helpers.py +0 -0
  306. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/trustpilot/client.py +0 -0
  307. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/wise/client.py +0 -0
  308. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/zendesk/helpers/__init__.py +0 -0
  309. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/zendesk/helpers/api_helpers.py +0 -0
  310. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/zendesk/helpers/credentials.py +0 -0
  311. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/zendesk/helpers/talk_api.py +0 -0
  312. {omniload-0.3.0/omniload/src → omniload-0.4.0/omniload/source}/zendesk/settings.py +0 -0
  313. /omniload-0.3.0/omniload/src/zoom/__init__.py → /omniload-0.4.0/omniload/source/zoom/adapter.py +0 -0
  314. {omniload-0.3.0/omniload/src/collector → omniload-0.4.0/omniload/util}/spinner.py +0 -0
  315. {omniload-0.3.0 → omniload-0.4.0}/omniload.egg-info/dependency_links.txt +0 -0
  316. {omniload-0.3.0 → omniload-0.4.0}/omniload.egg-info/entry_points.txt +0 -0
  317. {omniload-0.3.0 → omniload-0.4.0}/omniload.egg-info/top_level.txt +0 -0
  318. {omniload-0.3.0 → omniload-0.4.0}/setup.cfg +0 -0
omniload-0.4.0/NOTICE ADDED
@@ -0,0 +1,35 @@
1
+ NOTICE
2
+
3
+ This project contains code from the following Apache 2.0 licensed project:
4
+
5
+ dlt-hub/verified-sources
6
+ https://github.com/dlt-hub/verified-sources
7
+ Copyright 2022-2025 ScaleVector
8
+ Licensed under the Apache License, Version 2.0
9
+
10
+ The following directories contain code from dlt-hub:
11
+ - omniload/source/airtable/
12
+ - omniload/source/asana/
13
+ - omniload/source/chess/
14
+ - omniload/source/facebook_ads/
15
+ - omniload/source/filesystem/
16
+ - omniload/source/freshdesk/
17
+ - omniload/source/github/
18
+ - omniload/source/google_ads/
19
+ - omniload/source/google_analytics/
20
+ - omniload/source/google_sheets/
21
+ - omniload/source/hubspot/
22
+ - omniload/source/jira/
23
+ - omniload/source/kafka/
24
+ - omniload/source/kinesis/
25
+ - omniload/source/mongodb/
26
+ - omniload/source/notion/
27
+ - omniload/source/personio/
28
+ - omniload/source/pipedrive/
29
+ - omniload/source/salesforce/
30
+ - omniload/source/shopify/
31
+ - omniload/source/slack/
32
+ - omniload/source/stripe/
33
+ - omniload/source/zendesk/
34
+
35
+ The Apache License 2.0 can be found in the LICENSE.Apache-2.0 file.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omniload
3
- Version: 0.3.0
3
+ Version: 0.4.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>
@@ -128,7 +128,7 @@ Requires-Dist: poethepoet<1; extra == "develop"
128
128
  Requires-Dist: pyproject-fmt<3; extra == "develop"
129
129
  Requires-Dist: pytest-repeat<1; extra == "develop"
130
130
  Requires-Dist: ruff<0.16; extra == "develop"
131
- Requires-Dist: ty==0.0.52; extra == "develop"
131
+ Requires-Dist: ty==0.0.53; extra == "develop"
132
132
  Requires-Dist: validate-pyproject<1; extra == "develop"
133
133
  Provides-Extra: full
134
134
  Requires-Dist: omniload[ibm-db,odbc,oracle]; extra == "full"
@@ -10,7 +10,7 @@ from omniload.api import (
10
10
  SqlReflectionLevel,
11
11
  run_ingest,
12
12
  )
13
- from omniload.src.errors import IngestJobError, ValidationError
13
+ from omniload.error import IngestJobError, ValidationError
14
14
 
15
15
  __appname__ = "omniload"
16
16
 
@@ -21,7 +21,7 @@ except PackageNotFoundError: # pragma: no cover
21
21
  __version__ = "0.0.0-dev"
22
22
 
23
23
  # Turn off dlt's telemetry to tame three more requests per invocation.
24
- mock.patch("dlt.common.runtime.telemetry._TELEMETRY_STARTED", True)
24
+ mock.patch("dlt.common.runtime.telemetry._TELEMETRY_STARTED", True).start()
25
25
 
26
26
  __all__ = [
27
27
  "IncrementalStrategy",
@@ -16,7 +16,7 @@ from datetime import datetime
16
16
  from enum import Enum
17
17
  from typing import TYPE_CHECKING
18
18
 
19
- from omniload.src.errors import IngestJobError, ValidationError
19
+ from omniload.error import IngestJobError, ValidationError
20
20
 
21
21
  if TYPE_CHECKING:
22
22
  from dlt.common.pipeline import LoadInfo
@@ -145,18 +145,19 @@ def run_ingest(
145
145
  from dlt.common.schema.typing import TColumnSchema
146
146
  from dlt.pipeline.exceptions import PipelineStepFailed
147
147
 
148
- import omniload.src.partition as partition
149
- import omniload.src.resource as resource
150
- from omniload.src.collector.spinner import SpinnerCollector
151
- from omniload.src.destinations import AthenaDestination, ClickhouseDestination
152
- from omniload.src.factory import SourceDestinationFactory
153
- from omniload.src.filters import (
148
+ import omniload.core.resource as resource
149
+ from omniload.codec import hint
150
+ from omniload.codec.filter import (
154
151
  cast_set_to_list,
155
152
  cast_spanner_types,
156
153
  create_masking_filter,
157
154
  handle_mysql_empty_dates,
158
155
  )
159
- from omniload.src.sources import MongoDbSource
156
+ from omniload.core.factory import SourceDestinationFactory
157
+ from omniload.source.mongodb.api import MongoDbSource
158
+ from omniload.target.athena import AthenaDestination
159
+ from omniload.target.clickhouse import ClickhouseDestination
160
+ from omniload.util.spinner import SpinnerCollector
160
161
 
161
162
  incremental_strategy = _coerce(incremental_strategy, IncrementalStrategy)
162
163
  progress = _coerce(progress, Progress)
@@ -428,7 +429,7 @@ def run_ingest(
428
429
  # https://github.com/dlt-hub/dlt/issues/2248
429
430
  # TODO(turtledev): only apply for write dispositions that actually cause an exception.
430
431
  # TODO(turtledev): make batch size configurable
431
- import omniload.src.arrow as arrow
432
+ import omniload.source.arrow.adapter as arrow
432
433
 
433
434
  resource.for_each(dlt_source, lambda x: x.add_map(arrow.as_list))
434
435
 
@@ -440,7 +441,7 @@ def run_ingest(
440
441
  resource.for_each(dlt_source, lambda x: x.add_limit(yield_limit))
441
442
 
442
443
  if isinstance(source, MongoDbSource):
443
- from omniload.src.resource import TypeHintMap
444
+ from omniload.core.resource import TypeHintMap
444
445
 
445
446
  resource.for_each(dlt_source, lambda x: x.add_map(TypeHintMap().type_hint_map))
446
447
 
@@ -451,7 +452,7 @@ def run_ingest(
451
452
  resource.for_each(dlt_source, col_h)
452
453
 
453
454
  if isinstance(destination, AthenaDestination) and partition_by:
454
- partition.apply_athena_hints(dlt_source, partition_by, column_hints)
455
+ hint.apply_athena_hints(dlt_source, partition_by, column_hints)
455
456
 
456
457
  if isinstance(destination, ClickhouseDestination):
457
458
  from dlt.destinations.adapters import clickhouse_adapter
@@ -54,7 +54,7 @@ def table_adapter_exclude_columns(cols: list[str]):
54
54
 
55
55
 
56
56
  def create_masking_filter(mask_configs: list[str]):
57
- from omniload.src.masking import create_masking_mapper
57
+ from omniload.codec.masking import create_masking_mapper
58
58
 
59
59
  if not mask_configs:
60
60
  return lambda x: x
@@ -3,7 +3,7 @@ from typing import Dict
3
3
  from dlt.common.schema.typing import TColumnSchema
4
4
  from dlt.sources import DltResource, DltSource
5
5
 
6
- import omniload.src.resource as resource
6
+ import omniload.core.resource as resource
7
7
 
8
8
 
9
9
  def apply_athena_hints(
@@ -0,0 +1,51 @@
1
+ from urllib.parse import urlparse
2
+
3
+ from omniload.core.model import DestinationProtocol, LazyRegistry, SourceProtocol
4
+ from omniload.core.registry import (
5
+ SQL_SOURCE_SCHEMES,
6
+ destinations,
7
+ sources,
8
+ )
9
+ from omniload.core.router import SqlSourceRouter
10
+
11
+
12
+ def parse_scheme_from_uri(uri: str) -> str:
13
+ parsed = urlparse(uri)
14
+ if parsed.scheme != "":
15
+ return parsed.scheme
16
+
17
+ uri_parts = uri.split("://")
18
+ if len(uri_parts) > 1:
19
+ return uri_parts[0]
20
+
21
+ raise ValueError(f"Could not parse scheme from uri: {uri}")
22
+
23
+
24
+ class SourceDestinationFactory:
25
+ source_scheme: str
26
+ destination_scheme: str
27
+ sources: LazyRegistry = sources
28
+ destinations: LazyRegistry = destinations
29
+
30
+ def __init__(self, source_uri: str, destination_uri: str):
31
+ self.source_uri = source_uri
32
+ self.source_scheme = parse_scheme_from_uri(source_uri)
33
+
34
+ self.destination_uri = destination_uri
35
+ self.destination_scheme = parse_scheme_from_uri(destination_uri)
36
+
37
+ def get_source(self) -> SourceProtocol:
38
+ if self.source_scheme in SQL_SOURCE_SCHEMES:
39
+ return SqlSourceRouter()
40
+ elif self.source_scheme in self.sources:
41
+ return self.sources[self.source_scheme]()
42
+ else:
43
+ raise ValueError(f"Unsupported source scheme: {self.source_scheme}")
44
+
45
+ def get_destination(self) -> DestinationProtocol:
46
+ if self.destination_scheme in self.destinations:
47
+ return self.destinations[self.destination_scheme]()
48
+ else:
49
+ raise ValueError(
50
+ f"Unsupported destination scheme: {self.destination_scheme}"
51
+ )
@@ -0,0 +1,68 @@
1
+ import importlib
2
+ import typing
3
+ from dataclasses import dataclass
4
+ from typing import Any, Iterator, Mapping, Protocol
5
+
6
+ if typing.TYPE_CHECKING:
7
+ from dlt.common.destination import Destination
8
+
9
+
10
+ class SourceProtocol(Protocol):
11
+ def dlt_source(self, uri: str, table: str, **kwargs):
12
+ pass
13
+
14
+ def handles_incrementality(self) -> bool:
15
+ pass
16
+
17
+
18
+ class DestinationProtocol(Protocol):
19
+ def dlt_dest(self, uri: str, **kwargs) -> "Destination":
20
+ pass
21
+
22
+ def dlt_run_params(self, uri: str, table: str, **kwargs):
23
+ pass
24
+
25
+ def post_load(self) -> None:
26
+ pass
27
+
28
+
29
+ @dataclass
30
+ class TableDefinition:
31
+ dataset: str
32
+ table: str
33
+
34
+
35
+ def table_string_to_dataclass(table: str) -> TableDefinition:
36
+ table_fields = table.split(".", 1)
37
+ if len(table_fields) != 2:
38
+ raise ValueError("Table name must be in the format <schema>.<table>")
39
+
40
+ return TableDefinition(dataset=table_fields[0], table=table_fields[1])
41
+
42
+
43
+ class LazyRegistry(Mapping):
44
+ """Mapping that imports a connector class only when its scheme is first accessed."""
45
+
46
+ def __init__(self, paths: dict[str, str]) -> None:
47
+ self._paths = paths
48
+ self._cache: dict[str, Any] = {}
49
+
50
+ def _load(self, dotted_path: str) -> Any:
51
+ module_path, cls_name = dotted_path.rsplit(":", 1)
52
+ return getattr(importlib.import_module(module_path), cls_name)
53
+
54
+ def __getitem__(self, key: str) -> Any:
55
+ if key not in self._cache:
56
+ if key not in self._paths:
57
+ raise KeyError(key)
58
+ self._cache[key] = self._load(self._paths[key])
59
+ return self._cache[key]
60
+
61
+ def __iter__(self) -> Iterator[str]:
62
+ return iter(self._paths)
63
+
64
+ def __len__(self) -> int:
65
+ return len(self._paths)
66
+
67
+ def __contains__(self, key: object) -> bool: # O(1), no import triggered
68
+ return key in self._paths
@@ -0,0 +1,147 @@
1
+ from omniload.core.model import LazyRegistry
2
+
3
+ SQL_SOURCE_SCHEMES = [
4
+ "bigquery",
5
+ "crate",
6
+ "cratedb",
7
+ "duckdb",
8
+ "mssql",
9
+ "mssql+pyodbc",
10
+ "mysql",
11
+ "mysql+pymysql",
12
+ "mysql+mysqlconnector",
13
+ "md",
14
+ "motherduck",
15
+ "postgres",
16
+ "postgresql",
17
+ "postgresql+psycopg2",
18
+ "redshift",
19
+ "redshift+psycopg2",
20
+ "snowflake",
21
+ "sqlite",
22
+ "oracle",
23
+ "oracle+cx_oracle",
24
+ "oracle+oracledb",
25
+ "hana",
26
+ "clickhouse",
27
+ "databricks",
28
+ "db2",
29
+ "spanner",
30
+ "trino",
31
+ ]
32
+
33
+ sources: LazyRegistry = LazyRegistry(
34
+ {
35
+ "adjust": "omniload.source.adjust.api:AdjustSource",
36
+ "airtable": "omniload.source.airtable.api:AirtableSource",
37
+ "allium": "omniload.source.allium.api:AlliumSource",
38
+ "anthropic": "omniload.source.anthropic.api:AnthropicSource",
39
+ "applovin": "omniload.source.applovin.api:AppLovinSource",
40
+ "applovinmax": "omniload.source.applovin_max.api:ApplovinMaxSource",
41
+ "appsflyer": "omniload.source.appsflyer.api:AppsflyerSource",
42
+ "appstore": "omniload.source.appstore.api:AppleAppStoreSource",
43
+ "asana": "omniload.source.asana.api:AsanaSource",
44
+ "attio": "omniload.source.attio.api:AttioSource",
45
+ "bruin": "omniload.source.bruin.api:BruinSource",
46
+ "chess": "omniload.source.chess.api:ChessSource",
47
+ "clickup": "omniload.source.clickup.api:ClickupSource",
48
+ "couchbase": "omniload.source.couchbase.api:CouchbaseSource",
49
+ "csv": "omniload.source.csv.api:LocalCsvSource",
50
+ "cursor": "omniload.source.cursor.api:CursorSource",
51
+ "customerio": "omniload.source.customer_io.api:CustomerIoSource",
52
+ "docebo": "omniload.source.docebo.api:DoceboSource",
53
+ "dune": "omniload.source.dune.api:DuneSource",
54
+ "dynamodb": "omniload.source.dynamodb.api:DynamoDBSource",
55
+ "elasticsearch": "omniload.source.elasticsearch.api:ElasticsearchSource",
56
+ "facebookads": "omniload.source.facebook_ads.api:FacebookAdsSource",
57
+ "fireflies": "omniload.source.fireflies.api:FirefliesSource",
58
+ "fluxx": "omniload.source.fluxx.api:FluxxSource",
59
+ "frankfurter": "omniload.source.frankfurter.api:FrankfurterSource",
60
+ "freshdesk": "omniload.source.freshdesk.api:FreshdeskSource",
61
+ "fundraiseup": "omniload.source.fundraiseup.api:FundraiseupSource",
62
+ "github": "omniload.source.github.api:GitHubSource",
63
+ "googleads": "omniload.source.google_ads.api:GoogleAdsSource",
64
+ "googleanalytics": "omniload.source.google_analytics.api:GoogleAnalyticsSource",
65
+ "gorgias": "omniload.source.gorgias.api:GorgiasSource",
66
+ "gs": "omniload.source.blobstorage.api:GCSSource",
67
+ "gsheets": "omniload.source.google_sheets.api:GoogleSheetsSource",
68
+ "hostaway": "omniload.source.hostaway.api:HostawaySource",
69
+ "http": "omniload.source.http.api:HttpSource",
70
+ "https": "omniload.source.http.api:HttpSource",
71
+ "hubspot": "omniload.source.hubspot.api:HubspotSource",
72
+ "indeed": "omniload.source.indeed.api:IndeedSource",
73
+ "influxdb": "omniload.source.influxdb.api:InfluxDBSource",
74
+ "intercom": "omniload.source.intercom.api:IntercomSource",
75
+ "isoc-pulse": "omniload.source.isoc_pulse.api:IsocPulseSource",
76
+ "jira": "omniload.source.jira.api:JiraSource",
77
+ "kafka": "omniload.source.kafka.api:KafkaSource",
78
+ "kinesis": "omniload.source.kinesis.api:KinesisSource",
79
+ "klaviyo": "omniload.source.klaviyo.api:KlaviyoSource",
80
+ "linear": "omniload.source.linear.api:LinearSource",
81
+ "linkedinads": "omniload.source.linkedin_ads.api:LinkedInAdsSource",
82
+ "mailchimp": "omniload.source.mailchimp.api:MailchimpSource",
83
+ "mixpanel": "omniload.source.mixpanel.api:MixpanelSource",
84
+ "mmap": "omniload.source.arrow.api:ArrowMemoryMappedSource",
85
+ "monday": "omniload.source.monday.api:MondaySource",
86
+ "mongodb": "omniload.source.mongodb.api:MongoDbSource",
87
+ "mongodb+srv": "omniload.source.mongodb.api:MongoDbSource",
88
+ "notion": "omniload.source.notion.api:NotionSource",
89
+ "personio": "omniload.source.personio.api:PersonioSource",
90
+ "phantombuster": "omniload.source.phantombuster.api:PhantombusterSource",
91
+ "pinterest": "omniload.source.pinterest.api:PinterestSource",
92
+ "pipedrive": "omniload.source.pipedrive.api:PipedriveSource",
93
+ "plusvibeai": "omniload.source.plusvibeai.api:PlusVibeAISource",
94
+ "primer": "omniload.source.primer.api:PrimerSource",
95
+ "quickbooks": "omniload.source.quickbooks.api:QuickBooksSource",
96
+ "redditads": "omniload.source.reddit_ads.api:RedditAdsSource",
97
+ "revenuecat": "omniload.source.revenuecat.api:RevenueCatSource",
98
+ "s3": "omniload.source.blobstorage.api:S3Source",
99
+ "salesforce": "omniload.source.salesforce.api:SalesforceSource",
100
+ "sftp": "omniload.source.sftp.api:SFTPSource",
101
+ "shopify": "omniload.source.shopify.api:ShopifySource",
102
+ "slack": "omniload.source.slack.api:SlackSource",
103
+ "smartsheet": "omniload.source.smartsheets.api:SmartsheetSource",
104
+ "snapchatads": "omniload.source.snapchat_ads.api:SnapchatAdsSource",
105
+ "socrata": "omniload.source.socrata.api:SocrataSource",
106
+ "solidgate": "omniload.source.solidgate.api:SolidgateSource",
107
+ "stripe": "omniload.source.stripe.api:StripeAnalyticsSource",
108
+ "tiktok": "omniload.source.tiktok_ads.api:TikTokSource",
109
+ "trustpilot": "omniload.source.trustpilot.api:TrustpilotSource",
110
+ "wise": "omniload.source.wise.api:WiseSource",
111
+ "zendesk": "omniload.source.zendesk.api:ZendeskSource",
112
+ "zoom": "omniload.source.zoom.api:ZoomSource",
113
+ }
114
+ )
115
+
116
+ destinations: LazyRegistry = LazyRegistry(
117
+ {
118
+ "athena": "omniload.target.athena:AthenaDestination",
119
+ "bigquery": "omniload.target.bigquery:BigQueryDestination",
120
+ "clickhouse": "omniload.target.clickhouse:ClickhouseDestination",
121
+ "clickhouse+native": "omniload.target.clickhouse:ClickhouseDestination",
122
+ "cratedb": "omniload.target.cratedb:CrateDBDestination",
123
+ "csv": "omniload.target.csv:CsvDestination",
124
+ "databricks": "omniload.target.databricks:DatabricksDestination",
125
+ "duckdb": "omniload.target.duckdb:DuckDBDestination",
126
+ "elasticsearch": "omniload.target.elasticsearch.api:ElasticsearchDestination",
127
+ "gs": "omniload.target.blobstorage:GCSDestination",
128
+ "md": "omniload.target.motherduck:MotherduckDestination",
129
+ "mongodb": "omniload.target.mongodb:MongoDBDestination",
130
+ "mongodb+srv": "omniload.target.mongodb:MongoDBDestination",
131
+ "motherduck": "omniload.target.motherduck:MotherduckDestination",
132
+ "mssql": "omniload.target.mssql:MsSQLDestination",
133
+ "mysql": "omniload.target.mysql:MySqlDestination",
134
+ "mysql+pymysql": "omniload.target.mysql:MySqlDestination",
135
+ "postgres": "omniload.target.postgresql:PostgresDestination",
136
+ "postgresql": "omniload.target.postgresql:PostgresDestination",
137
+ "postgresql+psycopg2": "omniload.target.postgresql:PostgresDestination",
138
+ "redshift": "omniload.target.redshift:RedshiftDestination",
139
+ "redshift+psycopg2": "omniload.target.redshift:RedshiftDestination",
140
+ "redshift+redshift_connector": "omniload.target.redshift:RedshiftDestination",
141
+ "s3": "omniload.target.blobstorage:S3Destination",
142
+ "snowflake": "omniload.target.snowflake:SnowflakeDestination",
143
+ "sqlite": "omniload.target.sqlite:SqliteDestination",
144
+ "synapse": "omniload.target.synapse:SynapseDestination",
145
+ "trino": "omniload.target.trino:TrinoDestination",
146
+ }
147
+ )