ingestr 0.13.67__tar.gz → 0.13.68__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 (313) hide show
  1. {ingestr-0.13.67 → ingestr-0.13.68}/PKG-INFO +2 -2
  2. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/main.py +1 -1
  3. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/applovin_max/__init__.py +1 -0
  4. ingestr-0.13.68/ingestr/src/buildinfo.py +1 -0
  5. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/destinations.py +2 -2
  6. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/linear/__init__.py +5 -3
  7. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/linear/helpers.py +16 -4
  8. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/sources.py +21 -1
  9. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/stripe_analytics/helpers.py +0 -1
  10. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/zoom/__init__.py +2 -2
  11. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/zoom/helpers.py +1 -1
  12. {ingestr-0.13.67 → ingestr-0.13.68}/requirements.in +1 -1
  13. {ingestr-0.13.67 → ingestr-0.13.68}/requirements.txt +1 -1
  14. {ingestr-0.13.67 → ingestr-0.13.68}/requirements_arm64.txt +1 -1
  15. ingestr-0.13.67/ingestr/src/buildinfo.py +0 -1
  16. {ingestr-0.13.67 → ingestr-0.13.68}/.dockerignore +0 -0
  17. {ingestr-0.13.67 → ingestr-0.13.68}/.githooks/pre-commit-hook.sh +0 -0
  18. {ingestr-0.13.67 → ingestr-0.13.68}/.github/workflows/deploy-docs.yml +0 -0
  19. {ingestr-0.13.67 → ingestr-0.13.68}/.github/workflows/release.yml +0 -0
  20. {ingestr-0.13.67 → ingestr-0.13.68}/.github/workflows/secrets-scan.yml +0 -0
  21. {ingestr-0.13.67 → ingestr-0.13.68}/.github/workflows/tests.yml +0 -0
  22. {ingestr-0.13.67 → ingestr-0.13.68}/.gitignore +0 -0
  23. {ingestr-0.13.67 → ingestr-0.13.68}/.gitleaksignore +0 -0
  24. {ingestr-0.13.67 → ingestr-0.13.68}/.python-version +0 -0
  25. {ingestr-0.13.67 → ingestr-0.13.68}/.vale.ini +0 -0
  26. {ingestr-0.13.67 → ingestr-0.13.68}/Dockerfile +0 -0
  27. {ingestr-0.13.67 → ingestr-0.13.68}/LICENSE.md +0 -0
  28. {ingestr-0.13.67 → ingestr-0.13.68}/Makefile +0 -0
  29. {ingestr-0.13.67 → ingestr-0.13.68}/README.md +0 -0
  30. {ingestr-0.13.67 → ingestr-0.13.68}/docs/.vitepress/config.mjs +0 -0
  31. {ingestr-0.13.67 → ingestr-0.13.68}/docs/.vitepress/theme/custom.css +0 -0
  32. {ingestr-0.13.67 → ingestr-0.13.68}/docs/.vitepress/theme/index.js +0 -0
  33. {ingestr-0.13.67 → ingestr-0.13.68}/docs/commands/example-uris.md +0 -0
  34. {ingestr-0.13.67 → ingestr-0.13.68}/docs/commands/ingest.md +0 -0
  35. {ingestr-0.13.67 → ingestr-0.13.68}/docs/getting-started/core-concepts.md +0 -0
  36. {ingestr-0.13.67 → ingestr-0.13.68}/docs/getting-started/incremental-loading.md +0 -0
  37. {ingestr-0.13.67 → ingestr-0.13.68}/docs/getting-started/quickstart.md +0 -0
  38. {ingestr-0.13.67 → ingestr-0.13.68}/docs/getting-started/telemetry.md +0 -0
  39. {ingestr-0.13.67 → ingestr-0.13.68}/docs/index.md +0 -0
  40. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/applovin_max.png +0 -0
  41. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/athena.png +0 -0
  42. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/clickhouse_img.png +0 -0
  43. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/cratedb-destination.png +0 -0
  44. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/cratedb-source.png +0 -0
  45. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/freshdesk_ingestion.png +0 -0
  46. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/gcp_spanner_ingestion.png +0 -0
  47. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/github.png +0 -0
  48. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/google_analytics_realtime_report.png +0 -0
  49. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/googleanalytics.png +0 -0
  50. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/ingestion_elasticsearch_img.png +0 -0
  51. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/kinesis.bigquery.png +0 -0
  52. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/linear.png +0 -0
  53. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/linkedin_ads.png +0 -0
  54. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/mixpanel_ingestion.png +0 -0
  55. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/personio.png +0 -0
  56. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/personio_duckdb.png +0 -0
  57. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/phantombuster.png +0 -0
  58. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/pipedrive.png +0 -0
  59. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/quickbook_ingestion.png +0 -0
  60. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/sftp.png +0 -0
  61. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/stripe_postgres.png +0 -0
  62. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/tiktok.png +0 -0
  63. {ingestr-0.13.67 → ingestr-0.13.68}/docs/media/zoom_ingestion.png +0 -0
  64. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/adjust.md +0 -0
  65. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/airtable.md +0 -0
  66. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/applovin.md +0 -0
  67. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/applovin_max.md +0 -0
  68. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/appsflyer.md +0 -0
  69. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/appstore.md +0 -0
  70. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/asana.md +0 -0
  71. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/athena.md +0 -0
  72. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/attio.md +0 -0
  73. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/bigquery.md +0 -0
  74. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/chess.md +0 -0
  75. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/clickhouse.md +0 -0
  76. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/cratedb.md +0 -0
  77. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/csv.md +0 -0
  78. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/custom_queries.md +0 -0
  79. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/databricks.md +0 -0
  80. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/db2.md +0 -0
  81. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/duckdb.md +0 -0
  82. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/dynamodb.md +0 -0
  83. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/elasticsearch.md +0 -0
  84. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/facebook-ads.md +0 -0
  85. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/frankfurter.md +0 -0
  86. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/freshdesk.md +0 -0
  87. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/gcs.md +0 -0
  88. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/github.md +0 -0
  89. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/google-ads.md +0 -0
  90. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/google_analytics.md +0 -0
  91. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/gorgias.md +0 -0
  92. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/gsheets.md +0 -0
  93. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/hubspot.md +0 -0
  94. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/isoc-pulse.md +0 -0
  95. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/kafka.md +0 -0
  96. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/kinesis.md +0 -0
  97. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/klaviyo.md +0 -0
  98. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/linear.md +0 -0
  99. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/linkedin_ads.md +0 -0
  100. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/mixpanel.md +0 -0
  101. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/mongodb.md +0 -0
  102. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/mssql.md +0 -0
  103. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/mysql.md +0 -0
  104. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/notion.md +0 -0
  105. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/oracle.md +0 -0
  106. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/personio.md +0 -0
  107. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/phantombuster.md +0 -0
  108. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/pinterest.md +0 -0
  109. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/pipedrive.md +0 -0
  110. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/postgres.md +0 -0
  111. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/quickbooks.md +0 -0
  112. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/redshift.md +0 -0
  113. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/s3.md +0 -0
  114. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/salesforce.md +0 -0
  115. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/sap-hana.md +0 -0
  116. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/sftp.md +0 -0
  117. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/shopify.md +0 -0
  118. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/slack.md +0 -0
  119. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/smartsheets.md +0 -0
  120. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/snowflake.md +0 -0
  121. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/solidgate.md +0 -0
  122. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/spanner.md +0 -0
  123. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/sqlite.md +0 -0
  124. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/stripe.md +0 -0
  125. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/tiktok-ads.md +0 -0
  126. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/trustpilot.md +0 -0
  127. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/zendesk.md +0 -0
  128. {ingestr-0.13.67 → ingestr-0.13.68}/docs/supported-sources/zoom.md +0 -0
  129. {ingestr-0.13.67 → ingestr-0.13.68}/docs/tutorials/load-kinesis-bigquery.md +0 -0
  130. {ingestr-0.13.67 → ingestr-0.13.68}/docs/tutorials/load-personio-duckdb.md +0 -0
  131. {ingestr-0.13.67 → ingestr-0.13.68}/docs/tutorials/load-stripe-postgres.md +0 -0
  132. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/conftest.py +0 -0
  133. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/.gitignore +0 -0
  134. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/adjust/__init__.py +0 -0
  135. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/adjust/adjust_helpers.py +0 -0
  136. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/airtable/__init__.py +0 -0
  137. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/applovin/__init__.py +0 -0
  138. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/appsflyer/__init__.py +0 -0
  139. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/appsflyer/client.py +0 -0
  140. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/appstore/__init__.py +0 -0
  141. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/appstore/client.py +0 -0
  142. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/appstore/errors.py +0 -0
  143. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/appstore/models.py +0 -0
  144. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/appstore/resources.py +0 -0
  145. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/arrow/__init__.py +0 -0
  146. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/asana_source/__init__.py +0 -0
  147. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/asana_source/helpers.py +0 -0
  148. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/asana_source/settings.py +0 -0
  149. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/attio/__init__.py +0 -0
  150. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/attio/helpers.py +0 -0
  151. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/blob.py +0 -0
  152. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/chess/__init__.py +0 -0
  153. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/chess/helpers.py +0 -0
  154. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/chess/settings.py +0 -0
  155. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/collector/spinner.py +0 -0
  156. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/dynamodb/__init__.py +0 -0
  157. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/elasticsearch/__init__.py +0 -0
  158. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/errors.py +0 -0
  159. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/facebook_ads/__init__.py +0 -0
  160. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/facebook_ads/exceptions.py +0 -0
  161. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/facebook_ads/helpers.py +0 -0
  162. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/facebook_ads/settings.py +0 -0
  163. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/facebook_ads/utils.py +0 -0
  164. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/factory.py +0 -0
  165. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/filesystem/__init__.py +0 -0
  166. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/filesystem/helpers.py +0 -0
  167. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/filesystem/readers.py +0 -0
  168. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/filters.py +0 -0
  169. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/frankfurter/__init__.py +0 -0
  170. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/frankfurter/helpers.py +0 -0
  171. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/freshdesk/__init__.py +0 -0
  172. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/freshdesk/freshdesk_client.py +0 -0
  173. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/freshdesk/settings.py +0 -0
  174. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/github/__init__.py +0 -0
  175. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/github/helpers.py +0 -0
  176. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/github/queries.py +0 -0
  177. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/github/settings.py +0 -0
  178. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_ads/__init__.py +0 -0
  179. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_ads/field.py +0 -0
  180. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_ads/metrics.py +0 -0
  181. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_ads/predicates.py +0 -0
  182. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_ads/reports.py +0 -0
  183. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_analytics/__init__.py +0 -0
  184. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_analytics/helpers.py +0 -0
  185. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_sheets/README.md +0 -0
  186. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_sheets/__init__.py +0 -0
  187. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
  188. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
  189. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
  190. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/gorgias/__init__.py +0 -0
  191. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/gorgias/helpers.py +0 -0
  192. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/http_client.py +0 -0
  193. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/hubspot/__init__.py +0 -0
  194. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/hubspot/helpers.py +0 -0
  195. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/hubspot/settings.py +0 -0
  196. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/isoc_pulse/__init__.py +0 -0
  197. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/kafka/__init__.py +0 -0
  198. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/kafka/helpers.py +0 -0
  199. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/kinesis/__init__.py +0 -0
  200. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/kinesis/helpers.py +0 -0
  201. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/klaviyo/__init__.py +0 -0
  202. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/klaviyo/client.py +0 -0
  203. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/klaviyo/helpers.py +0 -0
  204. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/linkedin_ads/__init__.py +0 -0
  205. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/linkedin_ads/dimension_time_enum.py +0 -0
  206. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/linkedin_ads/helpers.py +0 -0
  207. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/loader.py +0 -0
  208. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/mixpanel/__init__.py +0 -0
  209. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/mixpanel/client.py +0 -0
  210. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/mongodb/__init__.py +0 -0
  211. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/mongodb/helpers.py +0 -0
  212. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/notion/__init__.py +0 -0
  213. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/notion/helpers/__init__.py +0 -0
  214. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/notion/helpers/client.py +0 -0
  215. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/notion/helpers/database.py +0 -0
  216. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/notion/settings.py +0 -0
  217. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/partition.py +0 -0
  218. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/personio/__init__.py +0 -0
  219. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/personio/helpers.py +0 -0
  220. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/phantombuster/__init__.py +0 -0
  221. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/phantombuster/client.py +0 -0
  222. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/pinterest/__init__.py +0 -0
  223. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/pipedrive/__init__.py +0 -0
  224. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/pipedrive/helpers/__init__.py +0 -0
  225. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/pipedrive/helpers/custom_fields_munger.py +0 -0
  226. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/pipedrive/helpers/pages.py +0 -0
  227. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/pipedrive/settings.py +0 -0
  228. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/pipedrive/typing.py +0 -0
  229. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/quickbooks/__init__.py +0 -0
  230. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/resource.py +0 -0
  231. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/salesforce/__init__.py +0 -0
  232. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/salesforce/helpers.py +0 -0
  233. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/shopify/__init__.py +0 -0
  234. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/shopify/exceptions.py +0 -0
  235. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/shopify/helpers.py +0 -0
  236. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/shopify/settings.py +0 -0
  237. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/slack/__init__.py +0 -0
  238. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/slack/helpers.py +0 -0
  239. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/slack/settings.py +0 -0
  240. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/smartsheets/__init__.py +0 -0
  241. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/solidgate/__init__.py +0 -0
  242. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/solidgate/helpers.py +0 -0
  243. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/sql_database/__init__.py +0 -0
  244. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/sql_database/callbacks.py +0 -0
  245. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/stripe_analytics/__init__.py +0 -0
  246. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/stripe_analytics/settings.py +0 -0
  247. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/table_definition.py +0 -0
  248. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/telemetry/event.py +0 -0
  249. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/testdata/fakebqcredentials.json +0 -0
  250. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/tiktok_ads/__init__.py +0 -0
  251. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/tiktok_ads/tiktok_helpers.py +0 -0
  252. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/time.py +0 -0
  253. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/trustpilot/__init__.py +0 -0
  254. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/trustpilot/client.py +0 -0
  255. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/version.py +0 -0
  256. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/zendesk/__init__.py +0 -0
  257. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/zendesk/helpers/__init__.py +0 -0
  258. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/zendesk/helpers/api_helpers.py +0 -0
  259. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/zendesk/helpers/credentials.py +0 -0
  260. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/zendesk/helpers/talk_api.py +0 -0
  261. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/src/zendesk/settings.py +0 -0
  262. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/testdata/.gitignore +0 -0
  263. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/testdata/create_replace.csv +0 -0
  264. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/testdata/delete_insert_expected.csv +0 -0
  265. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/testdata/delete_insert_part1.csv +0 -0
  266. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/testdata/delete_insert_part2.csv +0 -0
  267. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/testdata/merge_expected.csv +0 -0
  268. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/testdata/merge_part1.csv +0 -0
  269. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/testdata/merge_part2.csv +0 -0
  270. {ingestr-0.13.67 → ingestr-0.13.68}/ingestr/tests/unit/test_smartsheets.py +0 -0
  271. {ingestr-0.13.67 → ingestr-0.13.68}/package-lock.json +0 -0
  272. {ingestr-0.13.67 → ingestr-0.13.68}/package.json +0 -0
  273. {ingestr-0.13.67 → ingestr-0.13.68}/pyproject.toml +0 -0
  274. {ingestr-0.13.67 → ingestr-0.13.68}/requirements-dev.txt +0 -0
  275. {ingestr-0.13.67 → ingestr-0.13.68}/resources/demo.gif +0 -0
  276. {ingestr-0.13.67 → ingestr-0.13.68}/resources/demo.tape +0 -0
  277. {ingestr-0.13.67 → ingestr-0.13.68}/resources/ingestr.svg +0 -0
  278. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/AMPM.yml +0 -0
  279. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Acronyms.yml +0 -0
  280. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Colons.yml +0 -0
  281. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Contractions.yml +0 -0
  282. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/DateFormat.yml +0 -0
  283. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Ellipses.yml +0 -0
  284. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/EmDash.yml +0 -0
  285. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Exclamation.yml +0 -0
  286. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/FirstPerson.yml +0 -0
  287. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Gender.yml +0 -0
  288. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/GenderBias.yml +0 -0
  289. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/HeadingPunctuation.yml +0 -0
  290. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Headings.yml +0 -0
  291. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Latin.yml +0 -0
  292. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/LyHyphens.yml +0 -0
  293. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/OptionalPlurals.yml +0 -0
  294. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Ordinal.yml +0 -0
  295. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/OxfordComma.yml +0 -0
  296. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Parens.yml +0 -0
  297. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Passive.yml +0 -0
  298. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Periods.yml +0 -0
  299. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Quotes.yml +0 -0
  300. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Ranges.yml +0 -0
  301. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Semicolons.yml +0 -0
  302. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Slang.yml +0 -0
  303. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Spacing.yml +0 -0
  304. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Spelling.yml +0 -0
  305. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Units.yml +0 -0
  306. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/We.yml +0 -0
  307. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/Will.yml +0 -0
  308. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/WordList.yml +0 -0
  309. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/meta.json +0 -0
  310. {ingestr-0.13.67 → ingestr-0.13.68}/styles/Google/vocab.txt +0 -0
  311. {ingestr-0.13.67 → ingestr-0.13.68}/styles/bruin/Ingestr.yml +0 -0
  312. {ingestr-0.13.67 → ingestr-0.13.68}/styles/config/vocabularies/bruin/accept.txt +0 -0
  313. {ingestr-0.13.67 → ingestr-0.13.68}/test.env.template +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ingestr
3
- Version: 0.13.67
3
+ Version: 0.13.68
4
4
  Summary: ingestr is a command-line application that ingests data from various sources and stores them in any database.
5
5
  Project-URL: Homepage, https://github.com/bruin-data/ingestr
6
6
  Project-URL: Issues, https://github.com/bruin-data/ingestr/issues
@@ -48,7 +48,7 @@ Requires-Dist: dataclasses-json==0.6.7
48
48
  Requires-Dist: decorator==5.2.1
49
49
  Requires-Dist: deprecation==2.1.0
50
50
  Requires-Dist: dlt-cratedb==0.0.1
51
- Requires-Dist: dlt==1.10.0
51
+ Requires-Dist: dlt==1.11.0
52
52
  Requires-Dist: dnspython==2.7.0
53
53
  Requires-Dist: duckdb-engine==0.17.0
54
54
  Requires-Dist: duckdb==1.2.1
@@ -455,7 +455,7 @@ def ingest(
455
455
 
456
456
  column_hints[key]["primary_key"] = True
457
457
 
458
- pipeline = dlt.pipeline(
458
+ pipeline = dlt.pipeline( # type: ignore
459
459
  pipeline_name=m.hexdigest(),
460
460
  destination=dlt_dest,
461
461
  progress=progressInstance,
@@ -113,4 +113,5 @@ def get_data(
113
113
  df = pd.read_csv(response_url)
114
114
  df["Date"] = pd.to_datetime(df["Date"])
115
115
  df["partition_date"] = df["Date"].dt.date
116
+ df["platform"] = platform
116
117
  return df
@@ -0,0 +1 @@
1
+ version = "v0.13.68"
@@ -90,7 +90,7 @@ class BigQueryDestination:
90
90
 
91
91
  return dlt.destinations.bigquery(
92
92
  credentials=credentials, # type: ignore
93
- location=location,
93
+ location=location, # type: ignore
94
94
  project_id=project_id,
95
95
  **kwargs,
96
96
  )
@@ -398,7 +398,7 @@ class AthenaDestination:
398
398
 
399
399
  return dlt.destinations.athena(
400
400
  query_result_bucket=query_result_path,
401
- athena_work_group=source_params.get("workgroup", [None])[0],
401
+ athena_work_group=source_params.get("workgroup", [None])[0], # type: ignore
402
402
  credentials=AwsCredentials(
403
403
  aws_access_key_id=access_key_id, # type: ignore
404
404
  aws_secret_access_key=secret_access_key, # type: ignore
@@ -3,7 +3,7 @@ from typing import Any, Dict, Iterable, Iterator
3
3
  import dlt
4
4
  import pendulum
5
5
 
6
- from .helpers import _paginate, _normalize_issue, _normalize_team
6
+ from .helpers import _normalize_issue, _normalize_team, _paginate
7
7
 
8
8
  ISSUES_QUERY = """
9
9
  query Issues($cursor: String) {
@@ -143,13 +143,15 @@ def linear_source(
143
143
  yield item
144
144
 
145
145
  @dlt.resource(name="teams", primary_key="id", write_disposition="merge")
146
- def teams( updated_at: dlt.sources.incremental[str] = dlt.sources.incremental(
146
+ def teams(
147
+ updated_at: dlt.sources.incremental[str] = dlt.sources.incremental(
147
148
  "updatedAt",
148
149
  initial_value=start_date.isoformat(),
149
150
  end_value=end_date.isoformat() if end_date else None,
150
151
  range_start="closed",
151
152
  range_end="closed",
152
- ),) -> Iterator[Dict[str, Any]]:
153
+ ),
154
+ ) -> Iterator[Dict[str, Any]]:
153
155
  print(start_date)
154
156
  if updated_at.last_value:
155
157
  current_start_date = pendulum.parse(updated_at.last_value)
@@ -1,10 +1,10 @@
1
- import json
2
1
  from typing import Any, Dict, Iterator, Optional
3
2
 
4
3
  import requests
5
4
 
6
5
  LINEAR_GRAPHQL_ENDPOINT = "https://api.linear.app/graphql"
7
6
 
7
+
8
8
  def _graphql(
9
9
  api_key: str, query: str, variables: Optional[Dict[str, Any]] = None
10
10
  ) -> Dict[str, Any]:
@@ -20,6 +20,7 @@ def _graphql(
20
20
  raise ValueError(str(payload["errors"]))
21
21
  return payload["data"]
22
22
 
23
+
23
24
  def _paginate(api_key: str, query: str, root: str) -> Iterator[Dict[str, Any]]:
24
25
  cursor: Optional[str] = None
25
26
  while True:
@@ -30,6 +31,7 @@ def _paginate(api_key: str, query: str, root: str) -> Iterator[Dict[str, Any]]:
30
31
  break
31
32
  cursor = data["pageInfo"]["endCursor"]
32
33
 
34
+
33
35
  def _normalize_issue(item: Dict[str, Any]) -> Dict[str, Any]:
34
36
  field_mapping = {
35
37
  "assignee": "assignee_id",
@@ -45,16 +47,26 @@ def _normalize_issue(item: Dict[str, Any]) -> Dict[str, Any]:
45
47
  else:
46
48
  item[value] = None
47
49
  del item[key]
48
- json_fields = ["comments", "subscribers", "attachments", "labels", "subtasks","projects", "memberships", "members"]
50
+ json_fields = [
51
+ "comments",
52
+ "subscribers",
53
+ "attachments",
54
+ "labels",
55
+ "subtasks",
56
+ "projects",
57
+ "memberships",
58
+ "members",
59
+ ]
49
60
  for field in json_fields:
50
61
  if item.get(field):
51
62
  item[f"{field}"] = item[field].get("nodes", [])
52
-
63
+
53
64
  return item
54
65
 
66
+
55
67
  def _normalize_team(item: Dict[str, Any]) -> Dict[str, Any]:
56
68
  json_fields = ["memberships", "members", "projects"]
57
69
  for field in json_fields:
58
70
  if item.get(field):
59
71
  item[f"{field}"] = item[field].get("nodes", [])
60
- return item
72
+ return item
@@ -76,6 +76,27 @@ class SqlSource:
76
76
  if uri.startswith("mysql://"):
77
77
  uri = uri.replace("mysql://", "mysql+pymysql://")
78
78
 
79
+ # Process Snowflake private key authentication
80
+ if uri.startswith("snowflake://"):
81
+ parsed_uri = urlparse(uri)
82
+ query_params = parse_qs(parsed_uri.query)
83
+
84
+ if "private_key" in query_params:
85
+ from dlt.common.libs.cryptography import decode_private_key
86
+
87
+ private_key = query_params["private_key"][0]
88
+ passphrase = query_params.get("private_key_passphrase", [None])[0]
89
+ decoded_key = decode_private_key(private_key, passphrase)
90
+
91
+ query_params["private_key"] = [base64.b64encode(decoded_key).decode()]
92
+ if "private_key_passphrase" in query_params:
93
+ del query_params["private_key_passphrase"]
94
+
95
+ # Rebuild URI
96
+ uri = parsed_uri._replace(
97
+ query=urlencode(query_params, doseq=True)
98
+ ).geturl()
99
+
79
100
  # clickhouse://<username>:<password>@<host>:<port>?secure=<secure>
80
101
  if uri.startswith("clickhouse://"):
81
102
  parsed_uri = urlparse(uri)
@@ -139,7 +160,6 @@ class SqlSource:
139
160
  return engine.execution_options(read_only=True)
140
161
 
141
162
  engine_adapter_callback = eng_callback
142
-
143
163
  from dlt.common.libs.sql_alchemy import (
144
164
  Engine,
145
165
  MetaData,
@@ -2,7 +2,6 @@
2
2
 
3
3
  import asyncio
4
4
  import math
5
- from concurrent.futures import ThreadPoolExecutor, as_completed
6
5
  from datetime import datetime, timedelta
7
6
  from typing import Any, Dict, Iterable, List, Optional, Union
8
7
 
@@ -42,14 +42,14 @@ def zoom_source(
42
42
  end_dt = pendulum.now("UTC")
43
43
  else:
44
44
  end_dt = pendulum.parse(datetime.end_value)
45
-
45
+
46
46
  base_params: Dict[str, Any] = {
47
47
  "type": "scheduled",
48
48
  "page_size": 300,
49
49
  "from": start_dt.to_date_string(),
50
50
  "to": end_dt.to_date_string(),
51
51
  }
52
-
52
+
53
53
  for user in client.get_users():
54
54
  user_id = user["id"]
55
55
  yield from client.get_meetings(user_id, base_params)
@@ -62,7 +62,7 @@ class ZoomClient:
62
62
  break
63
63
  params["next_page_token"] = token
64
64
 
65
- #https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetings
65
+ # https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetings
66
66
  def get_meetings(
67
67
  self, user_id: str, params: Dict[str, Any]
68
68
  ) -> Iterator[Dict[str, Any]]:
@@ -2,7 +2,7 @@ asana==3.2.3
2
2
  confluent-kafka==2.8.0
3
3
  databricks-sql-connector==2.9.3
4
4
  dataclasses-json==0.6.7
5
- dlt==1.10.0
5
+ dlt==1.11.0
6
6
  dlt-cratedb>=0.0.1
7
7
  duckdb_engine==0.17.0
8
8
  duckdb==1.2.1
@@ -97,7 +97,7 @@ decorator==5.2.1
97
97
  # via gcsfs
98
98
  deprecation==2.1.0
99
99
  # via rudder-sdk-python
100
- dlt==1.10.0
100
+ dlt==1.11.0
101
101
  # via
102
102
  # -r requirements.in
103
103
  # dlt-cratedb
@@ -97,7 +97,7 @@ decorator==5.2.1
97
97
  # via gcsfs
98
98
  deprecation==2.1.0
99
99
  # via rudder-sdk-python
100
- dlt==1.10.0
100
+ dlt==1.11.0
101
101
  # via
102
102
  # -r requirements.in
103
103
  # dlt-cratedb
@@ -1 +0,0 @@
1
- version = "v0.13.67"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes