mage-ai 0.8.10__tar.gz → 0.8.12__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.

Potentially problematic release.


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

Files changed (868) hide show
  1. {mage-ai-0.8.10/mage_ai.egg-info → mage-ai-0.8.12}/PKG-INFO +1 -1
  2. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/BlockPolicy.py +13 -0
  3. mage-ai-0.8.12/mage_ai/api/policies/SyncPolicy.py +30 -0
  4. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/BlockPresenter.py +12 -1
  5. mage-ai-0.8.12/mage_ai/api/presenters/SyncPresenter.py +11 -0
  6. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/BlockResource.py +10 -3
  7. mage-ai-0.8.12/mage_ai/api/resources/SyncResource.py +43 -0
  8. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/pipeline_executor.py +9 -0
  9. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/streaming_pipeline_executor.py +3 -1
  10. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/__init__.py +5 -3
  11. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/integration/__init__.py +59 -0
  12. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/constants.py +1 -0
  13. mage-ai-0.8.12/mage_ai/data_preparation/preferences.py +43 -0
  14. mage-ai-0.8.12/mage_ai/data_preparation/sync/__init__.py +17 -0
  15. mage-ai-0.8.12/mage_ai/data_preparation/sync/base_sync.py +7 -0
  16. mage-ai-0.8.12/mage_ai/data_preparation/sync/git_sync.py +26 -0
  17. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/streaming/kafka.yaml +5 -0
  18. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/models.py +14 -0
  19. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/pipeline_scheduler.py +12 -4
  20. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/constants.py +1 -1
  21. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/404.html +2 -2
  22. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/404.html.html +2 -2
  23. mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/BJSgpMeWTfdkZw_YRDpOz/_buildManifest.js +1 -0
  24. mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/5477-d76f7f4b9d329116.js +1 -0
  25. mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/9767-e89f3e19764e4f24.js +1 -0
  26. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-44766f29c8c5b4ce.js → mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-77b4b367fdb247d6.js +1 -1
  27. mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-51fe31916670195c.js +1 -0
  28. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-acd7ee47219fee3d.js → mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-88bc8c5e21f7e493.js +1 -1
  29. mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-4c05a269e02f2208.js +1 -0
  30. mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/sync_data-f1f47e503c490758.js +1 -0
  31. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-c128672e053a4c30.js → mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-439adeb06fca8436.js +1 -1
  32. mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/chunks/pages/terminal-6feb9848233a6c6e.js +1 -0
  33. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/index.html +2 -2
  34. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/manage.html +2 -2
  35. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipeline-runs.html +2 -2
  36. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills/[...slug].html +2 -2
  37. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills.html +2 -2
  38. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/edit.html +2 -2
  39. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/logs.html +2 -2
  40. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runs.html +2 -2
  41. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runtime.html +2 -2
  42. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors.html +2 -2
  43. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/runs/[run].html +2 -2
  44. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/runs.html +2 -2
  45. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/syncs.html +2 -2
  46. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers/[...slug].html +2 -2
  47. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers.html +2 -2
  48. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines/[pipeline].html +2 -2
  49. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/pipelines.html +2 -2
  50. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/settings/account/profile.html +2 -2
  51. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/settings/workspace/preferences.html +2 -2
  52. mage-ai-0.8.12/mage_ai/server/frontend_dist/settings/workspace/sync_data.html +20 -0
  53. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/settings/workspace/users.html +2 -2
  54. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/settings.html +2 -2
  55. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/sign-in.html +2 -2
  56. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/terminal.html +2 -2
  57. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/test.html +3 -3
  58. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/triggers.html +2 -2
  59. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/server.py +1 -0
  60. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/config.py +4 -1
  61. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sources/kafka.py +49 -3
  62. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_preparation/test_templates.py +5 -0
  63. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sources/test_kafka.py +17 -0
  64. {mage-ai-0.8.10 → mage-ai-0.8.12/mage_ai.egg-info}/PKG-INFO +1 -1
  65. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai.egg-info/SOURCES.txt +20 -11
  66. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai.egg-info/requires.txt +2 -0
  67. {mage-ai-0.8.10 → mage-ai-0.8.12}/requirements.txt +2 -0
  68. {mage-ai-0.8.10 → mage-ai-0.8.12}/setup.py +1 -1
  69. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/avIy1qfPFOamteWu3WLo7/_buildManifest.js +0 -1
  70. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/chunks/9140-6f67e0879394373d.js +0 -1
  71. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/chunks/9767-3f852fd90cf7857f.js +0 -1
  72. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-03812efcc2f955c1.js +0 -1
  73. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-07bda506f68974fb.js +0 -1
  74. mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/chunks/pages/terminal-5d7c45bb058a3f20.js +0 -1
  75. {mage-ai-0.8.10 → mage-ai-0.8.12}/LICENSE +0 -0
  76. {mage-ai-0.8.10 → mage-ai-0.8.12}/MANIFEST.in +0 -0
  77. {mage-ai-0.8.10 → mage-ai-0.8.12}/README.md +0 -0
  78. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/__init__.py +0 -0
  79. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/__init__.py +0 -0
  80. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/api_context.py +0 -0
  81. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/constants.py +0 -0
  82. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/errors.py +0 -0
  83. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/logging.py +0 -0
  84. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/middleware.py +0 -0
  85. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/monitors/BaseMonitor.py +0 -0
  86. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/monitors/__init__.py +0 -0
  87. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/oauth_scope.py +0 -0
  88. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/operations/__init__.py +0 -0
  89. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/operations/base.py +0 -0
  90. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/operations/constants.py +0 -0
  91. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/AutocompleteItemPolicy.py +0 -0
  92. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/BackfillPolicy.py +0 -0
  93. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/BasePolicy.py +0 -0
  94. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/BlockRunPolicy.py +0 -0
  95. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/ClusterPolicy.py +0 -0
  96. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/DataProviderPolicy.py +0 -0
  97. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/EventRulePolicy.py +0 -0
  98. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/FileContentPolicy.py +0 -0
  99. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/FilePolicy.py +0 -0
  100. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/IntegrationDestinationPolicy.py +0 -0
  101. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/IntegrationSourcePolicy.py +0 -0
  102. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/IntegrationSourceStreamPolicy.py +0 -0
  103. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/KernelPolicy.py +0 -0
  104. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/LogPolicy.py +0 -0
  105. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/MonitorStatPolicy.py +0 -0
  106. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/OutputPolicy.py +0 -0
  107. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/PipelinePolicy.py +0 -0
  108. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/PipelineRunPolicy.py +0 -0
  109. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/PipelineSchedulePolicy.py +0 -0
  110. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/ProjectPolicy.py +0 -0
  111. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/SecretPolicy.py +0 -0
  112. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/SessionPolicy.py +0 -0
  113. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/UserPolicy.py +0 -0
  114. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/VariablePolicy.py +0 -0
  115. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/WidgetPolicy.py +0 -0
  116. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/policies/__init__.py +0 -0
  117. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/AutocompleteItemPresenter.py +0 -0
  118. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/BackfillPresenter.py +0 -0
  119. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/BasePresenter.py +0 -0
  120. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/BlockRunPresenter.py +0 -0
  121. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/ClusterPresenter.py +0 -0
  122. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/DataProviderPresenter.py +0 -0
  123. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/EventRulePresenter.py +0 -0
  124. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/FileContentPresenter.py +0 -0
  125. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/FilePresenter.py +0 -0
  126. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/IntegrationDestinationPresenter.py +0 -0
  127. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/IntegrationSourcePresenter.py +0 -0
  128. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/IntegrationSourceStreamPresenter.py +0 -0
  129. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/KernelPresenter.py +0 -0
  130. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/LogPresenter.py +0 -0
  131. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/MonitorStatPresenter.py +0 -0
  132. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/OutputPresenter.py +0 -0
  133. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/PipelinePresenter.py +0 -0
  134. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/PipelineRunPresenter.py +0 -0
  135. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/PipelineSchedulePresenter.py +0 -0
  136. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/ProjectPresenter.py +0 -0
  137. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/SecretPresenter.py +0 -0
  138. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/SessionPresenter.py +0 -0
  139. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/UserPresenter.py +0 -0
  140. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/VariablePresenter.py +0 -0
  141. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/WidgetPresenter.py +0 -0
  142. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/__init__.py +0 -0
  143. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/mixins/__init__.py +0 -0
  144. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/presenters/mixins/users.py +0 -0
  145. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/AutocompleteItemResource.py +0 -0
  146. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/BackfillResource.py +0 -0
  147. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/BaseResource.py +0 -0
  148. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/BlockRunResource.py +0 -0
  149. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/ClusterResource.py +0 -0
  150. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/DataProviderResource.py +0 -0
  151. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/DatabaseResource.py +0 -0
  152. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/EventRuleResource.py +0 -0
  153. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/FileContentResource.py +0 -0
  154. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/FileResource.py +0 -0
  155. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/GenericResource.py +0 -0
  156. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/IntegrationDestinationResource.py +0 -0
  157. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/IntegrationSourceResource.py +0 -0
  158. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/IntegrationSourceStreamResource.py +0 -0
  159. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/KernelResource.py +0 -0
  160. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/LogResource.py +0 -0
  161. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/MonitorStatResource.py +0 -0
  162. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/OutputResource.py +0 -0
  163. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/PipelineResource.py +0 -0
  164. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/PipelineRunResource.py +0 -0
  165. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/PipelineScheduleResource.py +0 -0
  166. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/ProjectResource.py +0 -0
  167. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/Resource.py +0 -0
  168. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/SecretResource.py +0 -0
  169. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/SessionResource.py +0 -0
  170. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/UserResource.py +0 -0
  171. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/VariableResource.py +0 -0
  172. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/WidgetResource.py +0 -0
  173. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/__init__.py +0 -0
  174. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/mixins/__init__.py +0 -0
  175. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/shared/__init__.py +0 -0
  176. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/shared/collections.py +0 -0
  177. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/resources/shared/collective_loaders.py +0 -0
  178. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/result_set.py +0 -0
  179. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/utils.py +0 -0
  180. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/api/views.py +0 -0
  181. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/authentication/__init__.py +0 -0
  182. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/authentication/oauth2.py +0 -0
  183. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/authentication/passwords.py +0 -0
  184. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/autocomplete/__init__.py +0 -0
  185. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/autocomplete/utils.py +0 -0
  186. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cli/__init__.py +0 -0
  187. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cli/main.py +0 -0
  188. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cli/utils.py +0 -0
  189. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/__init__.py +0 -0
  190. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/aws/__init__.py +0 -0
  191. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/aws/ecs_task_manager.py +0 -0
  192. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/aws/emr_cluster_manager.py +0 -0
  193. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/cluster_manager.py +0 -0
  194. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/constants.py +0 -0
  195. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/gcp/__init__.py +0 -0
  196. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/gcp/cloud_run_service_manager.py +0 -0
  197. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/kubernetes/__init__.py +0 -0
  198. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/cluster_manager/kubernetes/workload_manager.py +0 -0
  199. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/__init__.py +0 -0
  200. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/analysis/__init__.py +0 -0
  201. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/analysis/calculator.py +0 -0
  202. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/analysis/charts.py +0 -0
  203. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/analysis/constants.py +0 -0
  204. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/__init__.py +0 -0
  205. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/base.py +0 -0
  206. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/clean_column_names.py +0 -0
  207. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/fix_syntax_errors.py +0 -0
  208. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/impute_values.py +0 -0
  209. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/reformat_values.py +0 -0
  210. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/remove_collinear_columns.py +0 -0
  211. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/remove_columns_with_high_empty_rate.py +0 -0
  212. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/remove_columns_with_single_value.py +0 -0
  213. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/remove_duplicate_rows.py +0 -0
  214. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/cleaning_rules/remove_outliers.py +0 -0
  215. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/column_types/__init__.py +0 -0
  216. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/column_types/column_type_detector.py +0 -0
  217. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/column_types/constants.py +0 -0
  218. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/data_cleaner.py +0 -0
  219. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/estimators/__init__.py +0 -0
  220. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/estimators/base.py +0 -0
  221. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/estimators/encoders.py +0 -0
  222. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/estimators/outlier_removal.py +0 -0
  223. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/pipelines/__init__.py +0 -0
  224. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/pipelines/base.py +0 -0
  225. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/shared/__init__.py +0 -0
  226. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/shared/utils.py +0 -0
  227. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/statistics/__init__.py +0 -0
  228. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/statistics/calculator.py +0 -0
  229. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/__init__.py +0 -0
  230. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/action_code.py +0 -0
  231. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/base.py +0 -0
  232. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/column.py +0 -0
  233. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/constants.py +0 -0
  234. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/custom_action.py +0 -0
  235. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/dependency_resolution.py +0 -0
  236. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/helpers.py +0 -0
  237. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/row.py +0 -0
  238. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/shared.py +0 -0
  239. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/spark/__init__.py +0 -0
  240. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/spark/constants.py +0 -0
  241. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/spark/transformers.py +0 -0
  242. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/__init__.py +0 -0
  243. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/addition.py +0 -0
  244. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/base.py +0 -0
  245. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/constant.py +0 -0
  246. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/date_trunc.py +0 -0
  247. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/difference.py +0 -0
  248. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/distance_between.py +0 -0
  249. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/divide.py +0 -0
  250. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/formatted_date.py +0 -0
  251. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/if_else.py +0 -0
  252. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/multiply.py +0 -0
  253. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/string_replace.py +0 -0
  254. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/string_split.py +0 -0
  255. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/udf/substring.py +0 -0
  256. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/utils.py +0 -0
  257. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_cleaner/transformer_actions/variable_replacer.py +0 -0
  258. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/__init__.py +0 -0
  259. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/destinations/__init__.py +0 -0
  260. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/destinations/constants.py +0 -0
  261. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/logger/__init__.py +0 -0
  262. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/logger/utils.py +0 -0
  263. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/sources/__init__.py +0 -0
  264. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/sources/constants.py +0 -0
  265. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/utils/__init__.py +0 -0
  266. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/utils/config.py +0 -0
  267. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/utils/parsers.py +0 -0
  268. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_integrations/utils/scheduler.py +0 -0
  269. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/__init__.py +0 -0
  270. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/decorators.py +0 -0
  271. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/__init__.py +0 -0
  272. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/block_executor.py +0 -0
  273. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/ecs_block_executor.py +0 -0
  274. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/executor_factory.py +0 -0
  275. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/gcp_cloud_run_block_executor.py +0 -0
  276. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/k8s_block_executor.py +0 -0
  277. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/pyspark_block_executor.py +0 -0
  278. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/executors/pyspark_pipeline_executor.py +0 -0
  279. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/logging/__init__.py +0 -0
  280. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/logging/gcs_logger_manager.py +0 -0
  281. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/logging/logger.py +0 -0
  282. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/logging/logger_manager.py +0 -0
  283. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/logging/logger_manager_factory.py +0 -0
  284. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/logging/s3_logger_manager.py +0 -0
  285. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/__init__.py +0 -0
  286. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/constants.py +0 -0
  287. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/dbt/__init__.py +0 -0
  288. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/dbt/utils/__init__.py +0 -0
  289. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/errors.py +0 -0
  290. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/r/__init__.py +0 -0
  291. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/r/templates/data_exporter.jinja +0 -0
  292. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/r/templates/data_loader.jinja +0 -0
  293. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/r/templates/transformer.jinja +0 -0
  294. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/__init__.py +0 -0
  295. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/bigquery.py +0 -0
  296. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/mysql.py +0 -0
  297. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/postgres.py +0 -0
  298. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/redshift.py +0 -0
  299. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/snowflake.py +0 -0
  300. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/trino.py +0 -0
  301. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/utils/__init__.py +0 -0
  302. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/sql/utils/shared.py +0 -0
  303. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/block/utils.py +0 -0
  304. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/errors.py +0 -0
  305. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/file.py +0 -0
  306. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/pipeline.py +0 -0
  307. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/pipelines/__init__.py +0 -0
  308. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/pipelines/integration_pipeline.py +0 -0
  309. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/pipelines/utils.py +0 -0
  310. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/utils.py +0 -0
  311. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/variable.py +0 -0
  312. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/widget/__init__.py +0 -0
  313. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/widget/charts.py +0 -0
  314. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/widget/constants.py +0 -0
  315. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/models/widget/utils.py +0 -0
  316. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/repo_manager.py +0 -0
  317. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/shared/__init__.py +0 -0
  318. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/shared/constants.py +0 -0
  319. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/shared/secrets.py +0 -0
  320. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/shared/stream.py +0 -0
  321. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/shared/utils.py +0 -0
  322. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/storage/__init__.py +0 -0
  323. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/storage/base_storage.py +0 -0
  324. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/storage/local_storage.py +0 -0
  325. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/storage/s3_storage.py +0 -0
  326. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/storage/utils.py +0 -0
  327. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/__init__.py +0 -0
  328. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/callbacks/default.py +0 -0
  329. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/custom/python/default.jinja +0 -0
  330. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/azure_blob_storage.py +0 -0
  331. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/bigquery.py +0 -0
  332. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/default.jinja +0 -0
  333. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/file.py +0 -0
  334. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/google_cloud_storage.py +0 -0
  335. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/mysql.py +0 -0
  336. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/postgres.py +0 -0
  337. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/pyspark/default.jinja +0 -0
  338. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/pyspark/s3.py +0 -0
  339. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/r/default.jinja +0 -0
  340. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/redshift.py +0 -0
  341. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/s3.py +0 -0
  342. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/snowflake.py +0 -0
  343. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/streaming/kinesis.yaml +0 -0
  344. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_exporters/streaming/opensearch.yaml +0 -0
  345. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/api.py +0 -0
  346. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/azure_blob_storage.py +0 -0
  347. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/bigquery.py +0 -0
  348. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/default.jinja +0 -0
  349. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/file.py +0 -0
  350. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/google_cloud_storage.py +0 -0
  351. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/mysql.py +0 -0
  352. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/postgres.py +0 -0
  353. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/pyspark/default.jinja +0 -0
  354. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/pyspark/s3.py +0 -0
  355. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/r/default.jinja +0 -0
  356. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/redshift.py +0 -0
  357. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/s3.py +0 -0
  358. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/snowflake.py +0 -0
  359. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/streaming/azure_event_hub.yaml +0 -0
  360. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/streaming/kinesis.yaml +0 -0
  361. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/data_loaders/streaming/rabbitmq.yaml +0 -0
  362. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/pipeline/__init__.py +0 -0
  363. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/pipeline/metadata.yaml +0 -0
  364. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/pipeline_execution/emr_bootstrap.sh +0 -0
  365. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/pipeline_execution/spark_script.jinja +0 -0
  366. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/__init__.py +0 -0
  367. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/charts/__init__.py +0 -0
  368. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/data_exporters/__init__.py +0 -0
  369. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/data_exporters/export_titanic_clean.py +0 -0
  370. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/data_loaders/__init__.py +0 -0
  371. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/data_loaders/load_titanic.py +0 -0
  372. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/dbt/profiles.yml +0 -0
  373. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/io_config.yaml +0 -0
  374. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/metadata.yaml +0 -0
  375. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/pipelines/__init__.py +0 -0
  376. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/pipelines/example_pipeline/__init__.py +0 -0
  377. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/pipelines/example_pipeline/metadata.yaml +0 -0
  378. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/requirements.txt +0 -0
  379. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/scratchpads/__init__.py +0 -0
  380. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/transformers/__init__.py +0 -0
  381. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/transformers/fill_in_missing_values.py +0 -0
  382. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/repo/utils/__init__.py +0 -0
  383. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/sensors/default.py +0 -0
  384. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/sensors/s3.py +0 -0
  385. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/template.py +0 -0
  386. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/testable.jinja +0 -0
  387. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/data_warehouse_transformer.jinja +0 -0
  388. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/default.jinja +0 -0
  389. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/default_pyspark.jinja +0 -0
  390. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/default_streaming.jinja +0 -0
  391. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/r/default.r +0 -0
  392. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/suggestion_fmt.jinja +0 -0
  393. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/action.jinja +0 -0
  394. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/average.py +0 -0
  395. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/clean_column_name.py +0 -0
  396. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/count.py +0 -0
  397. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/count_distinct.py +0 -0
  398. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/diff.py +0 -0
  399. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/first.py +0 -0
  400. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/fix_syntax_errors.py +0 -0
  401. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/impute.py +0 -0
  402. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/last.py +0 -0
  403. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/max.py +0 -0
  404. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/median.py +0 -0
  405. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/min.py +0 -0
  406. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/normalize.py +0 -0
  407. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/reformat.py +0 -0
  408. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/remove.py +0 -0
  409. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/remove_outliers.py +0 -0
  410. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/select.py +0 -0
  411. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/shift_down.py +0 -0
  412. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/shift_up.py +0 -0
  413. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/standardize.py +0 -0
  414. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/sum.py +0 -0
  415. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/drop_duplicate.py +0 -0
  416. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/filter.py +0 -0
  417. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/remove.py +0 -0
  418. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/sort.py +0 -0
  419. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/templates/utils.py +0 -0
  420. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/utils/__init__.py +0 -0
  421. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/utils/block/__init__.py +0 -0
  422. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/utils/block/convert_content.py +0 -0
  423. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/data_preparation/variable_manager.py +0 -0
  424. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/errors/__init__.py +0 -0
  425. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/errors/base.py +0 -0
  426. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/__init__.py +0 -0
  427. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/azure_blob_storage.py +0 -0
  428. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/base.py +0 -0
  429. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/bigquery.py +0 -0
  430. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/config.py +0 -0
  431. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/export_utils.py +0 -0
  432. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/file.py +0 -0
  433. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/google_cloud_storage.py +0 -0
  434. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/io_config.py +0 -0
  435. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/mysql.py +0 -0
  436. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/postgres.py +0 -0
  437. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/redshift.py +0 -0
  438. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/s3.py +0 -0
  439. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/snowflake.py +0 -0
  440. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/sql.py +0 -0
  441. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/trino.py +0 -0
  442. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/io/utils.py +0 -0
  443. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/__init__.py +0 -0
  444. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/airflow.py +0 -0
  445. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/backfills/__init__.py +0 -0
  446. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/backfills/service.py +0 -0
  447. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/constants.py +0 -0
  448. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/__init__.py +0 -0
  449. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/alembic.ini +0 -0
  450. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/database_manager.py +0 -0
  451. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/errors.py +0 -0
  452. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/README.md +0 -0
  453. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/env.py +0 -0
  454. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/script.py.mako +0 -0
  455. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/053ee2c10d85_add_completed_at.py +0 -0
  456. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/067326f43bc3_add_variables_to_pipelinerun.py +0 -0
  457. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/1d8e65aeefdd_add_settings_to_pipeline_schedule.py +0 -0
  458. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/1f9353eddbc6_add_secrets_table.py +0 -0
  459. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/2266370f589b_add_indexes_to_pipeline_run.py +0 -0
  460. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/26305e46df52_create_backfills_table.py +0 -0
  461. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/3fafd217efa7_add_event_matcher_model.py +0 -0
  462. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/52ab80005742_add_variables_to_pipeline_schedule.py +0 -0
  463. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/5cd59ec4cf1d_add_passed_sla_to_pipeline_run.py +0 -0
  464. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/643b6e65e814_add_unique_indexes_on_authentication_.py +0 -0
  465. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/6aecc9bc451c_update_schedule_type_enum.py +0 -0
  466. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/7ac6fed06918_add_token_column_to_pipeline_schedule_.py +0 -0
  467. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/84de4cdd6126_add_sla_to_pipeline_schedule.py +0 -0
  468. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/8971d4cd5b39_add_event_variables_and_metadata_to_.py +0 -0
  469. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/97ff9f55a3c0_create_users_oauth2_applications_and_.py +0 -0
  470. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/b01be687e537_add_started_at_to_block_run.py +0 -0
  471. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/c07a23ff782b_add_initial_tables.py +0 -0
  472. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/migrations/versions/ec5df57a1c60_add_metrics_to_block_runs.py +0 -0
  473. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/db/process.py +0 -0
  474. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/execution_process_manager.py +0 -0
  475. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/job_manager.py +0 -0
  476. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/metrics/__init__.py +0 -0
  477. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/metrics/pipeline_run.py +0 -0
  478. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/monitor/__init__.py +0 -0
  479. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/monitor/monitor_stats.py +0 -0
  480. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/notification/__init__.py +0 -0
  481. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/notification/config.py +0 -0
  482. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/notification/sender.py +0 -0
  483. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/queue/__init__.py +0 -0
  484. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/queue/celery_queue.py +0 -0
  485. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/queue/config.py +0 -0
  486. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/queue/process_queue.py +0 -0
  487. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/queue/queue.py +0 -0
  488. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/queue/queue_factory.py +0 -0
  489. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/run_status_checker.py +0 -0
  490. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/triggers/__init__.py +0 -0
  491. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/triggers/event_trigger.py +0 -0
  492. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/triggers/loop_time_trigger.py +0 -0
  493. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/triggers/time_trigger.py +0 -0
  494. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/utils/__init__.py +0 -0
  495. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/orchestration/utils/resources.py +0 -0
  496. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/sample_datasets/__init__.py +0 -0
  497. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/sample_datasets/product_purchases.csv +0 -0
  498. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/sample_datasets/salary_survey.csv +0 -0
  499. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/sample_datasets/titanic_survival.csv +0 -0
  500. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/sample_datasets/user_emails.csv +0 -0
  501. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/__init__.py +0 -0
  502. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/active_kernel.py +0 -0
  503. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/__init__.py +0 -0
  504. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/base.py +0 -0
  505. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/blocks.py +0 -0
  506. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/clusters.py +0 -0
  507. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/constants.py +0 -0
  508. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/errors.py +0 -0
  509. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/events.py +0 -0
  510. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/integration_sources.py +0 -0
  511. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/projects.py +0 -0
  512. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/triggers.py +0 -0
  513. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/api/v1.py +0 -0
  514. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/app.py +0 -0
  515. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/client/__init__.py +0 -0
  516. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/client/mage.py +0 -0
  517. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/data/__init__.py +0 -0
  518. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/data/base.py +0 -0
  519. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/data/models.py +0 -0
  520. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/docs_server.py +0 -0
  521. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/execution_manager.py +0 -0
  522. {mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/avIy1qfPFOamteWu3WLo7 → mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/BJSgpMeWTfdkZw_YRDpOz}/_middlewareManifest.js +0 -0
  523. {mage-ai-0.8.10/mage_ai/server/frontend_dist/_next/static/avIy1qfPFOamteWu3WLo7 → mage-ai-0.8.12/mage_ai/server/frontend_dist/_next/static/BJSgpMeWTfdkZw_YRDpOz}/_ssgManifest.js +0 -0
  524. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/1150.1378afaa474df64a.js +0 -0
  525. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/1240.0819f45820d22263.js +0 -0
  526. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/1286-a62050b3f897c6be.js +0 -0
  527. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/1450.d383f64c169d4278.js +0 -0
  528. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/1774-aa51ef1da7217ff9.js +0 -0
  529. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/1830-c3f709c7ca7f32ab.js +0 -0
  530. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2083-78a438dbdc57d1e4.js +0 -0
  531. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2125-0b537dc53fe71b18.js +0 -0
  532. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2249-70929b8c547bbc18.js +0 -0
  533. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2426-115f8871a2e28f8c.js +0 -0
  534. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2481.0454a0e25dc7e027.js +0 -0
  535. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2508.724531e7f9cf5f36.js +0 -0
  536. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2524-6aeb9419acf5d1b4.js +0 -0
  537. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2545.8371b39c898ae92b.js +0 -0
  538. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/261.0a24b4ece1d29aa1.js +0 -0
  539. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/266.e301071d22592682.js +0 -0
  540. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/2714-1e79e9f2e998b544.js +0 -0
  541. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/29107295-989a0767a635d9d5.js +0 -0
  542. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/3453.992f4b1667e9882c.js +0 -0
  543. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/3467.38cd0654ba6f788f.js +0 -0
  544. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/3835.df296b4e4078e985.js +0 -0
  545. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/3850-6395783d820def1c.js +0 -0
  546. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/3873.4b3eace753998412.js +0 -0
  547. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/3898.880191695bb05845.js +0 -0
  548. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4042.5e16d36209052351.js +0 -0
  549. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4092.536ee541241f4538.js +0 -0
  550. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/434-69ddfacd3e93f2db.js +0 -0
  551. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4388.04098706f32e69e7.js +0 -0
  552. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/440.3ab77942f659ea0c.js +0 -0
  553. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4450.79f14f763d55c63e.js +0 -0
  554. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4454.13a2404adecaa39e.js +0 -0
  555. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4463-1b9ce74c6e1bb14e.js +0 -0
  556. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4495-4f0340aa82e0c623.js +0 -0
  557. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4776.753ad29fa0a29a4a.js +0 -0
  558. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4804-01a10103ebe26ca8.js +0 -0
  559. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4846-b4ced91dc0e9fba9.js +0 -0
  560. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/4883.a5bb0edbf8f3cc8f.js +0 -0
  561. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/5008.29c2662ecc2b04c7.js +0 -0
  562. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/5104.1edcf4437c471dd4.js +0 -0
  563. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/5164.857023e800905b6f.js +0 -0
  564. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/5729.0f2748e9e6dab951.js +0 -0
  565. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/5824.628653557e904674.js +0 -0
  566. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/5872-103815a4a043489b.js +0 -0
  567. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/5896-f84e336fb8877027.js +0 -0
  568. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/5944-757b7898608a65e1.js +0 -0
  569. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6042.c59010de9e699437.js +0 -0
  570. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6085-692d2f784c0504f2.js +0 -0
  571. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6115.0c85e507543394ea.js +0 -0
  572. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6116.871a682ddf535aca.js +0 -0
  573. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6434.10380ee0968636ba.js +0 -0
  574. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6443.7b6d2b4e51018184.js +0 -0
  575. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6507.d3a17777d2c294e6.js +0 -0
  576. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6532-a614f9e1f9434872.js +0 -0
  577. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6579-2b5d8d39472d85c0.js +0 -0
  578. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6641-a0ed2bd8f5dc777b.js +0 -0
  579. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/6958.8f39c585d36737a7.js +0 -0
  580. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/7011-81dd8269c4806d26.js +0 -0
  581. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/704-4de8946d753a578a.js +0 -0
  582. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/72fdc299.2d5ec188af5d0049.js +0 -0
  583. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/739.3d24945544b37e52.js +0 -0
  584. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/7400-1430ec3874c1fdee.js +0 -0
  585. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/792.010ca00d79b2112f.js +0 -0
  586. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/7947.77be4bec4d47774e.js +0 -0
  587. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/7951.fee8b6c27c9ef777.js +0 -0
  588. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8018.968bf87c390e3312.js +0 -0
  589. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8097.b0345f30a7390c1d.js +0 -0
  590. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8256.290ceb269b1ffe26.js +0 -0
  591. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/826.75268ee34f93393a.js +0 -0
  592. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8277.5003e1d94bb85156.js +0 -0
  593. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8762.dff300f86bef8573.js +0 -0
  594. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8789-4f858e520d46973b.js +0 -0
  595. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8807.a68c69c8fe0a8c01.js +0 -0
  596. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8849.db0d50b4d84b09a6.js +0 -0
  597. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8901.21d26d5a1ee473fe.js +0 -0
  598. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8920.5700e380a2999098.js +0 -0
  599. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/8961-697fe5d4db44d909.js +0 -0
  600. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9258.6c6ef544c701a011.js +0 -0
  601. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9307.d4baf7aebbcef1f0.js +0 -0
  602. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9361.a0820e3069f5ef74.js +0 -0
  603. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9363.6b811b4c86277e07.js +0 -0
  604. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9437.a3c32f45cf9ef69b.js +0 -0
  605. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9565-28e1c30511c95c2d.js +0 -0
  606. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9566.f8bd24768ed14ecb.js +0 -0
  607. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9633.40e5056ca1e2b22a.js +0 -0
  608. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9785.5ff26cb26d84d6a1.js +0 -0
  609. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9832-c8b8970bb522f302.js +0 -0
  610. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9855.c4394a68322be9f8.js +0 -0
  611. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9898-51ca6a904b7a2382.js +0 -0
  612. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/9927.e82a3e1e21990d77.js +0 -0
  613. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/bd1a647f.6050372acaa5cc3c.js +0 -0
  614. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/framework-7c365855dab1bf41.js +0 -0
  615. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/main-bb0dd5375146d7fd.js +0 -0
  616. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/_error-235304e5badb19eb.js +0 -0
  617. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/index-e34a68d2f6fe16f2.js +0 -0
  618. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-14c743a0e2549486.js +0 -0
  619. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipeline-runs-21fe37061bdaaaea.js +0 -0
  620. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-678569cf24a2e10d.js +0 -0
  621. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills-0ed0d70bc659c236.js +0 -0
  622. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/logs-5ccc75887776efb0.js +0 -0
  623. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runs-8f23f7ca9efcb069.js +0 -0
  624. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runtime-f83ab9de4094e1b0.js +0 -0
  625. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors-8b08ec1aef4af4f2.js +0 -0
  626. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs/[run]-73ced07cc98a4968.js +0 -0
  627. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-67d23509a0c9a1b8.js +0 -0
  628. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/syncs-4084a44baf91f30e.js +0 -0
  629. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-ae970171cfe98c51.js +0 -0
  630. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers-b0b91245d3299bdf.js +0 -0
  631. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]-ca9457e1a6bced4b.js +0 -0
  632. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-1c0627627c21667f.js +0 -0
  633. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings-d594a66a568306da.js +0 -0
  634. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/sign-in-b4e1eb529a184c60.js +0 -0
  635. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/test-85cf18ae78ff535c.js +0 -0
  636. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/pages/triggers-e0172c422c95eda9.js +0 -0
  637. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/polyfills-5cd94c89d3acac5f.js +0 -0
  638. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/chunks/webpack-bc5e4eb2c1ff587c.js +0 -0
  639. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/_next/static/css/d1e8e64d0b07af2f.css +0 -0
  640. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/favicon.ico +0 -0
  641. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Bold.ttf +0 -0
  642. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Light.ttf +0 -0
  643. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Medium.ttf +0 -0
  644. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Regular.ttf +0 -0
  645. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Retina.ttf +0 -0
  646. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-SemiBold.ttf +0 -0
  647. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/LICENSE.txt +0 -0
  648. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Black.ttf +0 -0
  649. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
  650. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Bold.ttf +0 -0
  651. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
  652. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Italic.ttf +0 -0
  653. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Light.ttf +0 -0
  654. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
  655. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Medium.ttf +0 -0
  656. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
  657. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Regular.ttf +0 -0
  658. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Thin.ttf +0 -0
  659. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
  660. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/LICENSE.txt +0 -0
  661. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/README.txt +0 -0
  662. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/RobotoMono-Italic-VariableFont_wght.ttf +0 -0
  663. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/RobotoMono-VariableFont_wght.ttf +0 -0
  664. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Bold.ttf +0 -0
  665. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-BoldItalic.ttf +0 -0
  666. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ExtraLight.ttf +0 -0
  667. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ExtraLightItalic.ttf +0 -0
  668. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Italic.ttf +0 -0
  669. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Light.ttf +0 -0
  670. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-LightItalic.ttf +0 -0
  671. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Medium.ttf +0 -0
  672. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-MediumItalic.ttf +0 -0
  673. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Regular.ttf +0 -0
  674. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-SemiBold.ttf +0 -0
  675. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-SemiBoldItalic.ttf +0 -0
  676. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Thin.ttf +0 -0
  677. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ThinItalic.ttf +0 -0
  678. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/images/backfill.jpg +0 -0
  679. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/images/banner-shape-purple-peach.jpg +0 -0
  680. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/images/dashboard-api-key.webp +0 -0
  681. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/images/extra.jpg +0 -0
  682. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/images/monitor.jpg +0 -0
  683. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/images/run B.jpg +0 -0
  684. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/images/sessions/abstract.png +0 -0
  685. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/frontend_dist/vercel.svg +0 -0
  686. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/kernel_output_parser.py +0 -0
  687. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/kernels.py +0 -0
  688. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/scheduler_manager.py +0 -0
  689. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/subscriber.py +0 -0
  690. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/utils/__init__.py +0 -0
  691. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/utils/frontend_renderer.py +0 -0
  692. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/utils/output_display.py +0 -0
  693. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/server/websocket_server.py +0 -0
  694. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/__init__.py +0 -0
  695. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/airbyte/__init__.py +0 -0
  696. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/airbyte/client.py +0 -0
  697. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/airbyte/config.py +0 -0
  698. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/airbyte/constants.py +0 -0
  699. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/airbyte/exceptions.py +0 -0
  700. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/airbyte/server.py +0 -0
  701. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/__init__.py +0 -0
  702. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/ecs/__init__.py +0 -0
  703. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/ecs/config.py +0 -0
  704. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/ecs/ecs.py +0 -0
  705. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/emr/__init__.py +0 -0
  706. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/emr/config.py +0 -0
  707. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/emr/emr.py +0 -0
  708. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/emr/emr_basics.py +0 -0
  709. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/emr/launcher.py +0 -0
  710. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/emr/resource_manager.py +0 -0
  711. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/events/__init__.py +0 -0
  712. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/events/events.py +0 -0
  713. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/s3/__init__.py +0 -0
  714. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/s3/s3.py +0 -0
  715. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/secrets_manager/__init__.py +0 -0
  716. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/aws/secrets_manager/secrets_manager.py +0 -0
  717. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/datadog/__init__.py +0 -0
  718. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/dbt/__init__.py +0 -0
  719. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/dbt/config.py +0 -0
  720. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/dbt/constants.py +0 -0
  721. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/dbt/dbt.py +0 -0
  722. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/email/__init__.py +0 -0
  723. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/email/config.py +0 -0
  724. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/email/email.py +0 -0
  725. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/gcp/__init__.py +0 -0
  726. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/gcp/cloud_run/__init__.py +0 -0
  727. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/gcp/cloud_run/cloud_run.py +0 -0
  728. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/gcp/cloud_run/config.py +0 -0
  729. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/hightouch/__init__.py +0 -0
  730. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/hightouch/config.py +0 -0
  731. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/hightouch/constants.py +0 -0
  732. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/hightouch/hightouch.py +0 -0
  733. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/k8s/__init__.py +0 -0
  734. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/k8s/constants.py +0 -0
  735. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/k8s/job_manager.py +0 -0
  736. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/metaplane/__init__.py +0 -0
  737. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/metaplane/config.py +0 -0
  738. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/metaplane/metaplane.py +0 -0
  739. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/slack/__init__.py +0 -0
  740. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/slack/config.py +0 -0
  741. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/slack/slack.py +0 -0
  742. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/stitch/__init__.py +0 -0
  743. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/stitch/config.py +0 -0
  744. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/stitch/constants.py +0 -0
  745. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/stitch/stitch.py +0 -0
  746. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/teams/__init__.py +0 -0
  747. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/teams/config.py +0 -0
  748. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/teams/teams.py +0 -0
  749. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/tracking/__init__.py +0 -0
  750. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/services/tracking/metrics.py +0 -0
  751. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/settings/__init__.py +0 -0
  752. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/__init__.py +0 -0
  753. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/array.py +0 -0
  754. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/code.py +0 -0
  755. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/constants.py +0 -0
  756. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/conversions.py +0 -0
  757. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/custom_types.py +0 -0
  758. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/dates.py +0 -0
  759. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/environments.py +0 -0
  760. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/hash.py +0 -0
  761. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/http_client.py +0 -0
  762. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/io.py +0 -0
  763. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/logger.py +0 -0
  764. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/multi.py +0 -0
  765. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/parsers.py +0 -0
  766. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/retry.py +0 -0
  767. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/strings.py +0 -0
  768. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/urls.py +0 -0
  769. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/shared/utils.py +0 -0
  770. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/__init__.py +0 -0
  771. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/constants.py +0 -0
  772. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sinks/__init__.py +0 -0
  773. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sinks/base.py +0 -0
  774. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sinks/kinesis.py +0 -0
  775. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sinks/opensearch.py +0 -0
  776. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sinks/sink_factory.py +0 -0
  777. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sources/__init__.py +0 -0
  778. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sources/azure_event_hub.py +0 -0
  779. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sources/base.py +0 -0
  780. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sources/kinesis.py +0 -0
  781. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sources/rabbitmq.py +0 -0
  782. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/streaming/sources/source_factory.py +0 -0
  783. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/__init__.py +0 -0
  784. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/api/__init__.py +0 -0
  785. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/api/operations/__init__.py +0 -0
  786. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/api/operations/base.py +0 -0
  787. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/api/operations/test_sessions.py +0 -0
  788. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/api/operations/test_users.py +0 -0
  789. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/base_test.py +0 -0
  790. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/__init__.py +0 -0
  791. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/__init__.py +0 -0
  792. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_clean_column_names.py +0 -0
  793. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_fix_syntax_error.py +0 -0
  794. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_impute_values.py +0 -0
  795. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_reformat_values.py +0 -0
  796. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_collinear_columns.py +0 -0
  797. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_columns_with_high_empty_rate.py +0 -0
  798. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_columns_with_single_value.py +0 -0
  799. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_duplicate_rows.py +0 -0
  800. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_outliers.py +0 -0
  801. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/statistics/__init__.py +0 -0
  802. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/statistics/test_calculator.py +0 -0
  803. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/test_column_type_detector.py +0 -0
  804. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/__init__.py +0 -0
  805. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/shared.py +0 -0
  806. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/test_base.py +0 -0
  807. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/test_column.py +0 -0
  808. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/test_custom_actions.py +0 -0
  809. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/test_helpers.py +0 -0
  810. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/test_row.py +0 -0
  811. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/test_utils.py +0 -0
  812. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_cleaner/transformer_actions/test_variable_replacer.py +0 -0
  813. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_preparation/__init__.py +0 -0
  814. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_preparation/models/__init__.py +0 -0
  815. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_preparation/models/test_block.py +0 -0
  816. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_preparation/models/test_pipeline.py +0 -0
  817. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_preparation/models/test_variable.py +0 -0
  818. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/data_preparation/test_variable_manager.py +0 -0
  819. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/factory.py +0 -0
  820. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/io/__init__.py +0 -0
  821. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/io/test_config.py +0 -0
  822. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/io/test_export_utils.py +0 -0
  823. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/__init__.py +0 -0
  824. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/db/__init__.py +0 -0
  825. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/db/test_models.py +0 -0
  826. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/notification/__init__.py +0 -0
  827. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/notification/constants.py +0 -0
  828. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/notification/test_config.py +0 -0
  829. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/notification/test_sender.py +0 -0
  830. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/queue/__init__.py +0 -0
  831. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/queue/test_process_queue.py +0 -0
  832. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/test_execution_process_manager.py +0 -0
  833. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/test_job_manager.py +0 -0
  834. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/test_pipeline_scheduler.py +0 -0
  835. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/triggers/__init__.py +0 -0
  836. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/triggers/test_event_trigger.py +0 -0
  837. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/orchestration/triggers/test_loop_time_trigger.py +0 -0
  838. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/services/__init__.py +0 -0
  839. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/services/aws/__init__.py +0 -0
  840. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/services/aws/s3/__init__.py +0 -0
  841. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/services/aws/s3/test_s3.py +0 -0
  842. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/services/datadog/__init__.py +0 -0
  843. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/services/datadog/test_datadog.py +0 -0
  844. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/services/k8s/__init__.py +0 -0
  845. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/services/k8s/test_job_manager.py +0 -0
  846. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/shared/__init__.py +0 -0
  847. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/shared/test_io.py +0 -0
  848. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/shared/test_retry.py +0 -0
  849. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/__init__.py +0 -0
  850. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sinks/__init__.py +0 -0
  851. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sinks/test_kinesis.py +0 -0
  852. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sinks/test_opensearch.py +0 -0
  853. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sinks/test_sink_factory.py +0 -0
  854. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sources/__init__.py +0 -0
  855. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sources/test_azure_event_hub.py +0 -0
  856. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sources/test_kinesis.py +0 -0
  857. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sources/test_rabbitmq.py +0 -0
  858. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/streaming/sources/test_source_factory.py +0 -0
  859. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/tests/test_shared.py +0 -0
  860. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/utils/__init__.py +0 -0
  861. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/utils/code.py +0 -0
  862. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/utils/logger/__init__.py +0 -0
  863. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai/utils/logger/constants.py +0 -0
  864. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai.egg-info/dependency_links.txt +0 -0
  865. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai.egg-info/entry_points.txt +0 -0
  866. {mage-ai-0.8.10 → mage-ai-0.8.12}/mage_ai.egg-info/top_level.txt +0 -0
  867. {mage-ai-0.8.10 → mage-ai-0.8.12}/pyproject.toml +0 -0
  868. {mage-ai-0.8.10 → mage-ai-0.8.12}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mage-ai
3
- Version: 0.8.10
3
+ Version: 0.8.12
4
4
  Summary: Mage is a tool for building and deploying data pipelines.
5
5
  Home-page: https://github.com/mage-ai/mage-ai
6
6
  Author: Mage
@@ -38,6 +38,7 @@ BlockPolicy.allow_read(BlockPresenter.default_attributes + [], scopes=[
38
38
  ], condition=lambda policy: policy.has_at_least_editor_role())
39
39
 
40
40
  BlockPolicy.allow_read([
41
+ 'bookmarks',
41
42
  'content',
42
43
  'outputs',
43
44
  ] + BlockPresenter.default_attributes, scopes=[
@@ -68,9 +69,11 @@ BlockPolicy.allow_write([
68
69
 
69
70
  BlockPolicy.allow_write([
70
71
  'all_upstream_blocks_executed',
72
+ 'bookmark_values',
71
73
  'color',
72
74
  'configuration',
73
75
  'content',
76
+ 'destination_table',
74
77
  'downstream_blocks',
75
78
  'executor_config',
76
79
  'executor_type',
@@ -80,6 +83,7 @@ BlockPolicy.allow_write([
80
83
  'name',
81
84
  'outputs',
82
85
  'status',
86
+ 'tap_stream_id',
83
87
  'type',
84
88
  'upstream_blocks',
85
89
  'uuid',
@@ -88,3 +92,12 @@ BlockPolicy.allow_write([
88
92
  ], on_action=[
89
93
  constants.UPDATE,
90
94
  ], condition=lambda policy: policy.has_at_least_editor_role())
95
+
96
+ BlockPolicy.allow_query([
97
+ 'destination_table',
98
+ 'state_stream',
99
+ ], scopes=[
100
+ OauthScope.CLIENT_PRIVATE,
101
+ ], on_action=[
102
+ constants.DETAIL,
103
+ ], condition=lambda policy: policy.has_at_least_viewer_role())
@@ -0,0 +1,30 @@
1
+ from mage_ai.api.oauth_scope import OauthScope
2
+ from mage_ai.api.operations import constants
3
+ from mage_ai.api.policies.BasePolicy import BasePolicy
4
+ from mage_ai.api.presenters.SyncPresenter import SyncPresenter
5
+
6
+
7
+ class SyncPolicy(BasePolicy):
8
+ pass
9
+
10
+
11
+ SyncPolicy.allow_read(SyncPresenter.default_attributes, scopes=[
12
+ OauthScope.CLIENT_PRIVATE,
13
+ ], on_action=[
14
+ constants.CREATE,
15
+ constants.UPDATE,
16
+ ], condition=lambda policy: policy.has_at_least_viewer_role())
17
+
18
+ SyncPolicy.allow_write(SyncPresenter.default_attributes, scopes=[
19
+ OauthScope.CLIENT_PRIVATE,
20
+ ], on_action=[
21
+ constants.CREATE,
22
+ ], condition=lambda policy: policy.has_at_least_editor_role())
23
+
24
+ SyncPolicy.allow_write([
25
+ 'action_type',
26
+ ], scopes=[
27
+ OauthScope.CLIENT_PRIVATE,
28
+ ], on_action=[
29
+ constants.UPDATE,
30
+ ], condition=lambda policy: policy.has_at_least_editor_role())
@@ -30,13 +30,24 @@ class BlockPresenter(BasePresenter):
30
30
  if display_format in [constants.CREATE, constants.UPDATE]:
31
31
  return self.model.to_dict(include_content=True)
32
32
  elif display_format in [constants.DETAIL, 'dbt']:
33
- include_outputs = kwargs.get('query', {}).get('include_outputs', [True])
33
+ query = kwargs.get('query', {})
34
+
35
+ include_outputs = query.get('include_outputs', [True])
34
36
  if include_outputs:
35
37
  include_outputs = include_outputs[0]
36
38
 
39
+ state_stream = query.get('state_stream', [None])
40
+ if state_stream:
41
+ state_stream = state_stream[0]
42
+ destination_table = query.get('destination_table', [None])
43
+ if destination_table:
44
+ destination_table = destination_table[0]
45
+
37
46
  data = self.model.to_dict(
47
+ destination_table=destination_table,
38
48
  include_content=True,
39
49
  include_outputs=include_outputs,
50
+ state_stream=state_stream,
40
51
  )
41
52
 
42
53
  if 'dbt' == display_format:
@@ -0,0 +1,11 @@
1
+ from mage_ai.api.presenters.BasePresenter import BasePresenter
2
+
3
+
4
+ class SyncPresenter(BasePresenter):
5
+ default_attributes = [
6
+ 'branch',
7
+ 'remote_repo_link',
8
+ 'repo_path',
9
+ 'sync_on_pipeline_run',
10
+ 'type',
11
+ ]
@@ -53,12 +53,12 @@ class BlockResource(GenericResource):
53
53
  block_type_and_uuid = urllib.parse.unquote(pk)
54
54
  parts = block_type_and_uuid.split('/')
55
55
 
56
- if len(parts) != 2:
56
+ if len(parts) < 2:
57
57
  error.update(message='The url path should be in block_type/block_uuid format.')
58
58
  raise ApiError(error)
59
59
 
60
60
  block_type = parts[0]
61
- block_uuid = parts[1]
61
+ block_uuid = '/'.join(parts[1:])
62
62
  parts2 = block_uuid.split('.')
63
63
  language = None
64
64
  if len(parts2) >= 2:
@@ -78,4 +78,11 @@ class BlockResource(GenericResource):
78
78
 
79
79
  @safe_db_query
80
80
  def update(self, payload, **kwargs):
81
- self.model.update(payload)
81
+ query = kwargs.get('query', {})
82
+ update_state = query.get('update_state', [False])
83
+ if update_state:
84
+ update_state = update_state[0]
85
+ self.model.update(
86
+ payload,
87
+ update_state=update_state,
88
+ )
@@ -0,0 +1,43 @@
1
+ from mage_ai.api.resources.GenericResource import GenericResource
2
+ from mage_ai.data_preparation.preferences import get_preferences
3
+ from mage_ai.data_preparation.sync import SyncType, SyncConfig
4
+ from mage_ai.data_preparation.sync.git_sync import GitSync
5
+
6
+
7
+ class SyncResource(GenericResource):
8
+ @classmethod
9
+ def collection(self, query, meta, user, **kwargs):
10
+ preferences = get_preferences()
11
+ sync_config = preferences.sync_config
12
+ return self.build_result_set(
13
+ [sync_config],
14
+ user,
15
+ **kwargs,
16
+ )
17
+
18
+ @classmethod
19
+ def create(self, payload, user, **kwargs):
20
+ sync_config = SyncConfig.load(config=payload)
21
+ get_preferences().update_preferences(
22
+ dict(sync_config=sync_config.to_dict())
23
+ )
24
+
25
+ if sync_config.type == SyncType.GIT:
26
+ # set up Git repo
27
+ GitSync(sync_config)
28
+
29
+ return self(get_preferences().sync_config, user, **kwargs)
30
+
31
+ @classmethod
32
+ def member(self, pk, user, **kwargs):
33
+ return self(get_preferences().sync_config, user, **kwargs)
34
+
35
+ def update(self, payload, **kwargs):
36
+ sync_config = SyncConfig.load(config=self.model)
37
+ action_type = payload.get('action_type')
38
+ if action_type == 'sync_data':
39
+ if sync_config.type == SyncType.GIT:
40
+ sync = GitSync(sync_config)
41
+ sync.sync_data()
42
+
43
+ return self
@@ -1,6 +1,7 @@
1
1
  from mage_ai.data_preparation.logging.logger import DictLogger
2
2
  from mage_ai.data_preparation.logging.logger_manager_factory import LoggerManagerFactory
3
3
  from mage_ai.data_preparation.models.pipeline import Pipeline
4
+ from mage_ai.shared.hash import merge_dict
4
5
  from typing import Dict
5
6
  import asyncio
6
7
 
@@ -33,3 +34,11 @@ class PipelineExecutor:
33
34
  update_status=update_status,
34
35
  ))
35
36
  self.logger_manager.output_logs_to_destination()
37
+
38
+ def _build_tags(self, **kwargs):
39
+ default_tags = dict(
40
+ pipeline_uuid=self.pipeline.uuid,
41
+ )
42
+ if kwargs.get('pipeline_run_id'):
43
+ default_tags['pipeline_run_id'] = kwargs.get('pipeline_run_id')
44
+ return merge_dict(kwargs.get('tags', {}), default_tags)
@@ -69,10 +69,12 @@ class StreamingPipelineExecutor(PipelineExecutor):
69
69
  # TODOs:
70
70
  # 1. Support multiple sources and sinks
71
71
  # 2. Support flink pipeline
72
+
73
+ tags = self._build_tags(**kwargs)
72
74
  if build_block_output_stdout:
73
75
  stdout = build_block_output_stdout(self.pipeline.uuid)
74
76
  else:
75
- stdout = StreamToLogger(self.logger)
77
+ stdout = StreamToLogger(self.logger, logging_tags=tags)
76
78
  try:
77
79
  with redirect_stdout(stdout):
78
80
  with redirect_stderr(stdout):
@@ -1263,6 +1263,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
1263
1263
  include_outputs=False,
1264
1264
  sample_count=None,
1265
1265
  check_if_file_exists: bool = False,
1266
+ **kwargs,
1266
1267
  ):
1267
1268
  data = self.to_dict_base()
1268
1269
  if include_content:
@@ -1280,6 +1281,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
1280
1281
  'Delete the current block to remove it from the pipeline or write code ' +
1281
1282
  f'and save the pipeline to create a new file at {file_path}.',
1282
1283
  )
1284
+
1283
1285
  return data
1284
1286
 
1285
1287
  async def to_dict_async(
@@ -1314,7 +1316,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
1314
1316
 
1315
1317
  return data
1316
1318
 
1317
- def update(self, data):
1319
+ def update(self, data, **kwargs):
1318
1320
  if 'name' in data and data['name'] != self.name:
1319
1321
  self.__update_name(data['name'])
1320
1322
  if (
@@ -1338,6 +1340,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
1338
1340
  if self.has_callback:
1339
1341
  CallbackBlock.create(self.uuid)
1340
1342
  self.__update_pipeline_block()
1343
+
1341
1344
  return self
1342
1345
 
1343
1346
  def update_upstream_blocks(self, upstream_blocks: List[Any]) -> None:
@@ -1505,8 +1508,6 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
1505
1508
  raise Exception(f'Failed to pass tests for block {self.uuid}')
1506
1509
 
1507
1510
  def analyze_outputs(self, variable_mapping, shape_only: bool = False):
1508
- from mage_ai.data_cleaner.data_cleaner import clean as clean_data
1509
-
1510
1511
  if self.pipeline is None:
1511
1512
  return
1512
1513
  for uuid, data in variable_mapping.items():
@@ -1532,6 +1533,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
1532
1533
  else:
1533
1534
  data_for_analysis = data.reset_index(drop=True)
1534
1535
  try:
1536
+ from mage_ai.data_cleaner.data_cleaner import clean as clean_data
1535
1537
  analysis = clean_data(
1536
1538
  data_for_analysis,
1537
1539
  df_original=data,
@@ -314,6 +314,65 @@ class SourceBlock(IntegrationBlock):
314
314
 
315
315
 
316
316
  class DestinationBlock(IntegrationBlock):
317
+ def to_dict(
318
+ self,
319
+ include_content=False,
320
+ include_outputs=False,
321
+ sample_count=None,
322
+ check_if_file_exists: bool = False,
323
+ destination_table: str = None,
324
+ state_stream: str = None,
325
+ ):
326
+ data = {}
327
+ if state_stream and destination_table:
328
+ from mage_ai.data_preparation.models.pipelines.integration_pipeline \
329
+ import IntegrationPipeline
330
+ integration_pipeline = IntegrationPipeline(self.pipeline.uuid)
331
+ destination_state_file_path = integration_pipeline.destination_state_file_path(
332
+ destination_table=destination_table,
333
+ stream=state_stream,
334
+ )
335
+ if os.path.isfile(destination_state_file_path):
336
+ with open(destination_state_file_path, 'r') as f:
337
+ text = f.read()
338
+ d = json.loads(text) if text else {}
339
+ bookmark_values = d.get('bookmarks', {}).get(state_stream)
340
+ data['bookmarks'] = bookmark_values
341
+
342
+ return merge_dict(
343
+ super().to_dict(
344
+ include_content,
345
+ include_outputs,
346
+ sample_count,
347
+ check_if_file_exists,
348
+ ),
349
+ data,
350
+ )
351
+
352
+ def update(self, data, update_state=False):
353
+ if update_state:
354
+ from mage_ai.data_preparation.models.pipelines.integration_pipeline \
355
+ import IntegrationPipeline
356
+ from mage_integrations.destinations.utils \
357
+ import update_destination_state_bookmarks
358
+
359
+ integration_pipeline = IntegrationPipeline(self.pipeline.uuid)
360
+ tap_stream_id = data.get('tap_stream_id')
361
+ destination_table = data.get('destination_table')
362
+ bookmark_values = data.get('bookmark_values', {})
363
+ if tap_stream_id and destination_table:
364
+ destination_state_file_path = integration_pipeline.destination_state_file_path(
365
+ destination_table=destination_table,
366
+ stream=tap_stream_id,
367
+ )
368
+ update_destination_state_bookmarks(
369
+ destination_state_file_path,
370
+ tap_stream_id,
371
+ bookmark_values=bookmark_values
372
+ )
373
+
374
+ return super().update(data)
375
+
317
376
  def output_variables(self, execution_partition: str = None) -> List[str]:
318
377
  return []
319
378
 
@@ -2,6 +2,7 @@ from enum import Enum
2
2
 
3
3
  PIPELINES_FOLDER = 'pipelines'
4
4
  PIPELINE_CONFIG_FILE = 'metadata.yaml'
5
+ PREFERENCES_FILE = '.preferences.yaml'
5
6
  DATA_INTEGRATION_CATALOG_FILE = 'data_integration_catalog.json'
6
7
 
7
8
 
@@ -0,0 +1,43 @@
1
+ from typing import Dict
2
+ from mage_ai.data_preparation.models.constants import PREFERENCES_FILE
3
+ from mage_ai.data_preparation.repo_manager import get_repo_path
4
+ import os
5
+ import traceback
6
+ import yaml
7
+
8
+
9
+ class Preferences:
10
+ def __init__(self, repo_path: str = None, config_dict: Dict = None):
11
+ self.repo_path = repo_path or get_repo_path()
12
+ self.preferences_file_path = \
13
+ os.path.join(self.repo_path, PREFERENCES_FILE)
14
+
15
+ try:
16
+ if not config_dict:
17
+ if os.path.exists(self.preferences_file_path):
18
+ with open(self.preferences_file_path) as f:
19
+ preferences = yaml.full_load(f.read()) or {}
20
+ else:
21
+ preferences = dict()
22
+ else:
23
+ preferences = config_dict
24
+
25
+ self.sync_config = preferences.get('sync_config', dict())
26
+ except Exception:
27
+ traceback.print_exc()
28
+ pass
29
+
30
+ def update_preferences(self, updates: Dict):
31
+ preferences = self.to_dict()
32
+ preferences.update(updates)
33
+ with open(self.preferences_file_path, 'w') as f:
34
+ yaml.dump(preferences, f)
35
+
36
+ def to_dict(self) -> Dict:
37
+ return dict(
38
+ sync_config=self.sync_config
39
+ )
40
+
41
+
42
+ def get_preferences(repo_path=None) -> Preferences:
43
+ return Preferences(repo_path=repo_path)
@@ -0,0 +1,17 @@
1
+ from dataclasses import dataclass
2
+ from enum import Enum
3
+ from mage_ai.shared.config import BaseConfig
4
+ import os
5
+
6
+
7
+ class SyncType(str, Enum):
8
+ GIT = 'git'
9
+
10
+
11
+ @dataclass
12
+ class SyncConfig(BaseConfig):
13
+ type: SyncType
14
+ remote_repo_link: str
15
+ repo_path: str = os.getcwd()
16
+ branch: str = 'main'
17
+ sync_on_pipeline_run: bool = False
@@ -0,0 +1,7 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+
4
+ class BaseSync(ABC):
5
+ @abstractmethod
6
+ def sync_data(self) -> None:
7
+ pass
@@ -0,0 +1,26 @@
1
+ from mage_ai.data_preparation.sync import SyncConfig
2
+ from mage_ai.data_preparation.sync.base_sync import BaseSync
3
+ from mage_ai.shared.logger import VerboseFunctionExec
4
+ import git
5
+
6
+
7
+ class GitSync(BaseSync):
8
+ def __init__(self, sync_config: SyncConfig):
9
+ self.remote_repo_link = sync_config.remote_repo_link
10
+ self.repo_path = sync_config.repo_path
11
+ self.branch = sync_config.branch
12
+ try:
13
+ self.repo = git.Repo(self.repo_path)
14
+ except git.exc.InvalidGitRepositoryError:
15
+ self.repo = git.Repo.init(self.repo_path)
16
+ self.repo.create_remote('origin', self.remote_repo_link)
17
+
18
+ self.origin = self.repo.remotes.origin
19
+
20
+ def sync_data(self):
21
+ with VerboseFunctionExec(
22
+ f'Syncing data with remote repo {self.remote_repo_link}',
23
+ verbose=True,
24
+ ):
25
+ self.origin.fetch(kill_after_timeout=60)
26
+ self.repo.git.reset('--hard', f'origin/{self.branch}')
@@ -18,3 +18,8 @@ consumer_group: unique_consumer_group
18
18
  # mechanism: "PLAIN"
19
19
  # username: username
20
20
  # password: password
21
+
22
+ # Uncomment the config below to use protobuf schema to deserialize message
23
+ # serde_config:
24
+ # serialization_method: PROTOBUF
25
+ # schema_classpath: "path.to.schema.SchemaClass"
@@ -76,6 +76,11 @@ class BaseModel(Base):
76
76
  def full_clean(self, **kwargs) -> None:
77
77
  pass
78
78
 
79
+ @classmethod
80
+ @safe_db_query
81
+ def get(self, uuid):
82
+ return self.query.get(uuid)
83
+
79
84
  def save(self, commit=True) -> None:
80
85
  self.session.add(self)
81
86
  if commit:
@@ -667,6 +672,15 @@ class Backfill(BaseModel):
667
672
 
668
673
  pipeline_runs = relationship('PipelineRun', back_populates='backfill')
669
674
 
675
+ @classmethod
676
+ @safe_db_query
677
+ def filter(self, pipeline_schedule_ids: List = None):
678
+ if pipeline_schedule_ids is not None:
679
+ return Backfill.query.filter(
680
+ Backfill.pipeline_schedule_id.in_(pipeline_schedule_ids),
681
+ )
682
+ return []
683
+
670
684
 
671
685
  class Secret(BaseModel):
672
686
  name = Column(String(255), unique=True)
@@ -14,7 +14,10 @@ from mage_ai.data_preparation.models.block.utils import (
14
14
  from mage_ai.data_preparation.models.constants import PipelineType
15
15
  from mage_ai.data_preparation.models.pipeline import Pipeline
16
16
  from mage_ai.data_preparation.models.pipelines.integration_pipeline import IntegrationPipeline
17
+ from mage_ai.data_preparation.preferences import get_preferences
17
18
  from mage_ai.data_preparation.repo_manager import get_repo_config, get_repo_path
19
+ from mage_ai.data_preparation.sync import SyncConfig
20
+ from mage_ai.data_preparation.sync.git_sync import GitSync
18
21
  from mage_ai.data_preparation.variable_manager import get_global_variables
19
22
  from mage_ai.orchestration.db.models import (
20
23
  Backfill,
@@ -58,6 +61,12 @@ class PipelineScheduler:
58
61
  )
59
62
 
60
63
  def start(self, should_schedule: bool = True) -> None:
64
+ if get_preferences().sync_config:
65
+ sync_config = SyncConfig.load(config=get_preferences().sync_config)
66
+ if sync_config.sync_on_pipeline_run:
67
+ sync = GitSync(sync_config)
68
+ sync.sync_data()
69
+
61
70
  if self.pipeline_run.status == PipelineRun.PipelineRunStatus.RUNNING:
62
71
  return
63
72
  self.pipeline_run.update(status=PipelineRun.PipelineRunStatus.RUNNING)
@@ -126,7 +135,7 @@ class PipelineScheduler:
126
135
  )
127
136
  self.logger_manager.output_logs_to_destination()
128
137
 
129
- schedule = PipelineSchedule.query.get(
138
+ schedule = PipelineSchedule.get(
130
139
  self.pipeline_run.pipeline_schedule_id,
131
140
  )
132
141
 
@@ -735,9 +744,8 @@ def schedule_all():
735
744
  active_pipeline_schedules = \
736
745
  list(PipelineSchedule.active_schedules(pipeline_uuids=repo_pipelines))
737
746
 
738
- backfills = Backfill.query.filter(
739
- Backfill.pipeline_schedule_id.in_([ps.id for ps in active_pipeline_schedules]),
740
- )
747
+ backfills = Backfill.filter(pipeline_schedule_ids=[ps.id for ps in active_pipeline_schedules])
748
+
741
749
  backfills_by_pipeline_schedule_id = index_by(
742
750
  lambda backfill: backfill.pipeline_schedule_id,
743
751
  backfills,
@@ -12,4 +12,4 @@ DATAFRAME_OUTPUT_SAMPLE_COUNT = 10
12
12
  # Dockerfile depends on it because it runs ./scripts/install_mage.sh and uses
13
13
  # the last line to determine the version to install.
14
14
  VERSION = \
15
- '0.8.10'
15
+ '0.8.12'
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=0" name="viewport"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link href="/favicon.ico" rel="icon"/><link rel="preload" href="/_next/static/css/d1e8e64d0b07af2f.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d1e8e64d0b07af2f.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-bc5e4eb2c1ff587c.js" defer=""></script><script src="/_next/static/chunks/framework-7c365855dab1bf41.js" defer=""></script><script src="/_next/static/chunks/main-bb0dd5375146d7fd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-44766f29c8c5b4ce.js" defer=""></script><script src="/_next/static/chunks/pages/_error-235304e5badb19eb.js" defer=""></script><script src="/_next/static/avIy1qfPFOamteWu3WLo7/_buildManifest.js" defer=""></script><script src="/_next/static/avIy1qfPFOamteWu3WLo7/_ssgManifest.js" defer=""></script><script src="/_next/static/avIy1qfPFOamteWu3WLo7/_middlewareManifest.js" defer=""></script><style data-styled="" data-styled-version="5.3.6">html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar;}/*!sc*/
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=0" name="viewport"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link href="/favicon.ico" rel="icon"/><link rel="preload" href="/_next/static/css/d1e8e64d0b07af2f.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d1e8e64d0b07af2f.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-bc5e4eb2c1ff587c.js" defer=""></script><script src="/_next/static/chunks/framework-7c365855dab1bf41.js" defer=""></script><script src="/_next/static/chunks/main-bb0dd5375146d7fd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-77b4b367fdb247d6.js" defer=""></script><script src="/_next/static/chunks/pages/_error-235304e5badb19eb.js" defer=""></script><script src="/_next/static/BJSgpMeWTfdkZw_YRDpOz/_buildManifest.js" defer=""></script><script src="/_next/static/BJSgpMeWTfdkZw_YRDpOz/_ssgManifest.js" defer=""></script><script src="/_next/static/BJSgpMeWTfdkZw_YRDpOz/_middlewareManifest.js" defer=""></script><style data-styled="" data-styled-version="5.3.6">html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar;}/*!sc*/
2
2
  *,*::before,*::after{-webkit-box-sizing:inherit;box-sizing:inherit;}/*!sc*/
3
3
  data-styled.g4[id="sc-global-czSCUT1"]{content:"sc-global-czSCUT1,"}/*!sc*/
4
4
  .kOVcuR .Toastify__toast-container{margin-top:24px;padding:0 !important;width:500px !important;}/*!sc*/
@@ -19,4 +19,4 @@ data-styled.g5[id="ToastWrapper-sc-1a33ph1-0"]{content:"kOVcuR,"}/*!sc*/
19
19
  .next-error-h1 {
20
20
  border-right: 1px solid rgba(255, 255, 255, .3);
21
21
  }
22
- }</style><h1 class="next-error-h1" style="display:inline-block;margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">404<!-- --></h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">This page could not be found<!-- -->.<!-- --></h2></div></div></div><div></div><div></div><div class="ToastWrapper-sc-1a33ph1-0 kOVcuR"><div class="Toastify"></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404},"currentTheme":{"accent":{"alert":"#F6540B","blue":"#4877FF","blueLight":"rgba(72, 119, 255, 0.5)","contentDefaultTransparent":"rgba(174, 174, 174, 0.5)","cyan":"#65E3FF","cyanTransparent":"rgba(101, 227, 255, 0.12)","dbt":"#fc6949","dbtLight":"rgba(252, 105, 73, 0.5)","info":"#00ABFF","infoTransparent":"rgba(0, 171, 255, 0.5)","negative":"#FF1E59","negativeTransparent":"rgba(255, 30, 89, 0.3)","pink":"#FF4FF8","pinkLight":"#FFB9FC","positive":"#00A81A","primaryTransparent":"rgba(155, 108, 167, 0.5)","purple":"#7D55EC","purpleLight":"rgba(125, 85, 236, 0.5)","teal":"#00B4CC","tealLight":"rgba(0, 180, 204, 0.5)","warning":"#DD9900","warningTransparent":"rgba(221, 153, 0, 0.5)","yellow":"#FFCC19","yellowLight":"rgba(255, 204, 25, 0.5)"},"background":{"chartBlock":"#2E3036","codeArea":"#1E1F24","codeTextarea":"#000000","content":"#1B1C20","danger":"#FFD0DB","dark":"#B1B8C3","header":"#1B1B1B","menu":"#0F4CFF","muted":"#F9FAFC","navigation":"#EDEDED","output":"#2E3036","page":"#1E1F24","panel":"#232429","popup":"#27292E","row":"#2C2C2C","row2":"#51535C","scrollbarThumb":"rgba(100, 100, 100, 0.5)","scrollbarThumbHover":"rgba(255, 255, 255, 0.3)","scrollbarTrack":"#2E3036","success":"#8ADE00","table":"#292A2F"},"borders":{"contrast":"#FFFFFF","danger":"#FF144D","dark":"#000000","info":"#FFCC19","light":"#2F3034","medium":"#1C1C1C","success":"#2FCB52"},"brand":{"earth100":"#C6EEDB","earth200":"#9DDFBF","earth300":"#6BBF96","earth400":"#37A46F","earth400Transparent":"rgba(55, 164, 111, 0.4)","earth500":"#00954C","energy100":"#FFF4BA","energy200":"#FFED92","energy300":"#FFE662","energy400":"#FFDA19","energy400Transparent":"rgba(255, 218, 25, 0.04)","energy500":"#F6C000","fire100":"#FFD7E0","fire200":"#FFA3B9","fire300":"#FF547D","fire400":"#FF144D","fire400Transparent":"rgba(255, 20, 77, 0.4)","fire500":"#EB0032","stone100":"#F3E6D7","stone200":"#E3D4C2","stone400":"#BFA78B","stone500":"#AF8859","water100":"#BDCEFF","water200":"#81A1FF","water300":"#517DFF","water400":"#2A60FE","water400Transparent":"rgba(42, 96, 254, 0.4)","water500":"#0F4CFF","wind100":"#EEEAFF","wind200":"#CCC1F4","wind300":"#A698DD","wind400":"#6B50D7","wind400SuperTransparent":"rgba(107, 80, 215, 0.12)","wind400Transparent":"rgba(107, 80, 215, 0.4)","wind500":"#4E32BC"},"chart":{"backgroundPrimary":"#7D55EC","backgroundSecondary":"#FF144D","backgroundTertiary":"#86E2FF","button1":"#4877FF","button2":"#FFCC19","button3":"#8ADE00","button4":"#FF4FF8","button5":"#B98D95","lines":"#9B6CA7","primary":"#6B50D7","secondary":"#FF144D","tertiary":"#2A60FE"},"content":{"active":"#FFFFFF","default":"#AEAEAE","disabled":"rgba(255, 255, 255, 0.3)","inverted":"#2C2C2C","muted":"#787A85"},"elevation":{"visualizationAccent":"#996CFF","visualizationAccentAlt":"#C1ACF7"},"feature":{"active":"rgba(250, 248, 254, 0.14)","disabled":"rgba(201, 206, 218, 0.12)"},"icons":{"neutral":"#787878"},"interactive":{"activeBorder":"#060606","checked":"#060606","dangerBorder":"#FF144D","defaultBackground":"#36383F","defaultBorder":"#1C1C1C","disabledBorder":"#B1B8C3","focusBackground":"#B1B8C3","focusBorder":"#86E2FF","hoverBackground":"#4E4E4E","hoverBorder":"#B9BFCA","hoverOverlay":"rgba(255, 255, 255, 0.1)","linkPrimary":"#1752FF","linkPrimaryHover":"#4877FF","linkSecondary":"#6B50D7","linkSecondaryDisabled":"#C4B9EF","rowHoverBackground":"rgba(0, 0, 0, 0.1)"},"loader":{"color":"#EB0032","colorInverted":"#8ADE00"},"logo":{"color":"#FFFFFF"},"monotone":{"black":"#060606","blackTransparent":"rgba(0, 0, 0, 0.6)","gray":"#B1B8C3","grey100":"#F2F2F2","grey200":"#D5D7DC","grey300":"#B4B8C0","grey400":"#70747C","grey500":"#51535C","purple":"#6B50D7","white":"#FFFFFF"},"neutral":{"n100":"#E7E8EA","n200":"#D8DADE","n300":"#CBCCD0","n400":"#BCBEC4","n500":"#AEB0B6"},"progress":{"negative":"#FF144D","positive":"#6B50D7"},"shadow":{"base":"12px 40px 120px rgba(106, 117, 139, 0.4)","menu":"4px 10px 20px rgba(6, 6, 6, 0.12)","popup":"10px 20px 40px rgba(0, 0, 0, 0.2)","small":"0px, 4px, rgba(0, 0, 0, 0.25)","window":"0px 10px 60px rgba(0, 0, 0, 0.7)"},"status":{"negative":"#FF144D","positive":"#24B400"},"text":{"fileBrowser":"#787A85"}}},"page":"/_error","query":{},"buildId":"avIy1qfPFOamteWu3WLo7","nextExport":true,"isFallback":false,"gip":true,"appGip":true,"scriptLoader":[]}</script></body></html>
22
+ }</style><h1 class="next-error-h1" style="display:inline-block;margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">404<!-- --></h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">This page could not be found<!-- -->.<!-- --></h2></div></div></div><div></div><div></div><div class="ToastWrapper-sc-1a33ph1-0 kOVcuR"><div class="Toastify"></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404},"currentTheme":{"accent":{"alert":"#F6540B","blue":"#4877FF","blueLight":"rgba(72, 119, 255, 0.5)","contentDefaultTransparent":"rgba(174, 174, 174, 0.5)","cyan":"#65E3FF","cyanTransparent":"rgba(101, 227, 255, 0.12)","dbt":"#fc6949","dbtLight":"rgba(252, 105, 73, 0.5)","info":"#00ABFF","infoTransparent":"rgba(0, 171, 255, 0.5)","negative":"#FF1E59","negativeTransparent":"rgba(255, 30, 89, 0.3)","pink":"#FF4FF8","pinkLight":"#FFB9FC","positive":"#00A81A","primaryTransparent":"rgba(155, 108, 167, 0.5)","purple":"#7D55EC","purpleLight":"rgba(125, 85, 236, 0.5)","teal":"#00B4CC","tealLight":"rgba(0, 180, 204, 0.5)","warning":"#DD9900","warningTransparent":"rgba(221, 153, 0, 0.5)","yellow":"#FFCC19","yellowLight":"rgba(255, 204, 25, 0.5)"},"background":{"chartBlock":"#2E3036","codeArea":"#1E1F24","codeTextarea":"#000000","content":"#1B1C20","danger":"#FFD0DB","dark":"#B1B8C3","header":"#1B1B1B","menu":"#0F4CFF","muted":"#F9FAFC","navigation":"#EDEDED","output":"#2E3036","page":"#1E1F24","panel":"#232429","popup":"#27292E","row":"#2C2C2C","row2":"#51535C","scrollbarThumb":"rgba(100, 100, 100, 0.5)","scrollbarThumbHover":"rgba(255, 255, 255, 0.3)","scrollbarTrack":"#2E3036","success":"#8ADE00","table":"#292A2F"},"borders":{"contrast":"#FFFFFF","danger":"#FF144D","dark":"#000000","info":"#FFCC19","light":"#2F3034","medium":"#1C1C1C","success":"#2FCB52"},"brand":{"earth100":"#C6EEDB","earth200":"#9DDFBF","earth300":"#6BBF96","earth400":"#37A46F","earth400Transparent":"rgba(55, 164, 111, 0.4)","earth500":"#00954C","energy100":"#FFF4BA","energy200":"#FFED92","energy300":"#FFE662","energy400":"#FFDA19","energy400Transparent":"rgba(255, 218, 25, 0.04)","energy500":"#F6C000","fire100":"#FFD7E0","fire200":"#FFA3B9","fire300":"#FF547D","fire400":"#FF144D","fire400Transparent":"rgba(255, 20, 77, 0.4)","fire500":"#EB0032","stone100":"#F3E6D7","stone200":"#E3D4C2","stone400":"#BFA78B","stone500":"#AF8859","water100":"#BDCEFF","water200":"#81A1FF","water300":"#517DFF","water400":"#2A60FE","water400Transparent":"rgba(42, 96, 254, 0.4)","water500":"#0F4CFF","wind100":"#EEEAFF","wind200":"#CCC1F4","wind300":"#A698DD","wind400":"#6B50D7","wind400SuperTransparent":"rgba(107, 80, 215, 0.12)","wind400Transparent":"rgba(107, 80, 215, 0.4)","wind500":"#4E32BC"},"chart":{"backgroundPrimary":"#7D55EC","backgroundSecondary":"#FF144D","backgroundTertiary":"#86E2FF","button1":"#4877FF","button2":"#FFCC19","button3":"#8ADE00","button4":"#FF4FF8","button5":"#B98D95","lines":"#9B6CA7","primary":"#6B50D7","secondary":"#FF144D","tertiary":"#2A60FE"},"content":{"active":"#FFFFFF","default":"#AEAEAE","disabled":"rgba(255, 255, 255, 0.3)","inverted":"#2C2C2C","muted":"#787A85"},"elevation":{"visualizationAccent":"#996CFF","visualizationAccentAlt":"#C1ACF7"},"feature":{"active":"rgba(250, 248, 254, 0.14)","disabled":"rgba(201, 206, 218, 0.12)"},"icons":{"neutral":"#787878"},"interactive":{"activeBorder":"#060606","checked":"#060606","dangerBorder":"#FF144D","defaultBackground":"#36383F","defaultBorder":"#1C1C1C","disabledBorder":"#B1B8C3","focusBackground":"#B1B8C3","focusBorder":"#86E2FF","hoverBackground":"#4E4E4E","hoverBorder":"#B9BFCA","hoverOverlay":"rgba(255, 255, 255, 0.1)","linkPrimary":"#1752FF","linkPrimaryHover":"#4877FF","linkSecondary":"#6B50D7","linkSecondaryDisabled":"#C4B9EF","rowHoverBackground":"rgba(0, 0, 0, 0.1)"},"loader":{"color":"#EB0032","colorInverted":"#8ADE00"},"logo":{"color":"#FFFFFF"},"monotone":{"black":"#060606","blackTransparent":"rgba(0, 0, 0, 0.6)","gray":"#B1B8C3","grey100":"#F2F2F2","grey200":"#D5D7DC","grey300":"#B4B8C0","grey400":"#70747C","grey500":"#51535C","purple":"#6B50D7","white":"#FFFFFF"},"neutral":{"n100":"#E7E8EA","n200":"#D8DADE","n300":"#CBCCD0","n400":"#BCBEC4","n500":"#AEB0B6"},"progress":{"negative":"#FF144D","positive":"#6B50D7"},"shadow":{"base":"12px 40px 120px rgba(106, 117, 139, 0.4)","menu":"4px 10px 20px rgba(6, 6, 6, 0.12)","popup":"10px 20px 40px rgba(0, 0, 0, 0.2)","small":"0px, 4px, rgba(0, 0, 0, 0.25)","window":"0px 10px 60px rgba(0, 0, 0, 0.7)"},"status":{"negative":"#FF144D","positive":"#24B400"},"text":{"fileBrowser":"#787A85"}}},"page":"/_error","query":{},"buildId":"BJSgpMeWTfdkZw_YRDpOz","nextExport":true,"isFallback":false,"gip":true,"appGip":true,"scriptLoader":[]}</script></body></html>