mage-ai 0.9.75__py3-none-any.whl → 0.9.77__py3-none-any.whl

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.

Potentially problematic release.


This version of mage-ai might be problematic. Click here for more details.

Files changed (226) hide show
  1. mage_ai/api/policies/PipelineSchedulePolicy.py +1 -0
  2. mage_ai/api/presenters/PipelineSchedulePresenter.py +11 -2
  3. mage_ai/api/resources/GitFileResource.py +8 -0
  4. mage_ai/api/resources/PipelineScheduleResource.py +11 -3
  5. mage_ai/api/resources/PipelineTriggerResource.py +3 -1
  6. mage_ai/api/resources/SessionResource.py +2 -2
  7. mage_ai/api/resources/SyncResource.py +1 -1
  8. mage_ai/api/resources/UserResource.py +1 -1
  9. mage_ai/cli/main.py +6 -1
  10. mage_ai/data_integrations/destinations/constants.py +2 -0
  11. mage_ai/data_integrations/sources/constants.py +2 -0
  12. mage_ai/data_preparation/executors/block_executor.py +8 -3
  13. mage_ai/data_preparation/executors/pipeline_executor.py +35 -19
  14. mage_ai/data_preparation/models/block/__init__.py +29 -23
  15. mage_ai/data_preparation/models/block/dbt/dbt_adapter.py +20 -8
  16. mage_ai/data_preparation/models/block/dynamic/constants.py +0 -1
  17. mage_ai/data_preparation/models/block/dynamic/counter.py +1 -3
  18. mage_ai/data_preparation/models/block/outputs.py +1 -1
  19. mage_ai/data_preparation/models/block/r/__init__.py +16 -5
  20. mage_ai/data_preparation/models/block/sql/__init__.py +2 -0
  21. mage_ai/data_preparation/models/block/sql/mssql.py +8 -0
  22. mage_ai/data_preparation/models/block/sql/utils/shared.py +6 -2
  23. mage_ai/data_preparation/models/constants.py +3 -0
  24. mage_ai/data_preparation/models/pipeline.py +1 -1
  25. mage_ai/data_preparation/storage/local_storage.py +4 -1
  26. mage_ai/data_preparation/templates/constants.py +7 -0
  27. mage_ai/data_preparation/templates/data_loaders/airtable.py +28 -0
  28. mage_ai/data_preparation/templates/repo/io_config.yaml +2 -0
  29. mage_ai/io/airtable.py +104 -0
  30. mage_ai/io/base.py +1 -0
  31. mage_ai/io/bigquery.py +36 -0
  32. mage_ai/io/config.py +6 -0
  33. mage_ai/io/mssql.py +21 -9
  34. mage_ai/io/mysql.py +6 -1
  35. mage_ai/io/postgres.py +3 -0
  36. mage_ai/io/redshift.py +13 -0
  37. mage_ai/io/sql.py +1 -0
  38. mage_ai/orchestration/db/__init__.py +20 -0
  39. mage_ai/orchestration/db/migrations/versions/39d36f1dab73_create_genericjob.py +47 -0
  40. mage_ai/orchestration/db/models/oauth.py +2 -1
  41. mage_ai/orchestration/db/models/schedules.py +107 -5
  42. mage_ai/orchestration/db/models/secrets.py +11 -1
  43. mage_ai/orchestration/job_manager.py +19 -0
  44. mage_ai/orchestration/metrics/pipeline_run.py +1 -1
  45. mage_ai/orchestration/notification/sender.py +2 -2
  46. mage_ai/orchestration/pipeline_scheduler_original.py +150 -6
  47. mage_ai/orchestration/pipeline_scheduler_project_platform.py +4 -5
  48. mage_ai/orchestration/queue/config.py +11 -1
  49. mage_ai/orchestration/queue/process_queue.py +2 -0
  50. mage_ai/orchestration/utils/distributed_lock.py +8 -1
  51. mage_ai/server/api/base.py +41 -0
  52. mage_ai/server/api/constants.py +1 -0
  53. mage_ai/server/api/triggers.py +9 -0
  54. mage_ai/server/constants.py +1 -1
  55. mage_ai/server/frontend_dist/404.html +2 -2
  56. mage_ai/server/frontend_dist/_next/static/chunks/449-5e2253c6aba42557.js +1 -0
  57. mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-782dd4a6b13e1c42.js +2 -0
  58. mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users-5db54821a3059c69.js +1 -0
  59. mage_ai/server/frontend_dist/_next/static/chunks/pages/overview-f65416f6dbe30ad3.js +1 -0
  60. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/settings-03d9bca3bc5e6088.js +1 -0
  61. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-d25d07db166cbb04.js +1 -0
  62. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-fa61dc6c1370e6a5.js +1 -0
  63. mage_ai/server/frontend_dist/_next/static/chunks/{webpack-0bc44da590c7cf85.js → webpack-b9a067f3bd0a3a05.js} +1 -1
  64. mage_ai/server/frontend_dist/_next/static/{38-PtskJFUTYUpRhT1qF_ → qR0jauUABqPaFMjUsYeoG}/_buildManifest.js +1 -1
  65. mage_ai/server/frontend_dist/block-layout.html +2 -2
  66. mage_ai/server/frontend_dist/compute.html +2 -2
  67. mage_ai/server/frontend_dist/files.html +2 -2
  68. mage_ai/server/frontend_dist/global-data-products/[...slug].html +2 -2
  69. mage_ai/server/frontend_dist/global-data-products.html +2 -2
  70. mage_ai/server/frontend_dist/global-hooks/[...slug].html +2 -2
  71. mage_ai/server/frontend_dist/global-hooks.html +2 -2
  72. mage_ai/server/frontend_dist/index.html +2 -2
  73. mage_ai/server/frontend_dist/manage/files.html +2 -2
  74. mage_ai/server/frontend_dist/manage/overview.html +2 -2
  75. mage_ai/server/frontend_dist/manage/pipeline-runs.html +2 -2
  76. mage_ai/server/frontend_dist/manage/settings.html +2 -2
  77. mage_ai/server/frontend_dist/manage/users/[user].html +2 -2
  78. mage_ai/server/frontend_dist/manage/users/new.html +2 -2
  79. mage_ai/server/frontend_dist/manage/users.html +2 -2
  80. mage_ai/server/frontend_dist/manage.html +2 -2
  81. mage_ai/server/frontend_dist/oauth.html +3 -3
  82. mage_ai/server/frontend_dist/overview.html +2 -2
  83. mage_ai/server/frontend_dist/pipeline-runs.html +2 -2
  84. mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills/[...slug].html +2 -2
  85. mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills.html +2 -2
  86. mage_ai/server/frontend_dist/pipelines/[pipeline]/dashboard.html +2 -2
  87. mage_ai/server/frontend_dist/pipelines/[pipeline]/edit.html +2 -2
  88. mage_ai/server/frontend_dist/pipelines/[pipeline]/logs.html +2 -2
  89. mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runs.html +2 -2
  90. mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runtime.html +2 -2
  91. mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors.html +2 -2
  92. mage_ai/server/frontend_dist/pipelines/[pipeline]/runs/[run].html +2 -2
  93. mage_ai/server/frontend_dist/pipelines/[pipeline]/runs.html +2 -2
  94. mage_ai/server/frontend_dist/pipelines/[pipeline]/settings.html +2 -2
  95. mage_ai/server/frontend_dist/pipelines/[pipeline]/syncs.html +2 -2
  96. mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers/[...slug].html +2 -2
  97. mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers.html +2 -2
  98. mage_ai/server/frontend_dist/pipelines/[pipeline].html +2 -2
  99. mage_ai/server/frontend_dist/pipelines.html +2 -2
  100. mage_ai/server/frontend_dist/platform/global-hooks/[...slug].html +2 -2
  101. mage_ai/server/frontend_dist/platform/global-hooks.html +2 -2
  102. mage_ai/server/frontend_dist/settings/account/profile.html +2 -2
  103. mage_ai/server/frontend_dist/settings/platform/preferences.html +2 -2
  104. mage_ai/server/frontend_dist/settings/platform/settings.html +2 -2
  105. mage_ai/server/frontend_dist/settings/workspace/permissions/[...slug].html +2 -2
  106. mage_ai/server/frontend_dist/settings/workspace/permissions.html +2 -2
  107. mage_ai/server/frontend_dist/settings/workspace/preferences.html +2 -2
  108. mage_ai/server/frontend_dist/settings/workspace/roles/[...slug].html +2 -2
  109. mage_ai/server/frontend_dist/settings/workspace/roles.html +2 -2
  110. mage_ai/server/frontend_dist/settings/workspace/sync-data.html +2 -2
  111. mage_ai/server/frontend_dist/settings/workspace/users/[...slug].html +2 -2
  112. mage_ai/server/frontend_dist/settings/workspace/users.html +2 -2
  113. mage_ai/server/frontend_dist/settings.html +2 -2
  114. mage_ai/server/frontend_dist/sign-in.html +5 -5
  115. mage_ai/server/frontend_dist/templates/[...slug].html +2 -2
  116. mage_ai/server/frontend_dist/templates.html +2 -2
  117. mage_ai/server/frontend_dist/terminal.html +2 -2
  118. mage_ai/server/frontend_dist/test.html +2 -2
  119. mage_ai/server/frontend_dist/triggers.html +2 -2
  120. mage_ai/server/frontend_dist/v2/canvas.html +2 -2
  121. mage_ai/server/frontend_dist/v2.html +2 -2
  122. mage_ai/server/frontend_dist/version-control.html +2 -2
  123. mage_ai/server/frontend_dist_base_path_template/404.html +2 -2
  124. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/449-5e2253c6aba42557.js +1 -0
  125. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/_app-ee5e328aaf51c698.js +2 -0
  126. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/users-5db54821a3059c69.js +1 -0
  127. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/overview-f65416f6dbe30ad3.js +1 -0
  128. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/settings-03d9bca3bc5e6088.js +1 -0
  129. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines-d25d07db166cbb04.js +1 -0
  130. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/users-fa61dc6c1370e6a5.js +1 -0
  131. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/{webpack-12ad70eb5c31aa92.js → webpack-5f4be622608d9267.js} +1 -1
  132. mage_ai/server/frontend_dist_base_path_template/_next/static/{dxnSzgIvSG4Ke5LM-tPQX → iCySon3_GCldnbC5U7C-s}/_buildManifest.js +1 -1
  133. mage_ai/server/frontend_dist_base_path_template/block-layout.html +2 -2
  134. mage_ai/server/frontend_dist_base_path_template/compute.html +2 -2
  135. mage_ai/server/frontend_dist_base_path_template/files.html +2 -2
  136. mage_ai/server/frontend_dist_base_path_template/global-data-products/[...slug].html +2 -2
  137. mage_ai/server/frontend_dist_base_path_template/global-data-products.html +2 -2
  138. mage_ai/server/frontend_dist_base_path_template/global-hooks/[...slug].html +2 -2
  139. mage_ai/server/frontend_dist_base_path_template/global-hooks.html +2 -2
  140. mage_ai/server/frontend_dist_base_path_template/index.html +2 -2
  141. mage_ai/server/frontend_dist_base_path_template/manage/files.html +2 -2
  142. mage_ai/server/frontend_dist_base_path_template/manage/overview.html +2 -2
  143. mage_ai/server/frontend_dist_base_path_template/manage/pipeline-runs.html +2 -2
  144. mage_ai/server/frontend_dist_base_path_template/manage/settings.html +2 -2
  145. mage_ai/server/frontend_dist_base_path_template/manage/users/[user].html +2 -2
  146. mage_ai/server/frontend_dist_base_path_template/manage/users/new.html +2 -2
  147. mage_ai/server/frontend_dist_base_path_template/manage/users.html +2 -2
  148. mage_ai/server/frontend_dist_base_path_template/manage.html +2 -2
  149. mage_ai/server/frontend_dist_base_path_template/oauth.html +3 -3
  150. mage_ai/server/frontend_dist_base_path_template/overview.html +2 -2
  151. mage_ai/server/frontend_dist_base_path_template/pipeline-runs.html +2 -2
  152. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/backfills/[...slug].html +2 -2
  153. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/backfills.html +2 -2
  154. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/dashboard.html +2 -2
  155. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/edit.html +2 -2
  156. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/logs.html +2 -2
  157. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors/block-runs.html +2 -2
  158. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors/block-runtime.html +2 -2
  159. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors.html +2 -2
  160. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/runs/[run].html +2 -2
  161. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/runs.html +2 -2
  162. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/settings.html +2 -2
  163. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/syncs.html +2 -2
  164. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/triggers/[...slug].html +2 -2
  165. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/triggers.html +2 -2
  166. mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline].html +2 -2
  167. mage_ai/server/frontend_dist_base_path_template/pipelines.html +2 -2
  168. mage_ai/server/frontend_dist_base_path_template/platform/global-hooks/[...slug].html +2 -2
  169. mage_ai/server/frontend_dist_base_path_template/platform/global-hooks.html +2 -2
  170. mage_ai/server/frontend_dist_base_path_template/settings/account/profile.html +2 -2
  171. mage_ai/server/frontend_dist_base_path_template/settings/platform/preferences.html +2 -2
  172. mage_ai/server/frontend_dist_base_path_template/settings/platform/settings.html +2 -2
  173. mage_ai/server/frontend_dist_base_path_template/settings/workspace/permissions/[...slug].html +2 -2
  174. mage_ai/server/frontend_dist_base_path_template/settings/workspace/permissions.html +2 -2
  175. mage_ai/server/frontend_dist_base_path_template/settings/workspace/preferences.html +2 -2
  176. mage_ai/server/frontend_dist_base_path_template/settings/workspace/roles/[...slug].html +2 -2
  177. mage_ai/server/frontend_dist_base_path_template/settings/workspace/roles.html +2 -2
  178. mage_ai/server/frontend_dist_base_path_template/settings/workspace/sync-data.html +2 -2
  179. mage_ai/server/frontend_dist_base_path_template/settings/workspace/users/[...slug].html +2 -2
  180. mage_ai/server/frontend_dist_base_path_template/settings/workspace/users.html +2 -2
  181. mage_ai/server/frontend_dist_base_path_template/settings.html +2 -2
  182. mage_ai/server/frontend_dist_base_path_template/sign-in.html +5 -5
  183. mage_ai/server/frontend_dist_base_path_template/templates/[...slug].html +2 -2
  184. mage_ai/server/frontend_dist_base_path_template/templates.html +2 -2
  185. mage_ai/server/frontend_dist_base_path_template/terminal.html +2 -2
  186. mage_ai/server/frontend_dist_base_path_template/test.html +2 -2
  187. mage_ai/server/frontend_dist_base_path_template/triggers.html +2 -2
  188. mage_ai/server/frontend_dist_base_path_template/v2/canvas.html +2 -2
  189. mage_ai/server/frontend_dist_base_path_template/v2.html +2 -2
  190. mage_ai/server/frontend_dist_base_path_template/version-control.html +2 -2
  191. mage_ai/server/scheduler_manager.py +2 -0
  192. mage_ai/server/terminal_server.py +3 -0
  193. mage_ai/settings/server.py +4 -0
  194. mage_ai/streaming/sources/kafka.py +2 -1
  195. mage_ai/tests/data_preparation/executors/test_block_executor.py +3 -3
  196. mage_ai/tests/data_preparation/models/block/dynamic/test_counter.py +1 -3
  197. mage_ai/tests/data_preparation/models/test_variable.py +2 -0
  198. mage_ai/tests/io/create_table/test_postgresql.py +3 -2
  199. mage_ai/tests/orchestration/notification/test_sender.py +5 -1
  200. mage_ai/tests/streaming/sources/test_kafka.py +2 -2
  201. mage_ai/usage_statistics/logger.py +99 -15
  202. mage_ai-0.9.77.dist-info/METADATA +356 -0
  203. {mage_ai-0.9.75.dist-info → mage_ai-0.9.77.dist-info}/RECORD +211 -208
  204. {mage_ai-0.9.75.dist-info → mage_ai-0.9.77.dist-info}/WHEEL +1 -1
  205. mage_ai/server/frontend_dist/_next/static/chunks/449-f689774546860ca4.js +0 -1
  206. mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-13bf3b7dcef50c29.js +0 -2
  207. mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users-b99379d0aa6a8c25.js +0 -1
  208. mage_ai/server/frontend_dist/_next/static/chunks/pages/overview-e51cd04bd4d1fffe.js +0 -1
  209. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/settings-0abf8a1b7243f93b.js +0 -1
  210. mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-38187954b6ec4b40.js +0 -1
  211. mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-3ee783f5139c76a1.js +0 -1
  212. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/449-f689774546860ca4.js +0 -1
  213. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/_app-0392ef723ea2c6f8.js +0 -2
  214. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/users-b99379d0aa6a8c25.js +0 -1
  215. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/overview-e51cd04bd4d1fffe.js +0 -1
  216. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/settings-0abf8a1b7243f93b.js +0 -1
  217. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines-38187954b6ec4b40.js +0 -1
  218. mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/users-3ee783f5139c76a1.js +0 -1
  219. mage_ai-0.9.75.dist-info/METADATA +0 -377
  220. /mage_ai/server/frontend_dist/_next/static/chunks/pages/{_app-13bf3b7dcef50c29.js.LICENSE.txt → _app-782dd4a6b13e1c42.js.LICENSE.txt} +0 -0
  221. /mage_ai/server/frontend_dist/_next/static/{38-PtskJFUTYUpRhT1qF_ → qR0jauUABqPaFMjUsYeoG}/_ssgManifest.js +0 -0
  222. /mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/{_app-0392ef723ea2c6f8.js.LICENSE.txt → _app-ee5e328aaf51c698.js.LICENSE.txt} +0 -0
  223. /mage_ai/server/frontend_dist_base_path_template/_next/static/{dxnSzgIvSG4Ke5LM-tPQX → iCySon3_GCldnbC5U7C-s}/_ssgManifest.js +0 -0
  224. {mage_ai-0.9.75.dist-info → mage_ai-0.9.77.dist-info}/entry_points.txt +0 -0
  225. {mage_ai-0.9.75.dist-info → mage_ai-0.9.77.dist-info/licenses}/LICENSE +0 -0
  226. {mage_ai-0.9.75.dist-info → mage_ai-0.9.77.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,356 @@
1
+ Metadata-Version: 2.4
2
+ Name: mage-ai
3
+ Version: 0.9.77
4
+ Summary: Mage is a tool for building and deploying data pipelines.
5
+ Home-page: https://github.com/mage-ai/mage-ai
6
+ Author: Mage
7
+ Author-email: eng@mage.ai
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: Apache Software License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.9
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: cachetools
15
+ Requires-Dist: Faker==4.14.0
16
+ Requires-Dist: GitPython==3.1.41
17
+ Requires-Dist: Jinja2==3.1.3
18
+ Requires-Dist: Pillow==10.3.0
19
+ Requires-Dist: PyGithub==1.59.0
20
+ Requires-Dist: PyJWT==2.6.0
21
+ Requires-Dist: aiofiles==22.1.0
22
+ Requires-Dist: aiohttp==3.10.0
23
+ Requires-Dist: alembic>=1.7.5
24
+ Requires-Dist: bcrypt==4.0.1
25
+ Requires-Dist: croniter==1.3.7
26
+ Requires-Dist: cryptography==42.0.4
27
+ Requires-Dist: dask>=2022.2.0
28
+ Requires-Dist: datadog==0.44.0
29
+ Requires-Dist: freezegun==1.2.2
30
+ Requires-Dist: great-expectations==0.18.12
31
+ Requires-Dist: httpx==0.25.0
32
+ Requires-Dist: inflection==0.5.1
33
+ Requires-Dist: ipykernel==6.15.0
34
+ Requires-Dist: ipython==8.10.0
35
+ Requires-Dist: itsdangerous~=1.1.0
36
+ Requires-Dist: joblib>=1.1.0
37
+ Requires-Dist: jupyter-server==2.14.1
38
+ Requires-Dist: jupyter_client==7.4.4
39
+ Requires-Dist: ldap3==2.9.1
40
+ Requires-Dist: memory_profiler
41
+ Requires-Dist: newrelic==8.8.0
42
+ Requires-Dist: numpy>=1.22.0
43
+ Requires-Dist: pandas>=1.3.0
44
+ Requires-Dist: polars==1.29.0
45
+ Requires-Dist: protobuf>=4.25.0
46
+ Requires-Dist: psutil==5.9.8
47
+ Requires-Dist: pyairtable>=2.3.3
48
+ Requires-Dist: pyarrow>=14.0.1
49
+ Requires-Dist: python-dateutil==2.8.2
50
+ Requires-Dist: pytz>=2022.2.1
51
+ Requires-Dist: pyyaml~=6.0
52
+ Requires-Dist: redis~=5.0.1
53
+ Requires-Dist: requests~=2.31.0
54
+ Requires-Dist: ruamel.yaml==0.17.17
55
+ Requires-Dist: scikit-learn>=1.0
56
+ Requires-Dist: sentry-sdk==1.19.1
57
+ Requires-Dist: setuptools==70.0.0
58
+ Requires-Dist: simplejson
59
+ Requires-Dist: six>=1.15.0
60
+ Requires-Dist: sqlalchemy<2.0.0,>=1.4.20
61
+ Requires-Dist: sqlglot[rs]
62
+ Requires-Dist: terminado==0.17.1
63
+ Requires-Dist: thefuzz[speedup]==0.19.0
64
+ Requires-Dist: tornado==6.4.2
65
+ Requires-Dist: typer[all]==0.9.0
66
+ Requires-Dist: typing_extensions==4.10.0
67
+ Requires-Dist: watchdog==4.0.0
68
+ Requires-Dist: Werkzeug==3.0.3
69
+ Provides-Extra: ai
70
+ Requires-Dist: astor>=0.8.1; extra == "ai"
71
+ Requires-Dist: langchain==0.1.6; extra == "ai"
72
+ Requires-Dist: langchain_community<0.0.20; extra == "ai"
73
+ Requires-Dist: openai>=1.0.0; extra == "ai"
74
+ Provides-Extra: airtable
75
+ Requires-Dist: pyairtable>=2.3.3; extra == "airtable"
76
+ Provides-Extra: azure
77
+ Requires-Dist: azure-eventhub==5.11.2; extra == "azure"
78
+ Requires-Dist: azure-identity==1.12.0; extra == "azure"
79
+ Requires-Dist: azure-keyvault-secrets==4.6.0; extra == "azure"
80
+ Requires-Dist: azure-keyvault-certificates==4.6.0; extra == "azure"
81
+ Requires-Dist: azure-mgmt-containerinstance==10.1.0; extra == "azure"
82
+ Requires-Dist: azure-storage-blob==12.14.1; extra == "azure"
83
+ Provides-Extra: bigquery
84
+ Requires-Dist: google-cloud-bigquery~=3.0; extra == "bigquery"
85
+ Requires-Dist: db-dtypes==1.0.5; extra == "bigquery"
86
+ Provides-Extra: chroma
87
+ Requires-Dist: chromadb>=0.4.17; extra == "chroma"
88
+ Provides-Extra: clickhouse
89
+ Requires-Dist: clickhouse-connect~=0.6.23; extra == "clickhouse"
90
+ Provides-Extra: dbt
91
+ Requires-Dist: dbt-adapters==1.8.0; extra == "dbt"
92
+ Requires-Dist: dbt-bigquery==1.8.3; extra == "dbt"
93
+ Requires-Dist: dbt-clickhouse==1.8.5; extra == "dbt"
94
+ Requires-Dist: dbt-core==1.8.7; extra == "dbt"
95
+ Requires-Dist: dbt-duckdb==1.8.4; extra == "dbt"
96
+ Requires-Dist: dbt-postgres==1.8.2; extra == "dbt"
97
+ Requires-Dist: dbt-redshift==1.8.1; extra == "dbt"
98
+ Requires-Dist: dbt-snowflake==1.8.4; extra == "dbt"
99
+ Requires-Dist: dbt-spark==1.8.0; extra == "dbt"
100
+ Requires-Dist: dbt-sqlserver==1.8.4; extra == "dbt"
101
+ Requires-Dist: dbt-synapse==1.8.2; extra == "dbt"
102
+ Requires-Dist: dbt-trino==1.8.4; extra == "dbt"
103
+ Requires-Dist: trino~=0.326; extra == "dbt"
104
+ Provides-Extra: google-cloud-storage
105
+ Requires-Dist: google-cloud-storage==2.5.0; extra == "google-cloud-storage"
106
+ Requires-Dist: gspread==5.7.2; extra == "google-cloud-storage"
107
+ Provides-Extra: hdf5
108
+ Requires-Dist: tables==3.7.0; python_version < "3.11" and extra == "hdf5"
109
+ Requires-Dist: tables==3.10.1; python_version >= "3.11" and extra == "hdf5"
110
+ Provides-Extra: mysql
111
+ Requires-Dist: mysql-connector-python~=8.4.0; python_version < "3.11" and extra == "mysql"
112
+ Requires-Dist: mysql-connector-python~=9.0.0; python_version >= "3.11" and extra == "mysql"
113
+ Provides-Extra: oracle
114
+ Requires-Dist: oracledb==1.3.1; python_version < "3.12" and extra == "oracle"
115
+ Requires-Dist: oracledb==2.4.1; python_version >= "3.12" and extra == "oracle"
116
+ Provides-Extra: postgres
117
+ Requires-Dist: psycopg2==2.9.3; extra == "postgres"
118
+ Requires-Dist: psycopg2-binary==2.9.3; extra == "postgres"
119
+ Requires-Dist: sshtunnel==0.4.0; extra == "postgres"
120
+ Provides-Extra: qdrant
121
+ Requires-Dist: qdrant-client==1.6.9; extra == "qdrant"
122
+ Requires-Dist: sentence-transformers==2.2.2; extra == "qdrant"
123
+ Provides-Extra: redshift
124
+ Requires-Dist: boto3==1.26.60; extra == "redshift"
125
+ Requires-Dist: redshift-connector==2.0.915; extra == "redshift"
126
+ Requires-Dist: lxml==4.9.4; extra == "redshift"
127
+ Provides-Extra: s3
128
+ Requires-Dist: boto3==1.26.60; extra == "s3"
129
+ Requires-Dist: botocore==1.29.60; extra == "s3"
130
+ Provides-Extra: snowflake
131
+ Requires-Dist: snowflake-connector-python==3.7.1; extra == "snowflake"
132
+ Provides-Extra: spark
133
+ Requires-Dist: boto3==1.26.60; extra == "spark"
134
+ Requires-Dist: botocore==1.29.60; extra == "spark"
135
+ Provides-Extra: streaming
136
+ Requires-Dist: confluent-avro~=1.8.0; extra == "streaming"
137
+ Requires-Dist: elasticsearch==8.15.1; extra == "streaming"
138
+ Requires-Dist: influxdb_client==1.36.1; extra == "streaming"
139
+ Requires-Dist: kafka-python==2.0.2; extra == "streaming"
140
+ Requires-Dist: nats-py==2.6.0; extra == "streaming"
141
+ Requires-Dist: nkeys~=0.2.0; extra == "streaming"
142
+ Requires-Dist: opensearch-py==2.0.0; extra == "streaming"
143
+ Requires-Dist: pika==1.3.1; extra == "streaming"
144
+ Requires-Dist: pymongo==4.3.3; extra == "streaming"
145
+ Requires-Dist: requests_aws4auth==1.1.2; extra == "streaming"
146
+ Requires-Dist: stomp.py==8.1.0; extra == "streaming"
147
+ Provides-Extra: all
148
+ Requires-Dist: PyGithub==1.59.0; extra == "all"
149
+ Requires-Dist: astor>=0.8.1; extra == "all"
150
+ Requires-Dist: aws-secretsmanager-caching==1.1.1.5; extra == "all"
151
+ Requires-Dist: azure-eventhub==5.11.2; extra == "all"
152
+ Requires-Dist: azure-identity==1.12.0; extra == "all"
153
+ Requires-Dist: azure-keyvault-certificates==4.6.0; extra == "all"
154
+ Requires-Dist: azure-keyvault-secrets==4.6.0; extra == "all"
155
+ Requires-Dist: azure-mgmt-containerinstance==10.1.0; extra == "all"
156
+ Requires-Dist: azure-storage-blob==12.14.1; extra == "all"
157
+ Requires-Dist: boto3==1.26.60; extra == "all"
158
+ Requires-Dist: botocore==1.29.60; extra == "all"
159
+ Requires-Dist: clickhouse-connect~=0.6.23; extra == "all"
160
+ Requires-Dist: confluent-avro~=1.8.0; extra == "all"
161
+ Requires-Dist: db-dtypes==1.0.5; extra == "all"
162
+ Requires-Dist: dbt-adapters==1.8.0; extra == "all"
163
+ Requires-Dist: dbt-bigquery==1.8.3; extra == "all"
164
+ Requires-Dist: dbt-clickhouse==1.8.5; extra == "all"
165
+ Requires-Dist: dbt-core==1.8.7; extra == "all"
166
+ Requires-Dist: dbt-duckdb==1.8.4; extra == "all"
167
+ Requires-Dist: dbt-postgres==1.8.2; extra == "all"
168
+ Requires-Dist: dbt-redshift==1.8.1; extra == "all"
169
+ Requires-Dist: dbt-snowflake==1.8.4; extra == "all"
170
+ Requires-Dist: dbt-spark==1.8.0; extra == "all"
171
+ Requires-Dist: dbt-sqlserver==1.8.4; extra == "all"
172
+ Requires-Dist: dbt-synapse==1.8.2; extra == "all"
173
+ Requires-Dist: dbt-trino==1.8.4; extra == "all"
174
+ Requires-Dist: duckdb==1.0.0; extra == "all"
175
+ Requires-Dist: elasticsearch==8.15.1; extra == "all"
176
+ Requires-Dist: google-api-core~=2.15.0; extra == "all"
177
+ Requires-Dist: google-api-python-client~=2.70.0; extra == "all"
178
+ Requires-Dist: google-cloud-bigquery~=3.14.1; extra == "all"
179
+ Requires-Dist: google-cloud-iam~=2.13.0; extra == "all"
180
+ Requires-Dist: google-cloud-pubsub~=2.19.0; extra == "all"
181
+ Requires-Dist: google-cloud-run~=0.10.1; extra == "all"
182
+ Requires-Dist: google-cloud-storage~=2.5.0; extra == "all"
183
+ Requires-Dist: great-expectations==0.18.12; extra == "all"
184
+ Requires-Dist: gspread==5.7.2; extra == "all"
185
+ Requires-Dist: influxdb_client==1.36.1; extra == "all"
186
+ Requires-Dist: kafka-python==2.0.2; extra == "all"
187
+ Requires-Dist: kubernetes>=28.1.0; extra == "all"
188
+ Requires-Dist: langchain==0.1.6; extra == "all"
189
+ Requires-Dist: langchain_community<0.0.20; extra == "all"
190
+ Requires-Dist: ldap3==2.9.1; extra == "all"
191
+ Requires-Dist: nats-py==2.6.0; extra == "all"
192
+ Requires-Dist: nkeys~=0.2.0; extra == "all"
193
+ Requires-Dist: openai>=1.0.0; extra == "all"
194
+ Requires-Dist: opensearch-py==2.0.0; extra == "all"
195
+ Requires-Dist: opentelemetry-api==1.22.0; extra == "all"
196
+ Requires-Dist: opentelemetry-exporter-prometheus==0.43b0; extra == "all"
197
+ Requires-Dist: opentelemetry-instrumentation-tornado==0.43b0; extra == "all"
198
+ Requires-Dist: opentelemetry-exporter-otlp==1.22.0; extra == "all"
199
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.43b0; extra == "all"
200
+ Requires-Dist: oracledb==1.3.1; extra == "all"
201
+ Requires-Dist: pika==1.3.1; extra == "all"
202
+ Requires-Dist: pinotdb==5.6.0; extra == "all"
203
+ Requires-Dist: prometheus_client>=0.18.0; extra == "all"
204
+ Requires-Dist: protobuf>=4.25.0; extra == "all"
205
+ Requires-Dist: psycopg2-binary==2.9.3; extra == "all"
206
+ Requires-Dist: psycopg2==2.9.3; extra == "all"
207
+ Requires-Dist: pyairtable==2.3.3; extra == "all"
208
+ Requires-Dist: pydruid==0.6.5; extra == "all"
209
+ Requires-Dist: pymongo==4.3.3; extra == "all"
210
+ Requires-Dist: pyodbc==4.0.35; python_version < "3.12" and extra == "all"
211
+ Requires-Dist: pyodbc==5.0.1; python_version >= "3.12" and extra == "all"
212
+ Requires-Dist: redshift-connector==2.0.915; extra == "all"
213
+ Requires-Dist: lxml==4.9.4; extra == "all"
214
+ Requires-Dist: requests_aws4auth==1.1.2; extra == "all"
215
+ Requires-Dist: snowflake-connector-python==3.7.1; extra == "all"
216
+ Requires-Dist: sshtunnel==0.4.0; extra == "all"
217
+ Requires-Dist: stomp.py==8.1.0; extra == "all"
218
+ Requires-Dist: thefuzz[speedup]==0.19.0; extra == "all"
219
+ Requires-Dist: trino~=0.326; extra == "all"
220
+ Dynamic: author
221
+ Dynamic: author-email
222
+ Dynamic: classifier
223
+ Dynamic: description
224
+ Dynamic: description-content-type
225
+ Dynamic: home-page
226
+ Dynamic: license-file
227
+ Dynamic: provides-extra
228
+ Dynamic: requires-dist
229
+ Dynamic: requires-python
230
+ Dynamic: summary
231
+
232
+ # Mage OSS
233
+
234
+ ### Build modern data pipelines locally — fast, visual, and production-ready.
235
+
236
+ <br />
237
+
238
+ Mage OSS is a self-hosted development environment designed to help teams create production-grade data pipelines with confidence.
239
+
240
+ Ideal for automating ETL tasks, architecting data flow, or orchestrating transformations — all in a fast, notebook-style interface powered by modular code.
241
+
242
+ When it’s time to scale, [Mage Pro](https://mage.ai) — our core platform — unlocks enterprise orchestration, collaboration, and AI-powered workflows.
243
+
244
+ <br />
245
+
246
+ [![GitHub Stars](https://img.shields.io/github/stars/mage-ai/mage-ai?style=for-the-badge&labelColor=000000&color=1C1C1C)](https://github.com/mage-ai/mage-ai/stargazers)
247
+ [![Docker Pulls](https://img.shields.io/docker/pulls/mageai/mageai?style=for-the-badge&labelColor=000000&color=1C1C1C)](https://hub.docker.com/r/mageai/mageai)
248
+ [![Slack Community](https://img.shields.io/badge/Join%20the%20community-black.svg?style=for-the-badge&logo=lightning&labelColor=000000&color=1C1C1C)](https://www.mage.ai/chat)
249
+ [![License](https://img.shields.io/github/license/mage-ai/mage-ai?style=for-the-badge&labelColor=000000&color=1C1C1C)](https://github.com/mage-ai/mage-ai/blob/master/LICENSE)
250
+
251
+ <br />
252
+
253
+ ## What you can do with Mage OSS
254
+
255
+ - Build pipelines locally with Python, SQL, or R in a modular notebook-style UI
256
+
257
+ - Run jobs manually or on a schedule (cron supported)
258
+
259
+ - Connect to databases, APIs, and cloud storage with prebuilt connectors
260
+
261
+ - Debug visually with logs, live previews, and step-by-step execution
262
+
263
+ - Set up quickly with Docker, pip, or conda — no cloud account required
264
+
265
+ - Your go-to workspace for local pipeline development — fully in your control.
266
+
267
+ <img width="100%" alt="mage" src="https://github.com/user-attachments/assets/75992872-20a6-4120-8bf0-9c22a3d66450" />
268
+
269
+
270
+ <br /><br />
271
+
272
+ ## Start local. Scale when you're ready.
273
+
274
+ Use Mage OSS to build and run pipelines on your machine. When you're ready for advanced tooling, performance, and AI-assisted productivity, Mage Pro is just one click away.
275
+
276
+ [**Try Mage Pro free →**](https://mage.ai)
277
+
278
+ <br />
279
+
280
+ ### Quickstart
281
+
282
+ Install using Docker (recommended):
283
+
284
+ ```bash
285
+ docker pull mageai/mageai:latest
286
+ ```
287
+
288
+ Or with pip:
289
+
290
+ ```bash
291
+ pip install mage-ai
292
+ ```
293
+
294
+ Or with conda:
295
+
296
+ ```bash
297
+ conda install -c conda-forge mage-ai
298
+ ```
299
+
300
+ Full setup guide and docs: [docs.mage.ai](https://docs.mage.ai)
301
+
302
+ <br />
303
+
304
+ ## Core Features
305
+
306
+ | Feature | Description |
307
+ | :- | :- |
308
+ | Modular pipelines | Build pipelines block-by-block using Python, SQL, or R |
309
+ | Notebook UI | Interactive editor for writing and documenting logic |
310
+ | Data integrations | Prebuilt connectors to databases, APIs, and cloud storage |
311
+ | Scheduling | Trigger pipelines manually or on a schedule |
312
+ | Visual debugging | Step-by-step logs, data previews, and error handling |
313
+ | dbt support | Build and run dbt models directly inside Mage |
314
+
315
+ <br />
316
+
317
+ ## Example Use Cases
318
+
319
+ - Move data from Google Sheets to Snowflake with a Python transform
320
+ - Schedule a daily SQL pipeline to clean and aggregate product data
321
+ - Develop dbt models in a visual notebook-style interface
322
+ - Run simple ETL/ELT jobs locally with full transparency
323
+
324
+ <br />
325
+
326
+ ## Documentation
327
+
328
+ Looking for how-to guides, examples, or advanced configuration?
329
+
330
+ Explore our full documentation at [docs.mage.ai](https://docs.mage.ai).
331
+
332
+
333
+ <br />
334
+
335
+ ## Contributing
336
+
337
+ We welcome contributions of all kinds — bug fixes, docs, new features, or community examples.
338
+
339
+ Start with our [contributing guide](https://docs.mage.ai/contributing/overview), check out open issues, or suggest improvements.
340
+
341
+ <br />
342
+
343
+ ## Ready to scale? Mage Pro has you covered.
344
+
345
+ Mage Pro is a powered-up platform built for teams.
346
+ It adds everything you need for production pipelines, at scale.
347
+
348
+ - Magical AI-assisted development and debugging
349
+ - Multi-environment orchestration
350
+ - Role-based access control
351
+ - Real-time monitoring & alerts
352
+ - Powerful CI/CD & version control
353
+ - Powerful enterprise features
354
+ - Available fully managed, hybrid, or on-premises
355
+
356
+ [**Try Mage Pro free →**](https://mage.ai)