omniload 0.0.0.dev0__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 (459) hide show
  1. {omniload-0.0.0.dev0 → omniload-0.2.0}/LICENSE.Apache-2.0 +0 -25
  2. omniload-0.2.0/MANIFEST.in +9 -0
  3. omniload-0.2.0/PKG-INFO +250 -0
  4. omniload-0.2.0/README.md +95 -0
  5. omniload-0.2.0/docs/conf.py +164 -0
  6. omniload-0.2.0/omniload/__init__.py +13 -0
  7. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/conftest.py +3 -2
  8. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/main.py +51 -53
  9. omniload-0.2.0/omniload/main_test.py +6691 -0
  10. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/adjust/__init__.py +14 -11
  11. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/adjust/adjust_helpers.py +1 -1
  12. omniload-0.2.0/omniload/src/adjust/adjust_helpers_test.py +15 -0
  13. omniload-0.2.0/omniload/src/anthropic/helpers_test.py +524 -0
  14. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/applovin_max/__init__.py +6 -1
  15. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/appsflyer/client.py +12 -4
  16. omniload-0.2.0/omniload/src/appsflyer/client_test.py +58 -0
  17. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/appstore/__init__.py +10 -6
  18. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/appstore/models.py +8 -8
  19. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/arrow/__init__.py +2 -2
  20. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/asana_source/__init__.py +8 -8
  21. omniload-0.2.0/omniload/src/blob_test.py +36 -0
  22. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/chess/__init__.py +8 -4
  23. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/chess/helpers.py +4 -2
  24. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/clickup/__init__.py +17 -9
  25. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/collector/spinner.py +7 -6
  26. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/couchbase_source/__init__.py +5 -5
  27. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/couchbase_source/helpers.py +2 -2
  28. omniload-0.2.0/omniload/src/couchbase_source/helpers_test.py +170 -0
  29. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/customer_io/__init__.py +4 -4
  30. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/destinations.py +10 -4
  31. omniload-0.2.0/omniload/src/destinations_test.py +243 -0
  32. omniload-0.2.0/omniload/src/docebo/helpers_test.py +190 -0
  33. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/dynamodb/__init__.py +1 -1
  34. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/elasticsearch/__init__.py +2 -2
  35. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/errors.py +5 -0
  36. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/facebook_ads/__init__.py +30 -20
  37. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/facebook_ads/helpers.py +15 -12
  38. omniload-0.2.0/omniload/src/facebook_ads/helpers_test.py +208 -0
  39. omniload-0.2.0/omniload/src/factory_test.py +13 -0
  40. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/filesystem/__init__.py +4 -3
  41. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/filesystem/helpers.py +18 -9
  42. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/filesystem/readers.py +5 -5
  43. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/filters.py +2 -2
  44. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/fireflies/__init__.py +3 -3
  45. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/fireflies/helpers.py +4 -6
  46. omniload-0.2.0/omniload/src/fireflies/helpers_test.py +515 -0
  47. omniload-0.2.0/omniload/src/fluxx/helpers_test.py +287 -0
  48. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/frankfurter/__init__.py +9 -4
  49. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/frankfurter/helpers.py +1 -1
  50. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/freshdesk/__init__.py +9 -4
  51. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/freshdesk/freshdesk_client.py +3 -2
  52. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/fundraiseup/__init__.py +3 -3
  53. omniload-0.2.0/omniload/src/fundraiseup/client_test.py +463 -0
  54. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/github/__init__.py +16 -9
  55. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/github/helpers.py +9 -5
  56. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_ads/__init__.py +5 -6
  57. omniload-0.2.0/omniload/src/google_ads/reports_test.py +212 -0
  58. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_analytics/helpers.py +8 -2
  59. omniload-0.2.0/omniload/src/google_analytics/helpers_test.py +78 -0
  60. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/api_calls.py +6 -6
  61. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/data_processing.py +12 -9
  62. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/gorgias/__init__.py +5 -5
  63. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/gorgias/helpers.py +29 -13
  64. omniload-0.2.0/omniload/src/gorgias/helpers_test.py +45 -0
  65. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/hostaway/__init__.py +5 -0
  66. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/http/readers.py +5 -5
  67. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/hubspot/__init__.py +27 -20
  68. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/hubspot/helpers.py +2 -2
  69. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/influxdb/client.py +1 -1
  70. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/intercom/__init__.py +4 -4
  71. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/intercom/helpers.py +2 -1
  72. omniload-0.2.0/omniload/src/intercom/helpers_test.py +249 -0
  73. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/jira_source/helpers.py +3 -3
  74. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/kafka/__init__.py +21 -17
  75. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/kafka/helpers.py +76 -43
  76. omniload-0.2.0/omniload/src/kafka/model.py +169 -0
  77. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/kinesis/__init__.py +8 -8
  78. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/klaviyo/__init__.py +15 -11
  79. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/klaviyo/client.py +10 -9
  80. omniload-0.2.0/omniload/src/klaviyo/helpers_test.py +36 -0
  81. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/linkedin_ads/__init__.py +5 -0
  82. omniload-0.2.0/omniload/src/linkedin_ads/helpers_test.py +141 -0
  83. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/loader.py +1 -1
  84. omniload-0.2.0/omniload/src/loader_test.py +73 -0
  85. omniload-0.2.0/omniload/src/mailchimp/helpers_test.py +303 -0
  86. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/masking.py +2 -2
  87. omniload-0.2.0/omniload/src/masking_test.py +386 -0
  88. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/mixpanel/__init__.py +6 -0
  89. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/mongodb/__init__.py +2 -2
  90. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/mongodb/helpers.py +36 -31
  91. omniload-0.2.0/omniload/src/mongodb/helpers_test.py +455 -0
  92. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/partition.py +1 -1
  93. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/personio/__init__.py +11 -11
  94. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/phantombuster/__init__.py +11 -1
  95. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/pinterest/__init__.py +8 -2
  96. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/pipedrive/__init__.py +7 -4
  97. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/pages.py +5 -1
  98. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/primer/__init__.py +3 -3
  99. omniload-0.2.0/omniload/src/primer/helpers_test.py +81 -0
  100. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/quickbooks/__init__.py +9 -8
  101. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/reddit_ads/__init__.py +6 -0
  102. omniload-0.2.0/omniload/src/reddit_ads/helpers_test.py +181 -0
  103. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/resource.py +17 -4
  104. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/revenuecat/__init__.py +7 -3
  105. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/revenuecat/helpers.py +2 -2
  106. omniload-0.2.0/omniload/src/revenuecat/helpers_test.py +158 -0
  107. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/salesforce/__init__.py +1 -1
  108. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/shopify/__init__.py +23 -4
  109. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/shopify/helpers.py +2 -2
  110. omniload-0.2.0/omniload/src/shopify/helpers_test.py +49 -0
  111. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/slack/helpers.py +14 -10
  112. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/smartsheets/__init__.py +11 -3
  113. {omniload-0.0.0.dev0/omniload/tests/unit → omniload-0.2.0/omniload/src/smartsheets}/test_smartsheets.py +3 -2
  114. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/snapchat_ads/__init__.py +7 -7
  115. omniload-0.2.0/omniload/src/snapchat_ads/helpers_test.py +248 -0
  116. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/socrata_source/__init__.py +5 -7
  117. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/solidgate/__init__.py +4 -4
  118. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/solidgate/helpers.py +17 -3
  119. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/sources.py +156 -130
  120. omniload-0.2.0/omniload/src/sources_test.py +314 -0
  121. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/sql_database/callbacks.py +2 -1
  122. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/stripe_analytics/__init__.py +4 -3
  123. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/stripe_analytics/helpers.py +4 -4
  124. omniload-0.2.0/omniload/src/stripe_analytics/helpers_test.py +130 -0
  125. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/tiktok_ads/__init__.py +13 -9
  126. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/tiktok_ads/tiktok_helpers.py +5 -5
  127. omniload-0.2.0/omniload/src/tiktok_ads/tiktok_helpers_test.py +56 -0
  128. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/trustpilot/__init__.py +5 -0
  129. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/wise/__init__.py +11 -2
  130. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/wise/client.py +8 -2
  131. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/zendesk/__init__.py +38 -16
  132. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/zendesk/helpers/api_helpers.py +2 -2
  133. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/zoom/__init__.py +16 -10
  134. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/zoom/helpers.py +15 -3
  135. omniload-0.2.0/omniload.egg-info/PKG-INFO +250 -0
  136. omniload-0.2.0/omniload.egg-info/SOURCES.txt +246 -0
  137. omniload-0.2.0/omniload.egg-info/dependency_links.txt +1 -0
  138. omniload-0.2.0/omniload.egg-info/entry_points.txt +2 -0
  139. omniload-0.2.0/omniload.egg-info/requires.txt +98 -0
  140. omniload-0.2.0/omniload.egg-info/top_level.txt +6 -0
  141. omniload-0.2.0/pyproject.toml +298 -0
  142. omniload-0.2.0/setup.cfg +4 -0
  143. omniload-0.0.0.dev0/.dlt/config.toml +0 -3
  144. omniload-0.0.0.dev0/.dockerignore +0 -137
  145. omniload-0.0.0.dev0/.githooks/pre-commit-hook.sh +0 -23
  146. omniload-0.0.0.dev0/.github/workflows/deploy-docs.yml +0 -62
  147. omniload-0.0.0.dev0/.github/workflows/release.yml +0 -149
  148. omniload-0.0.0.dev0/.github/workflows/secrets-scan.yml +0 -12
  149. omniload-0.0.0.dev0/.github/workflows/tests.yml +0 -94
  150. omniload-0.0.0.dev0/.gitignore +0 -29
  151. omniload-0.0.0.dev0/.gitleaksignore +0 -7
  152. omniload-0.0.0.dev0/.npmrc +0 -1
  153. omniload-0.0.0.dev0/.vale.ini +0 -16
  154. omniload-0.0.0.dev0/Dockerfile +0 -61
  155. omniload-0.0.0.dev0/Makefile +0 -68
  156. omniload-0.0.0.dev0/PKG-INFO +0 -439
  157. omniload-0.0.0.dev0/README.md +0 -347
  158. omniload-0.0.0.dev0/docs/.vitepress/config.mjs +0 -223
  159. omniload-0.0.0.dev0/docs/.vitepress/theme/CopyPageButton.vue +0 -176
  160. omniload-0.0.0.dev0/docs/.vitepress/theme/Layout.vue +0 -27
  161. omniload-0.0.0.dev0/docs/.vitepress/theme/custom.css +0 -34
  162. omniload-0.0.0.dev0/docs/.vitepress/theme/index.js +0 -9
  163. omniload-0.0.0.dev0/docs/commands/example-uris.md +0 -5
  164. omniload-0.0.0.dev0/docs/commands/ingest.md +0 -132
  165. omniload-0.0.0.dev0/docs/getting-started/core-concepts.md +0 -41
  166. omniload-0.0.0.dev0/docs/getting-started/data-masking.md +0 -377
  167. omniload-0.0.0.dev0/docs/getting-started/incremental-loading.md +0 -228
  168. omniload-0.0.0.dev0/docs/getting-started/quickstart.md +0 -61
  169. omniload-0.0.0.dev0/docs/index.md +0 -39
  170. omniload-0.0.0.dev0/docs/media/applovin_max.png +0 -0
  171. omniload-0.0.0.dev0/docs/media/athena.png +0 -0
  172. omniload-0.0.0.dev0/docs/media/clickhouse_img.png +0 -0
  173. omniload-0.0.0.dev0/docs/media/clickup_ingestion.png +0 -0
  174. omniload-0.0.0.dev0/docs/media/cratedb-destination.png +0 -0
  175. omniload-0.0.0.dev0/docs/media/cratedb-source.png +0 -0
  176. omniload-0.0.0.dev0/docs/media/freshdesk_ingestion.png +0 -0
  177. omniload-0.0.0.dev0/docs/media/gcp_spanner_ingestion.png +0 -0
  178. omniload-0.0.0.dev0/docs/media/github.png +0 -0
  179. omniload-0.0.0.dev0/docs/media/google_analytics_realtime_report.png +0 -0
  180. omniload-0.0.0.dev0/docs/media/googleanalytics.png +0 -0
  181. omniload-0.0.0.dev0/docs/media/ingestion_elasticsearch_img.png +0 -0
  182. omniload-0.0.0.dev0/docs/media/kinesis.bigquery.png +0 -0
  183. omniload-0.0.0.dev0/docs/media/linear.png +0 -0
  184. omniload-0.0.0.dev0/docs/media/linkedin_ads.png +0 -0
  185. omniload-0.0.0.dev0/docs/media/mixpanel_ingestion.png +0 -0
  186. omniload-0.0.0.dev0/docs/media/personio.png +0 -0
  187. omniload-0.0.0.dev0/docs/media/personio_duckdb.png +0 -0
  188. omniload-0.0.0.dev0/docs/media/phantombuster.png +0 -0
  189. omniload-0.0.0.dev0/docs/media/pipedrive.png +0 -0
  190. omniload-0.0.0.dev0/docs/media/quickbook_ingestion.png +0 -0
  191. omniload-0.0.0.dev0/docs/media/sftp.png +0 -0
  192. omniload-0.0.0.dev0/docs/media/stripe_postgres.png +0 -0
  193. omniload-0.0.0.dev0/docs/media/tiktok.png +0 -0
  194. omniload-0.0.0.dev0/docs/media/wise_ingestion.png +0 -0
  195. omniload-0.0.0.dev0/docs/media/zoom_ingestion.png +0 -0
  196. omniload-0.0.0.dev0/docs/public/demo.gif +0 -0
  197. omniload-0.0.0.dev0/docs/supported-sources/adjust.md +0 -118
  198. omniload-0.0.0.dev0/docs/supported-sources/airtable.md +0 -57
  199. omniload-0.0.0.dev0/docs/supported-sources/allium.md +0 -164
  200. omniload-0.0.0.dev0/docs/supported-sources/anthropic.md +0 -356
  201. omniload-0.0.0.dev0/docs/supported-sources/appleads.md +0 -196
  202. omniload-0.0.0.dev0/docs/supported-sources/applovin.md +0 -144
  203. omniload-0.0.0.dev0/docs/supported-sources/applovin_max.md +0 -52
  204. omniload-0.0.0.dev0/docs/supported-sources/appsflyer.md +0 -93
  205. omniload-0.0.0.dev0/docs/supported-sources/appstore.md +0 -263
  206. omniload-0.0.0.dev0/docs/supported-sources/asana.md +0 -59
  207. omniload-0.0.0.dev0/docs/supported-sources/athena.md +0 -42
  208. omniload-0.0.0.dev0/docs/supported-sources/attio.md +0 -47
  209. omniload-0.0.0.dev0/docs/supported-sources/bigquery.md +0 -52
  210. omniload-0.0.0.dev0/docs/supported-sources/bruin.md +0 -48
  211. omniload-0.0.0.dev0/docs/supported-sources/chess.md +0 -38
  212. omniload-0.0.0.dev0/docs/supported-sources/clickhouse.md +0 -58
  213. omniload-0.0.0.dev0/docs/supported-sources/clickup.md +0 -45
  214. omniload-0.0.0.dev0/docs/supported-sources/couchbase.md +0 -136
  215. omniload-0.0.0.dev0/docs/supported-sources/cratedb.md +0 -147
  216. omniload-0.0.0.dev0/docs/supported-sources/csv.md +0 -9
  217. omniload-0.0.0.dev0/docs/supported-sources/cursor.md +0 -148
  218. omniload-0.0.0.dev0/docs/supported-sources/custom_queries.md +0 -50
  219. omniload-0.0.0.dev0/docs/supported-sources/customerio.md +0 -134
  220. omniload-0.0.0.dev0/docs/supported-sources/databricks.md +0 -44
  221. omniload-0.0.0.dev0/docs/supported-sources/db2.md +0 -28
  222. omniload-0.0.0.dev0/docs/supported-sources/docebo.md +0 -75
  223. omniload-0.0.0.dev0/docs/supported-sources/duckdb.md +0 -16
  224. omniload-0.0.0.dev0/docs/supported-sources/dune.md +0 -125
  225. omniload-0.0.0.dev0/docs/supported-sources/dynamodb.md +0 -114
  226. omniload-0.0.0.dev0/docs/supported-sources/elasticsearch.md +0 -80
  227. omniload-0.0.0.dev0/docs/supported-sources/facebook-ads.md +0 -249
  228. omniload-0.0.0.dev0/docs/supported-sources/fireflies.md +0 -108
  229. omniload-0.0.0.dev0/docs/supported-sources/fluxx.md +0 -307
  230. omniload-0.0.0.dev0/docs/supported-sources/frankfurter.md +0 -52
  231. omniload-0.0.0.dev0/docs/supported-sources/freshdesk.md +0 -49
  232. omniload-0.0.0.dev0/docs/supported-sources/fundraiseup.md +0 -83
  233. omniload-0.0.0.dev0/docs/supported-sources/g2.md +0 -55
  234. omniload-0.0.0.dev0/docs/supported-sources/gcs.md +0 -196
  235. omniload-0.0.0.dev0/docs/supported-sources/github.md +0 -48
  236. omniload-0.0.0.dev0/docs/supported-sources/google-ads.md +0 -266
  237. omniload-0.0.0.dev0/docs/supported-sources/google_analytics.md +0 -89
  238. omniload-0.0.0.dev0/docs/supported-sources/gorgias.md +0 -42
  239. omniload-0.0.0.dev0/docs/supported-sources/gsheets.md +0 -46
  240. omniload-0.0.0.dev0/docs/supported-sources/hostaway.md +0 -104
  241. omniload-0.0.0.dev0/docs/supported-sources/http.md +0 -123
  242. omniload-0.0.0.dev0/docs/supported-sources/hubspot.md +0 -208
  243. omniload-0.0.0.dev0/docs/supported-sources/indeed.md +0 -115
  244. omniload-0.0.0.dev0/docs/supported-sources/influxdb.md +0 -39
  245. omniload-0.0.0.dev0/docs/supported-sources/intercom.md +0 -57
  246. omniload-0.0.0.dev0/docs/supported-sources/isoc-pulse.md +0 -150
  247. omniload-0.0.0.dev0/docs/supported-sources/jira.md +0 -77
  248. omniload-0.0.0.dev0/docs/supported-sources/jobtread.md +0 -69
  249. omniload-0.0.0.dev0/docs/supported-sources/kafka.md +0 -38
  250. omniload-0.0.0.dev0/docs/supported-sources/kinesis.md +0 -43
  251. omniload-0.0.0.dev0/docs/supported-sources/klaviyo.md +0 -57
  252. omniload-0.0.0.dev0/docs/supported-sources/linear.md +0 -57
  253. omniload-0.0.0.dev0/docs/supported-sources/linkedin_ads.md +0 -170
  254. omniload-0.0.0.dev0/docs/supported-sources/mailchimp.md +0 -99
  255. omniload-0.0.0.dev0/docs/supported-sources/mixpanel.md +0 -50
  256. omniload-0.0.0.dev0/docs/supported-sources/monday.md +0 -59
  257. omniload-0.0.0.dev0/docs/supported-sources/mongodb.md +0 -226
  258. omniload-0.0.0.dev0/docs/supported-sources/motherduck.md +0 -46
  259. omniload-0.0.0.dev0/docs/supported-sources/mssql.md +0 -48
  260. omniload-0.0.0.dev0/docs/supported-sources/mysql.md +0 -20
  261. omniload-0.0.0.dev0/docs/supported-sources/notion.md +0 -32
  262. omniload-0.0.0.dev0/docs/supported-sources/oracle.md +0 -20
  263. omniload-0.0.0.dev0/docs/supported-sources/personio.md +0 -58
  264. omniload-0.0.0.dev0/docs/supported-sources/phantombuster.md +0 -42
  265. omniload-0.0.0.dev0/docs/supported-sources/pinterest.md +0 -30
  266. omniload-0.0.0.dev0/docs/supported-sources/pipedrive.md +0 -45
  267. omniload-0.0.0.dev0/docs/supported-sources/plusvibeai.md +0 -93
  268. omniload-0.0.0.dev0/docs/supported-sources/postgres.md +0 -21
  269. omniload-0.0.0.dev0/docs/supported-sources/posthog.md +0 -70
  270. omniload-0.0.0.dev0/docs/supported-sources/primer.md +0 -59
  271. omniload-0.0.0.dev0/docs/supported-sources/quickbooks.md +0 -51
  272. omniload-0.0.0.dev0/docs/supported-sources/rabbitmq.md +0 -49
  273. omniload-0.0.0.dev0/docs/supported-sources/reddit_ads.md +0 -150
  274. omniload-0.0.0.dev0/docs/supported-sources/redshift.md +0 -21
  275. omniload-0.0.0.dev0/docs/supported-sources/revenuecat.md +0 -62
  276. omniload-0.0.0.dev0/docs/supported-sources/s3.md +0 -213
  277. omniload-0.0.0.dev0/docs/supported-sources/salesforce.md +0 -90
  278. omniload-0.0.0.dev0/docs/supported-sources/sap-hana.md +0 -20
  279. omniload-0.0.0.dev0/docs/supported-sources/sftp.md +0 -43
  280. omniload-0.0.0.dev0/docs/supported-sources/shopify.md +0 -58
  281. omniload-0.0.0.dev0/docs/supported-sources/slack.md +0 -46
  282. omniload-0.0.0.dev0/docs/supported-sources/smartsheets.md +0 -47
  283. omniload-0.0.0.dev0/docs/supported-sources/snapchat-ads.md +0 -200
  284. omniload-0.0.0.dev0/docs/supported-sources/snowflake.md +0 -79
  285. omniload-0.0.0.dev0/docs/supported-sources/socrata.md +0 -128
  286. omniload-0.0.0.dev0/docs/supported-sources/solidgate.md +0 -50
  287. omniload-0.0.0.dev0/docs/supported-sources/spanner.md +0 -41
  288. omniload-0.0.0.dev0/docs/supported-sources/sqlite.md +0 -16
  289. omniload-0.0.0.dev0/docs/supported-sources/stripe.md +0 -146
  290. omniload-0.0.0.dev0/docs/supported-sources/surveymonkey.md +0 -62
  291. omniload-0.0.0.dev0/docs/supported-sources/tiktok-ads.md +0 -63
  292. omniload-0.0.0.dev0/docs/supported-sources/trino.md +0 -96
  293. omniload-0.0.0.dev0/docs/supported-sources/trustpilot.md +0 -36
  294. omniload-0.0.0.dev0/docs/supported-sources/wise.md +0 -49
  295. omniload-0.0.0.dev0/docs/supported-sources/zendesk.md +0 -87
  296. omniload-0.0.0.dev0/docs/supported-sources/zoom.md +0 -51
  297. omniload-0.0.0.dev0/docs/tutorials/load-kinesis-bigquery.md +0 -130
  298. omniload-0.0.0.dev0/docs/tutorials/load-personio-duckdb.md +0 -94
  299. omniload-0.0.0.dev0/docs/tutorials/load-stripe-postgres.md +0 -101
  300. omniload-0.0.0.dev0/omniload/src/.gitignore +0 -10
  301. omniload-0.0.0.dev0/omniload/src/google_sheets/README.md +0 -95
  302. omniload-0.0.0.dev0/omniload/src/testdata/fakebqcredentials.json +0 -14
  303. omniload-0.0.0.dev0/omniload/src/version.py +0 -6
  304. omniload-0.0.0.dev0/omniload/testdata/.gitignore +0 -2
  305. omniload-0.0.0.dev0/omniload/testdata/create_replace.csv +0 -21
  306. omniload-0.0.0.dev0/omniload/testdata/delete_insert_expected.csv +0 -6
  307. omniload-0.0.0.dev0/omniload/testdata/delete_insert_part1.csv +0 -5
  308. omniload-0.0.0.dev0/omniload/testdata/delete_insert_part2.csv +0 -6
  309. omniload-0.0.0.dev0/omniload/testdata/merge_expected.csv +0 -5
  310. omniload-0.0.0.dev0/omniload/testdata/merge_part1.csv +0 -4
  311. omniload-0.0.0.dev0/omniload/testdata/merge_part2.csv +0 -5
  312. omniload-0.0.0.dev0/package-lock.json +0 -2499
  313. omniload-0.0.0.dev0/package.json +0 -11
  314. omniload-0.0.0.dev0/pyproject.toml +0 -200
  315. omniload-0.0.0.dev0/requirements-dev.txt +0 -13
  316. omniload-0.0.0.dev0/requirements.txt +0 -66
  317. omniload-0.0.0.dev0/requirements_arm64.txt +0 -674
  318. omniload-0.0.0.dev0/resources/demo.gif +0 -0
  319. omniload-0.0.0.dev0/resources/demo.tape +0 -18
  320. omniload-0.0.0.dev0/styles/Google/AMPM.yml +0 -9
  321. omniload-0.0.0.dev0/styles/Google/Acronyms.yml +0 -64
  322. omniload-0.0.0.dev0/styles/Google/Colons.yml +0 -8
  323. omniload-0.0.0.dev0/styles/Google/Contractions.yml +0 -30
  324. omniload-0.0.0.dev0/styles/Google/DateFormat.yml +0 -9
  325. omniload-0.0.0.dev0/styles/Google/Ellipses.yml +0 -9
  326. omniload-0.0.0.dev0/styles/Google/EmDash.yml +0 -13
  327. omniload-0.0.0.dev0/styles/Google/Exclamation.yml +0 -12
  328. omniload-0.0.0.dev0/styles/Google/FirstPerson.yml +0 -13
  329. omniload-0.0.0.dev0/styles/Google/Gender.yml +0 -9
  330. omniload-0.0.0.dev0/styles/Google/GenderBias.yml +0 -43
  331. omniload-0.0.0.dev0/styles/Google/HeadingPunctuation.yml +0 -13
  332. omniload-0.0.0.dev0/styles/Google/Headings.yml +0 -29
  333. omniload-0.0.0.dev0/styles/Google/Latin.yml +0 -11
  334. omniload-0.0.0.dev0/styles/Google/LyHyphens.yml +0 -14
  335. omniload-0.0.0.dev0/styles/Google/OptionalPlurals.yml +0 -12
  336. omniload-0.0.0.dev0/styles/Google/Ordinal.yml +0 -7
  337. omniload-0.0.0.dev0/styles/Google/OxfordComma.yml +0 -7
  338. omniload-0.0.0.dev0/styles/Google/Parens.yml +0 -7
  339. omniload-0.0.0.dev0/styles/Google/Passive.yml +0 -184
  340. omniload-0.0.0.dev0/styles/Google/Periods.yml +0 -7
  341. omniload-0.0.0.dev0/styles/Google/Quotes.yml +0 -7
  342. omniload-0.0.0.dev0/styles/Google/Ranges.yml +0 -7
  343. omniload-0.0.0.dev0/styles/Google/Semicolons.yml +0 -8
  344. omniload-0.0.0.dev0/styles/Google/Slang.yml +0 -11
  345. omniload-0.0.0.dev0/styles/Google/Spacing.yml +0 -10
  346. omniload-0.0.0.dev0/styles/Google/Spelling.yml +0 -10
  347. omniload-0.0.0.dev0/styles/Google/Units.yml +0 -8
  348. omniload-0.0.0.dev0/styles/Google/We.yml +0 -11
  349. omniload-0.0.0.dev0/styles/Google/Will.yml +0 -7
  350. omniload-0.0.0.dev0/styles/Google/WordList.yml +0 -80
  351. omniload-0.0.0.dev0/styles/Google/meta.json +0 -4
  352. omniload-0.0.0.dev0/styles/config/vocabularies/omniload/accept.txt +0 -52
  353. omniload-0.0.0.dev0/test.env.template +0 -4
  354. /omniload-0.0.0.dev0/LICENSE.md → /omniload-0.2.0/LICENSE +0 -0
  355. {omniload-0.0.0.dev0 → omniload-0.2.0}/NOTICE +0 -0
  356. /omniload-0.0.0.dev0/omniload/src/sql_database/__init__.py → /omniload-0.2.0/omniload/py.typed +0 -0
  357. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/airtable/__init__.py +0 -0
  358. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/allium/__init__.py +0 -0
  359. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/anthropic/__init__.py +0 -0
  360. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/anthropic/helpers.py +0 -0
  361. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/applovin/__init__.py +0 -0
  362. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/appsflyer/__init__.py +0 -0
  363. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/appstore/client.py +0 -0
  364. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/appstore/errors.py +0 -0
  365. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/appstore/resources.py +0 -0
  366. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/asana_source/helpers.py +0 -0
  367. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/asana_source/settings.py +0 -0
  368. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/attio/__init__.py +0 -0
  369. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/attio/helpers.py +0 -0
  370. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/blob.py +0 -0
  371. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/bruin/__init__.py +0 -0
  372. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/chess/settings.py +0 -0
  373. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/clickup/helpers.py +0 -0
  374. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/cursor/__init__.py +0 -0
  375. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/cursor/helpers.py +0 -0
  376. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/customer_io/helpers.py +0 -0
  377. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/docebo/__init__.py +0 -0
  378. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/docebo/client.py +0 -0
  379. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/docebo/helpers.py +0 -0
  380. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/dune/__init__.py +0 -0
  381. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/dune/helpers.py +0 -0
  382. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/elasticsearch/helpers.py +0 -0
  383. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/facebook_ads/exceptions.py +0 -0
  384. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/facebook_ads/settings.py +0 -0
  385. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/facebook_ads/utils.py +0 -0
  386. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/factory.py +0 -0
  387. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/fluxx/__init__.py +0 -0
  388. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/fluxx/helpers.py +0 -0
  389. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/freshdesk/settings.py +0 -0
  390. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/fundraiseup/client.py +0 -0
  391. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/github/queries.py +0 -0
  392. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/github/settings.py +0 -0
  393. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_ads/field.py +0 -0
  394. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_ads/metrics.py +0 -0
  395. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_ads/predicates.py +0 -0
  396. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_ads/reports.py +0 -0
  397. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_ads/test_google_ads.py +0 -0
  398. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_analytics/__init__.py +0 -0
  399. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_sheets/__init__.py +0 -0
  400. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/google_sheets/helpers/__init__.py +0 -0
  401. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/hostaway/client.py +0 -0
  402. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/http/__init__.py +0 -0
  403. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/http_client.py +0 -0
  404. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/hubspot/settings.py +0 -0
  405. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/indeed/__init__.py +0 -0
  406. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/indeed/helpers.py +0 -0
  407. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/influxdb/__init__.py +0 -0
  408. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/intercom/settings.py +0 -0
  409. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/isoc_pulse/__init__.py +0 -0
  410. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/jira_source/__init__.py +0 -0
  411. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/jira_source/settings.py +0 -0
  412. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/kinesis/helpers.py +0 -0
  413. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/klaviyo/helpers.py +0 -0
  414. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/linear/__init__.py +0 -0
  415. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/linear/helpers.py +0 -0
  416. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/linkedin_ads/dimension_time_enum.py +0 -0
  417. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/linkedin_ads/helpers.py +0 -0
  418. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/mailchimp/__init__.py +0 -0
  419. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/mailchimp/helpers.py +0 -0
  420. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/mailchimp/settings.py +0 -0
  421. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/mixpanel/client.py +0 -0
  422. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/monday/__init__.py +0 -0
  423. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/monday/helpers.py +0 -0
  424. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/monday/settings.py +0 -0
  425. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/notion/__init__.py +0 -0
  426. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/notion/helpers/__init__.py +0 -0
  427. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/notion/helpers/client.py +0 -0
  428. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/notion/helpers/database.py +0 -0
  429. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/notion/settings.py +0 -0
  430. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/personio/helpers.py +0 -0
  431. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/phantombuster/client.py +0 -0
  432. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/__init__.py +0 -0
  433. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/pipedrive/helpers/custom_fields_munger.py +0 -0
  434. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/pipedrive/settings.py +0 -0
  435. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/pipedrive/typing.py +0 -0
  436. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/plusvibeai/__init__.py +0 -0
  437. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/plusvibeai/helpers.py +0 -0
  438. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/plusvibeai/settings.py +0 -0
  439. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/primer/helpers.py +0 -0
  440. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/reddit_ads/helpers.py +0 -0
  441. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/salesforce/helpers.py +0 -0
  442. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/shopify/exceptions.py +0 -0
  443. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/shopify/settings.py +0 -0
  444. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/slack/__init__.py +0 -0
  445. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/slack/settings.py +0 -0
  446. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/snapchat_ads/client.py +0 -0
  447. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/snapchat_ads/helpers.py +0 -0
  448. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/snapchat_ads/settings.py +0 -0
  449. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/socrata_source/helpers.py +0 -0
  450. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/socrata_source/settings.py +0 -0
  451. /omniload-0.0.0.dev0/styles/Google/vocab.txt → /omniload-0.2.0/omniload/src/sql_database/__init__.py +0 -0
  452. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/stripe_analytics/settings.py +0 -0
  453. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/table_definition.py +0 -0
  454. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/time.py +0 -0
  455. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/trustpilot/client.py +0 -0
  456. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/zendesk/helpers/__init__.py +0 -0
  457. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/zendesk/helpers/credentials.py +0 -0
  458. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/zendesk/helpers/talk_api.py +0 -0
  459. {omniload-0.0.0.dev0 → omniload-0.2.0}/omniload/src/zendesk/settings.py +0 -0
@@ -174,28 +174,3 @@
174
174
  of your accepting any such warranty or additional liability.
175
175
 
176
176
  END OF TERMS AND CONDITIONS
177
-
178
- APPENDIX: How to apply the Apache License to your work.
179
-
180
- To apply the Apache License to your work, attach the following
181
- boilerplate notice, with the fields enclosed by brackets "[]"
182
- replaced with your own identifying information. (Don't include
183
- the brackets!) The text should be enclosed in the appropriate
184
- comment syntax for the file format. We also recommend that a
185
- file or class name and description of purpose be included on the
186
- same "printed page" as the copyright notice for easier
187
- identification within third-party archives.
188
-
189
- Copyright 2023 The Contributors
190
-
191
- Licensed under the Apache License, Version 2.0 (the "License");
192
- you may not use this file except in compliance with the License.
193
- You may obtain a copy of the License at
194
-
195
- http://www.apache.org/licenses/LICENSE-2.0
196
-
197
- Unless required by applicable law or agreed to in writing, software
198
- distributed under the License is distributed on an "AS IS" BASIS,
199
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
- See the License for the specific language governing permissions and
201
- limitations under the License.
@@ -0,0 +1,9 @@
1
+ include *.md *.rst LICENSE*
2
+ recursive-include doc *.md *.rst
3
+
4
+ global-exclude *.db
5
+ prune */.idea
6
+ prune */__pycache__
7
+ prune release
8
+ prune tests
9
+ prune tmp
@@ -0,0 +1,250 @@
1
+ Metadata-Version: 2.4
2
+ Name: omniload
3
+ Version: 0.2.0
4
+ Summary: omniload is a polyglot data loader based on dlt. Copy data between any source and any destination.
5
+ Author: Mustafa Ersan, Sanju Shah Gupta, Saravjeet 'Aman' Singh
6
+ Author-email: Burak Karakan <burak.karakan@getbruin.com>
7
+ Maintainer-email: Andreas Motl <andreas.motl@panodata.org>
8
+ License-Expression: MIT
9
+ Project-URL: Changelog, https://omniload.readthedocs.io/changelog.html
10
+ Project-URL: Documentation, https://omniload.readthedocs.io/
11
+ Project-URL: Issues, https://github.com/panodata/omniload/issues
12
+ Project-URL: Repository, https://github.com/panodata/omniload
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Customer Service
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Intended Audience :: Education
18
+ Classifier: Intended Audience :: End Users/Desktop
19
+ Classifier: Intended Audience :: Information Technology
20
+ Classifier: Intended Audience :: Manufacturing
21
+ Classifier: Intended Audience :: Science/Research
22
+ Classifier: Intended Audience :: System Administrators
23
+ Classifier: Intended Audience :: Telecommunications Industry
24
+ Classifier: Operating System :: MacOS :: MacOS X
25
+ Classifier: Operating System :: Microsoft :: Windows
26
+ Classifier: Operating System :: OS Independent
27
+ Classifier: Operating System :: POSIX :: Linux
28
+ Classifier: Operating System :: Unix
29
+ Classifier: Programming Language :: Python
30
+ Classifier: Programming Language :: Python :: 3 :: Only
31
+ Classifier: Programming Language :: Python :: 3.10
32
+ Classifier: Programming Language :: Python :: 3.11
33
+ Classifier: Programming Language :: Python :: 3.12
34
+ Classifier: Programming Language :: Python :: 3.13
35
+ Classifier: Programming Language :: Python :: 3.14
36
+ Classifier: Topic :: Adaptive Technologies
37
+ Classifier: Topic :: Communications
38
+ Classifier: Topic :: Database
39
+ Classifier: Topic :: Documentation
40
+ Classifier: Topic :: Education
41
+ Classifier: Topic :: Internet
42
+ Classifier: Topic :: Internet :: WWW/HTTP
43
+ Classifier: Topic :: Office/Business
44
+ Classifier: Topic :: Scientific/Engineering
45
+ Classifier: Topic :: Software Development :: Libraries
46
+ Classifier: Topic :: Software Development :: Object Brokering
47
+ Classifier: Topic :: Software Development :: Pre-processors
48
+ Classifier: Topic :: Software Development :: Quality Assurance
49
+ Classifier: Topic :: Software Development :: Testing
50
+ Classifier: Topic :: Software Development :: Version Control
51
+ Classifier: Topic :: System :: Archiving
52
+ Classifier: Topic :: System :: Clustering
53
+ Classifier: Topic :: System :: Distributed Computing
54
+ Classifier: Topic :: System :: Logging
55
+ Classifier: Topic :: System :: Monitoring
56
+ Classifier: Topic :: System :: Networking
57
+ Classifier: Topic :: System :: Systems Administration
58
+ Classifier: Topic :: Text Processing
59
+ Classifier: Topic :: Utilities
60
+ Requires-Python: >=3.10
61
+ Description-Content-Type: text/markdown
62
+ License-File: LICENSE
63
+ License-File: LICENSE.Apache-2.0
64
+ License-File: NOTICE
65
+ Requires-Dist: aiohttp<4
66
+ Requires-Dist: asana<3.3
67
+ Requires-Dist: click<8.5
68
+ Requires-Dist: clickhouse-connect<1,>=0.8
69
+ Requires-Dist: clickhouse-driver<0.3
70
+ Requires-Dist: clickhouse-sqlalchemy<0.4
71
+ Requires-Dist: confluent-kafka<2.15
72
+ Requires-Dist: couchbase<5,>=4
73
+ Requires-Dist: databricks-sql-connector<5
74
+ Requires-Dist: databricks-sqlalchemy<3
75
+ Requires-Dist: dataclasses-json<0.7
76
+ Requires-Dist: dlt<1.22
77
+ Requires-Dist: dlt-cratedb<0.2
78
+ Requires-Dist: duckdb<1.6
79
+ Requires-Dist: duckdb-engine<0.18
80
+ Requires-Dist: elasticsearch<10
81
+ Requires-Dist: facebook-business<26
82
+ Requires-Dist: flatten-json<0.2
83
+ Requires-Dist: gcsfs
84
+ Requires-Dist: google-ads<32
85
+ Requires-Dist: google-analytics-data<0.24
86
+ Requires-Dist: google-api-python-client<3
87
+ Requires-Dist: google-auth<3
88
+ Requires-Dist: google-cloud-bigquery-storage<3
89
+ Requires-Dist: google-cloud-spanner<4
90
+ Requires-Dist: influxdb-client<2
91
+ Requires-Dist: mysql-connector-python<10
92
+ Requires-Dist: oracledb<4
93
+ Requires-Dist: orjson<4
94
+ Requires-Dist: pendulum<4,>=3
95
+ Requires-Dist: psycopg2-binary<3
96
+ Requires-Dist: py-machineid<2
97
+ Requires-Dist: pyairtable<4
98
+ Requires-Dist: pyarrow<25,>=18
99
+ Requires-Dist: pyathena<4
100
+ Requires-Dist: pymongo<5
101
+ Requires-Dist: pymongoarrow<2
102
+ Requires-Dist: pymysql<2
103
+ Requires-Dist: pyrate-limiter<4
104
+ Requires-Dist: python-quickbooks<0.10
105
+ Requires-Dist: requests<3
106
+ Requires-Dist: rudder-sdk-python<2.2
107
+ Requires-Dist: s3fs
108
+ Requires-Dist: simple-salesforce<2
109
+ Requires-Dist: smartsheet-python-sdk<5
110
+ Requires-Dist: snowflake-connector-python<5,>=3.18
111
+ Requires-Dist: snowflake-sqlalchemy<2
112
+ Requires-Dist: sqlalchemy<2.1
113
+ Requires-Dist: sqlalchemy-bigquery<2
114
+ Requires-Dist: sqlalchemy-cratedb<1
115
+ Requires-Dist: sqlalchemy-hana<5
116
+ Requires-Dist: sqlalchemy-redshift<2
117
+ Requires-Dist: sqlalchemy-spanner<2
118
+ Requires-Dist: stripe<16
119
+ Requires-Dist: tldextract<6
120
+ Requires-Dist: toolz<2
121
+ Requires-Dist: tqdm<5
122
+ Requires-Dist: trino[sqlalchemy]==0.337.0
123
+ Requires-Dist: typer<0.27
124
+ Requires-Dist: urllib3<2.8
125
+ Provides-Extra: develop
126
+ Requires-Dist: pkginfo<2; extra == "develop"
127
+ Requires-Dist: poethepoet<1; extra == "develop"
128
+ Requires-Dist: pyproject-fmt<3; extra == "develop"
129
+ Requires-Dist: pytest-repeat<1; extra == "develop"
130
+ Requires-Dist: ruff<0.16; extra == "develop"
131
+ Requires-Dist: ty==0.0.51; extra == "develop"
132
+ Requires-Dist: validate-pyproject<1; extra == "develop"
133
+ Provides-Extra: full
134
+ Requires-Dist: omniload[ibm-db,odbc,oracle]; extra == "full"
135
+ Provides-Extra: ibm-db
136
+ Requires-Dist: ibm-db<4; platform_machine != "aarch64" and extra == "ibm-db"
137
+ Requires-Dist: ibm-db-sa<0.5; platform_machine != "aarch64" and extra == "ibm-db"
138
+ Provides-Extra: odbc
139
+ Requires-Dist: pyodbc<5.4; extra == "odbc"
140
+ Provides-Extra: oracle
141
+ Requires-Dist: oracledb>=2.0.0; extra == "oracle"
142
+ Provides-Extra: release
143
+ Requires-Dist: build<2; extra == "release"
144
+ Requires-Dist: twine<7; extra == "release"
145
+ Provides-Extra: test
146
+ Requires-Dist: pendulum[test]<4,>=3; extra == "test"
147
+ Requires-Dist: pytest<10; extra == "test"
148
+ Requires-Dist: pytest-asyncio<2; extra == "test"
149
+ Requires-Dist: pytest-cov<8; extra == "test"
150
+ Requires-Dist: pytest-xdist[psutil]<4; extra == "test"
151
+ Requires-Dist: testcontainers[mysql,postgres]<4.15,>=4.9.1; extra == "test"
152
+ Requires-Dist: types-requests<3; extra == "test"
153
+ Requires-Dist: verlib2; extra == "test"
154
+ Dynamic: license-file
155
+
156
+ <div align="center">
157
+
158
+ # omniload
159
+ <p>Copy data between any source and any destination.</p>
160
+ <img src="https://github.com/panodata/omniload/blob/main/resources/demo.gif?raw=true" width="750" />
161
+
162
+ [![License](https://img.shields.io/github/license/panodata/omniload.svg)](https://github.com/panodata/omniload/blob/main/LICENSE)
163
+ [![Downloads / month](https://pepy.tech/badge/omniload/month)](https://pepy.tech/project/omniload/)
164
+ [![Python versions](https://img.shields.io/pypi/pyversions/omniload.svg)](https://pypi.org/project/omniload/)
165
+
166
+ </div>
167
+
168
+ ## About
169
+
170
+ omniload is a polyglot data loader framework based on dlt.
171
+ It allows you to load data from any source into any destination,
172
+ either using a concise CLI from your shell,
173
+ or the Python API from your own applications.
174
+
175
+ omniload provides the same efficient incremental data loading modes
176
+ inherited by [dlt]: `append`, `merge`, and `delete+insert`.
177
+
178
+ ## Install
179
+ We recommend using [uv] to install or run `omniload`.
180
+
181
+ ```shell
182
+ pip install uv
183
+ uvx omniload
184
+ ```
185
+
186
+ Alternatively, if you'd like to install it globally:
187
+ ```shell
188
+ uv pip install --system omniload
189
+ ```
190
+
191
+ While installation with vanilla `pip` is possible, it's an order of magnitude slower.
192
+
193
+ ## Synopsis
194
+
195
+ The next command instructs omniload to read the table `public.some_data` from
196
+ your PostgreSQL instance, and to write the data to your BigQuery warehouse
197
+ under the schema `omniload` and table `some_data`.
198
+
199
+ ```shell
200
+ omniload ingest \
201
+ --source-uri 'postgresql://admin:admin@localhost:8837/web?sslmode=disable' \
202
+ --source-table 'public.some_data' \
203
+ --dest-uri 'bigquery://<your-project-name>?credentials_path=/path/to/service/account.json' \
204
+ --dest-table 'omniload.some_data'
205
+ ```
206
+
207
+ ## Handbook
208
+
209
+ Please visit the [quickstart documentation], or inspect the
210
+ list of supported [sources and destinations].
211
+
212
+ ## Project
213
+
214
+ ### Contribute
215
+
216
+ Contributions are very much welcome. Please visit the [sandbox documentation]
217
+ to learn how to spin up a development environment on your workstation and submit
218
+ patches, or create a [ticket][Issues] to report a bug or propose a feature.
219
+
220
+ ### Status
221
+
222
+ Breaking changes should be expected until a 1.0 release, so version pinning is
223
+ strongly recommended, especially when using this software as a library.
224
+ For example:
225
+ ```shell
226
+ pip install 'omniload[full]==0.0.42'
227
+ ```
228
+
229
+ ### License
230
+
231
+ The project is licensed under the MIT License, see the [LICENSE] file for details.
232
+ Some components are licensed under the Apache 2.0 license, see the [NOTICE] file for details.
233
+
234
+ ### Acknowledgements
235
+
236
+ This project would not have been possible without the amazing work by the
237
+ authors and contributors to [SQLAlchemy], [dlt], and [ingestr], turtles all
238
+ the way down. Kudos.
239
+
240
+
241
+ [dlt]: https://github.com/dlt-hub/dlt
242
+ [quickstart documentation]: https://omniload.readthedocs.io/getting-started/quickstart.html
243
+ [ingestr]: https://bruin-data.github.io/ingestr/
244
+ [Issues]: https://github.com/panodata/omniload/issues
245
+ [LICENSE]: https://github.com/panodata/omniload/blob/main/LICENSE
246
+ [NOTICE]: https://github.com/panodata/omniload/blob/main/NOTICE
247
+ [sandbox documentation]: https://omniload.readthedocs.io/sandbox.html
248
+ [sources and destinations]: https://omniload.readthedocs.io/supported-sources/
249
+ [SQLAlchemy]: https://www.sqlalchemy.org/
250
+ [uv]: https://docs.astral.sh/uv/
@@ -0,0 +1,95 @@
1
+ <div align="center">
2
+
3
+ # omniload
4
+ <p>Copy data between any source and any destination.</p>
5
+ <img src="https://github.com/panodata/omniload/blob/main/resources/demo.gif?raw=true" width="750" />
6
+
7
+ [![License](https://img.shields.io/github/license/panodata/omniload.svg)](https://github.com/panodata/omniload/blob/main/LICENSE)
8
+ [![Downloads / month](https://pepy.tech/badge/omniload/month)](https://pepy.tech/project/omniload/)
9
+ [![Python versions](https://img.shields.io/pypi/pyversions/omniload.svg)](https://pypi.org/project/omniload/)
10
+
11
+ </div>
12
+
13
+ ## About
14
+
15
+ omniload is a polyglot data loader framework based on dlt.
16
+ It allows you to load data from any source into any destination,
17
+ either using a concise CLI from your shell,
18
+ or the Python API from your own applications.
19
+
20
+ omniload provides the same efficient incremental data loading modes
21
+ inherited by [dlt]: `append`, `merge`, and `delete+insert`.
22
+
23
+ ## Install
24
+ We recommend using [uv] to install or run `omniload`.
25
+
26
+ ```shell
27
+ pip install uv
28
+ uvx omniload
29
+ ```
30
+
31
+ Alternatively, if you'd like to install it globally:
32
+ ```shell
33
+ uv pip install --system omniload
34
+ ```
35
+
36
+ While installation with vanilla `pip` is possible, it's an order of magnitude slower.
37
+
38
+ ## Synopsis
39
+
40
+ The next command instructs omniload to read the table `public.some_data` from
41
+ your PostgreSQL instance, and to write the data to your BigQuery warehouse
42
+ under the schema `omniload` and table `some_data`.
43
+
44
+ ```shell
45
+ omniload ingest \
46
+ --source-uri 'postgresql://admin:admin@localhost:8837/web?sslmode=disable' \
47
+ --source-table 'public.some_data' \
48
+ --dest-uri 'bigquery://<your-project-name>?credentials_path=/path/to/service/account.json' \
49
+ --dest-table 'omniload.some_data'
50
+ ```
51
+
52
+ ## Handbook
53
+
54
+ Please visit the [quickstart documentation], or inspect the
55
+ list of supported [sources and destinations].
56
+
57
+ ## Project
58
+
59
+ ### Contribute
60
+
61
+ Contributions are very much welcome. Please visit the [sandbox documentation]
62
+ to learn how to spin up a development environment on your workstation and submit
63
+ patches, or create a [ticket][Issues] to report a bug or propose a feature.
64
+
65
+ ### Status
66
+
67
+ Breaking changes should be expected until a 1.0 release, so version pinning is
68
+ strongly recommended, especially when using this software as a library.
69
+ For example:
70
+ ```shell
71
+ pip install 'omniload[full]==0.0.42'
72
+ ```
73
+
74
+ ### License
75
+
76
+ The project is licensed under the MIT License, see the [LICENSE] file for details.
77
+ Some components are licensed under the Apache 2.0 license, see the [NOTICE] file for details.
78
+
79
+ ### Acknowledgements
80
+
81
+ This project would not have been possible without the amazing work by the
82
+ authors and contributors to [SQLAlchemy], [dlt], and [ingestr], turtles all
83
+ the way down. Kudos.
84
+
85
+
86
+ [dlt]: https://github.com/dlt-hub/dlt
87
+ [quickstart documentation]: https://omniload.readthedocs.io/getting-started/quickstart.html
88
+ [ingestr]: https://bruin-data.github.io/ingestr/
89
+ [Issues]: https://github.com/panodata/omniload/issues
90
+ [LICENSE]: https://github.com/panodata/omniload/blob/main/LICENSE
91
+ [NOTICE]: https://github.com/panodata/omniload/blob/main/NOTICE
92
+ [sandbox documentation]: https://omniload.readthedocs.io/sandbox.html
93
+ [sources and destinations]: https://omniload.readthedocs.io/supported-sources/
94
+ [SQLAlchemy]: https://www.sqlalchemy.org/
95
+ [uv]: https://docs.astral.sh/uv/
@@ -0,0 +1,164 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # For the full list of built-in configuration values, see the documentation:
4
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
+
6
+ # -- Project information -----------------------------------------------------
7
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
8
+
9
+ project = "omniload"
10
+ copyright = "2024-2026, The omniload developers" # noqa: A001
11
+ author = "The omniload developers"
12
+
13
+ # -- General configuration ---------------------------------------------------
14
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
15
+
16
+ extensions = [
17
+ "myst_parser",
18
+ "sphinx_copybutton",
19
+ "sphinx_design",
20
+ "sphinx_sitemap",
21
+ "sphinx.ext.intersphinx",
22
+ "sphinx.ext.todo",
23
+ "sphinx.ext.ifconfig",
24
+ "sphinxcontrib.mermaid",
25
+ "sphinxext.opengraph",
26
+ ]
27
+
28
+ templates_path = ["_templates"]
29
+ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
30
+ suppress_warnings = [
31
+ "myst.header",
32
+ ]
33
+
34
+ # -- Options for HTML output -------------------------------------------------
35
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
36
+
37
+ # Where the documentation is published to. Needed for sphinx-sitemap.
38
+ html_baseurl = "https://omniload.readthedocs.io/"
39
+
40
+ # The theme to use for HTML and HTML Help pages. See the documentation for
41
+ # a list of builtin themes.
42
+ #
43
+ html_theme = "furo"
44
+
45
+ # Theme options are theme-specific and customize the look and feel of a theme
46
+ # further. For a list of options available for each theme, see the
47
+ # documentation.
48
+
49
+ html_title = "omniload"
50
+
51
+ html_theme_options = {
52
+ "sidebar_hide_name": False,
53
+ # https://github.com/pradyunsg/furo/blob/main/src/furo/assets/styles/variables/_colors.scss
54
+ }
55
+
56
+ # Add any paths that contain custom static files (such as style sheets) here,
57
+ # relative to this directory. They are copied after the builtin static files,
58
+ # so a file named "default.css" will overwrite the builtin "default.css".
59
+ html_static_path = ["_static"]
60
+
61
+ # Custom sidebar templates, must be a dictionary that maps document names
62
+ # to template names.
63
+ #
64
+ # The default sidebars (for documents that don't match any pattern) are
65
+ # defined by theme itself. Builtin themes are using these templates by
66
+ # default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
67
+ # 'searchbox.html']``.
68
+ #
69
+ # html_sidebars = {}
70
+
71
+ html_show_sourcelink = True
72
+
73
+
74
+ # -- Intersphinx ----------------------------------------------------------
75
+
76
+ intersphinx_mapping = {
77
+ "crash": ("https://cratedb.com/docs/crate/crash/en/latest/", None),
78
+ "cloud": ("https://cratedb.com/docs/cloud/en/latest/", None),
79
+ "croud": ("https://cratedb.com/docs/cloud/cli/en/latest/", None),
80
+ "guide": ("https://cratedb.com/docs/guide/", None),
81
+ "influxio": ("https://influxio.readthedocs.io/", None),
82
+ }
83
+ linkcheck_ignore = [
84
+ r"https://pulse.internetsociety.org/",
85
+ r"https://www.g2.com/",
86
+ r"https://www.trustpilot.com/",
87
+ r"https://developer.eu.surveymonkey.com/",
88
+ r"https://developer.salesforce.com/",
89
+ r"https://developers.facebook.com/",
90
+ r"https://docs.indeed.com/",
91
+ r"https://quickbooks.intuit.com/",
92
+ r"https://app.asana.com/",
93
+ r"https://developer.ca.surveymonkey.com/",
94
+ r"https://docs.customer.io/",
95
+ r"https://personio.de/",
96
+ r"https://www.adjust.com/",
97
+ r"https://support.appsflyer.com/",
98
+ r"https://help.docebo.com/",
99
+ r"https://www.reddit.com/",
100
+ ]
101
+ linkcheck_anchors_ignore_for_url = [
102
+ r"https://developers.zoom.us/",
103
+ r"https://docs.customer.io/",
104
+ r"https://github.com/",
105
+ r"https://support.appsflyer.com/",
106
+ r"https://support.axon.ai/",
107
+ r"https://developers.zoom.us/",
108
+ r"https://docs.customer.io/",
109
+ ]
110
+
111
+ # Disable caching remote inventories completely.
112
+ # http://www.sphinx-doc.org/en/stable/ext/intersphinx.html#confval-intersphinx_cache_limit
113
+ # intersphinx_cache_limit = 0
114
+
115
+
116
+ # -- Extension configuration -------------------------------------------------
117
+
118
+ sphinx_tabs_valid_builders = ["linkcheck"]
119
+ todo_include_todos = True
120
+
121
+ # Configure sphinx-copybutton
122
+ copybutton_remove_prompts = True
123
+ copybutton_line_continuation_character = "\\"
124
+ copybutton_prompt_text = (
125
+ r">>> |\.\.\. |\$ |sh\$ |PS> |cr> |mysql> |In \[\d*\]: | {2,5}\.\.\.: | {5,8}: "
126
+ )
127
+ copybutton_prompt_is_regexp = True
128
+
129
+ # Configure sphinxext-opengraph
130
+ ogp_site_url = "https://omniload.readthedocs.io/"
131
+ ogp_enable_meta_description = True
132
+ # ogp_image = "http://example.org/image.png"
133
+ # ogp_description_length = 300
134
+
135
+ # Configure sphinx-sitemap
136
+ sitemap_url_scheme = "{link}"
137
+ sitemap_excludes = [
138
+ "search.html",
139
+ "genindex.html",
140
+ "_snippet/*",
141
+ ]
142
+
143
+ # -- Options for MyST -------------------------------------------------
144
+
145
+ myst_heading_anchors = 3
146
+ myst_enable_extensions = [
147
+ "attrs_block",
148
+ "attrs_inline",
149
+ "colon_fence",
150
+ "deflist",
151
+ "fieldlist",
152
+ "html_admonition",
153
+ "html_image",
154
+ "linkify",
155
+ "replacements",
156
+ "strikethrough",
157
+ "substitution",
158
+ "tasklist",
159
+ ]
160
+ myst_substitutions = {}
161
+ myst_html_meta = {
162
+ "google-site-verification": "kDH2Ws762oLwf5V3l-fGrYR9-lgLF6S_Bpd4Dairh7A",
163
+ "msvalidate.01": "E9B1983DD903904FDB7F4E5612962EE7",
164
+ }
@@ -0,0 +1,13 @@
1
+ from importlib.metadata import PackageNotFoundError, version
2
+ from unittest import mock
3
+
4
+ __appname__ = "omniload"
5
+
6
+
7
+ try:
8
+ __version__ = version(__appname__)
9
+ except PackageNotFoundError: # pragma: no cover
10
+ __version__ = "0.0.0-dev"
11
+
12
+ # Turn off dlt's telemetry to tame three more requests per invocation.
13
+ mock.patch("dlt.common.runtime.telemetry._TELEMETRY_STARTED", True)
@@ -3,7 +3,8 @@ import tempfile
3
3
  from concurrent.futures import ThreadPoolExecutor
4
4
 
5
5
  import pytest
6
- from main_test import DESTINATIONS, SOURCES # type: ignore
6
+
7
+ from .main_test import DESTINATIONS, SOURCES
7
8
 
8
9
 
9
10
  def pytest_configure(config):
@@ -37,7 +38,7 @@ def start_containers(config):
37
38
 
38
39
  unique_containers = set(SOURCES.values()) | set(DESTINATIONS.values())
39
40
  for container in unique_containers:
40
- container.container_lock_dir = config.shared_directory
41
+ container.container_lock_dir = config.shared_directory # ty: ignore[invalid-assignment]
41
42
 
42
43
  with ThreadPoolExecutor() as executor:
43
44
  for container in unique_containers: