mage-ai 0.8.91__tar.gz → 0.8.93__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.
- {mage-ai-0.8.91/mage_ai.egg-info → mage-ai-0.8.93}/PKG-INFO +1 -1
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/BlockPolicy.py +1 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/PipelinePolicy.py +6 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/BlockPresenter.py +1 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/PipelinePresenter.py +2 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/decorators.py +4 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/block_executor.py +68 -3
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/__init__.py +212 -67
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/constants.py +3 -1
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/constants.py +8 -8
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/pipeline.py +83 -5
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/repo_manager.py +5 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/shared/constants.py +2 -1
- mage-ai-0.8.93/mage_ai/data_preparation/templates/conditionals/base.jinja +11 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/constants.py +7 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/mssql.py +11 -1
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/sql.py +8 -1
- mage-ai-0.8.93/mage_ai/orchestration/db/migrations/versions/dfe49d040487_add_condition_failed_status_to_block_.py +39 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/models/schedules.py +5 -1
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/pipeline_scheduler.py +27 -17
- mage-ai-0.8.93/mage_ai/server/api/downloads.py +64 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/constants.py +1 -1
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/execution_manager.py +3 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/404.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/404.html.html +2 -2
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/1424-321c8c08a2b05c19.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/2786-2b3ad2cf216fae42.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/3714-3bd2a8c979d6d820.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/3752-8f15fe0ca9c23cf4.js +1 -0
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/4476-cdae7a65db573bb7.js → mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/4476-c1a62e69cd8e14d5.js +1 -1
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-8aaee96edc252aa3.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-88c03376d807012e.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipeline-runs-915825c19bf42fa1.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills-bf2d83dabe1bd25a.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-f0940870ff5a17f6.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/logs-8ee12ce8362ed576.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runs-a64f7a0aba0f481d.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runtime-3a3a115ab1a86e2f.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs/[run]-160881dab5ef66d8.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-69d63c14abf8cf68.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/syncs-6092226e191dd720.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-549f4708f2912a7a.js +1 -0
- mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/zlCBBK90aKYZtPlYLj9_T/_buildManifest.js +1 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/files.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/index.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/manage/users/[user].html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/manage/users.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/manage.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipeline-runs.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills/[...slug].html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/edit.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/logs.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runs.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runtime.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/runs/[run].html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/runs.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/settings.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/syncs.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers/[...slug].html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines/[pipeline].html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/pipelines.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/settings/account/profile.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/settings/workspace/preferences.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/settings/workspace/sync-data.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/settings/workspace/users.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/settings.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/sign-in.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/terminal.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/test.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/triggers.html +2 -2
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/server.py +8 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/websocket_server.py +3 -2
- mage-ai-0.8.93/mage_ai/services/spark/config.py +13 -0
- mage-ai-0.8.93/mage_ai/services/spark/spark.py +76 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/environments.py +4 -8
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/operations/test_syncs.py +1 -1
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/models/test_pipeline.py +11 -1
- {mage-ai-0.8.91 → mage-ai-0.8.93/mage_ai.egg-info}/PKG-INFO +1 -1
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai.egg-info/SOURCES.txt +23 -19
- {mage-ai-0.8.91 → mage-ai-0.8.93}/setup.py +1 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/1424-c6b0d89ffb4a10b9.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/3714-c70e815b08e3d9be.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/3752-bd78037feb0a755f.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-aa11738683e2250f.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-06aa8a8f1ca2e8d8.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipeline-runs-3260a2dac8df672e.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills-f08b51d9dc56eab5.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-43e71712d3fc0299.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/logs-264439be4f197741.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runs-91ba61b9030eff1f.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runtime-0bbae5456b0e6e82.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs/[run]-86d1477c6671ea30.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-4b0c098074dd3e6d.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/syncs-891c3d3f7a2b634b.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-f4d470fe28b74de7.js +0 -1
- mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/j-J6532RA0pcVgjHCeKSz/_buildManifest.js +0 -1
- mage-ai-0.8.91/mage_ai/services/spark/config.py +0 -7
- mage-ai-0.8.91/mage_ai/services/spark/spark.py +0 -34
- {mage-ai-0.8.91 → mage-ai-0.8.93}/LICENSE +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/MANIFEST.in +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/README.md +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/api_context.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/errors.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/logging.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/middleware.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/monitors/BaseMonitor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/monitors/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/oauth_scope.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/operations/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/operations/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/operations/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/AutocompleteItemPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/BackfillPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/BasePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/BlockOutputPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/BlockRunPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/BlockTemplatePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/ClusterPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/DataProviderPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/EventRulePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/ExtensionOptionPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/FileContentPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/FilePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/FileVersionPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/FolderPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/GitBranchPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/IntegrationDestinationPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/IntegrationSourcePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/IntegrationSourceStreamPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/KernelPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/LogPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/MonitorStatPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/OutputPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/PipelineRunPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/PipelineSchedulePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/ProjectPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/RolePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/SchedulerPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/SecretPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/SessionPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/StatusPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/SyncPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/UserPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/VariablePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/WidgetPolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/WorkspacePolicy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/policies/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/AutocompleteItemPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/BackfillPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/BasePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/BlockOutputPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/BlockRunPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/BlockTemplatePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/ClusterPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/DataProviderPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/EventRulePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/ExtensionOptionPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/FileContentPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/FilePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/FileVersionPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/FolderPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/GitBranchPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/IntegrationDestinationPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/IntegrationSourcePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/IntegrationSourceStreamPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/KernelPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/LogPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/MonitorStatPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/OutputPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/PipelineRunPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/PipelineSchedulePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/ProjectPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/RolePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/SchedulerPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/SecretPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/SessionPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/StatusPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/SyncPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/UserPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/VariablePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/WidgetPresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/WorkspacePresenter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/mixins/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/presenters/mixins/users.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/AutocompleteItemResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/BackfillResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/BaseResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/BlockOutputResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/BlockResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/BlockRunResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/BlockTemplateResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/ClusterResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/DataProviderResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/DatabaseResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/EventRuleResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/ExtensionOptionResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/FileContentResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/FileResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/FileVersionResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/FolderResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/GenericResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/GitBranchResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/IntegrationDestinationResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/IntegrationSourceResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/IntegrationSourceStreamResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/KernelResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/LogResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/MonitorStatResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/OutputResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/PipelineResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/PipelineRunResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/PipelineScheduleResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/ProjectResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/Resource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/RoleResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/SchedulerResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/SecretResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/SessionResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/StatusResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/SyncResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/UserResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/VariableResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/WidgetResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/WorkspaceResource.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/mixins/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/shared/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/shared/collections.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/resources/shared/collective_loaders.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/result_set.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/api/views.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/authentication/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/authentication/ldap.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/authentication/oauth2.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/authentication/passwords.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/autocomplete/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/autocomplete/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cli/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cli/main.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cli/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/aws/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/aws/ecs_task_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/aws/emr_cluster_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/cluster_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/gcp/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/gcp/cloud_run_service_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/kubernetes/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/cluster_manager/kubernetes/workload_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/analysis/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/analysis/calculator.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/analysis/charts.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/analysis/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/clean_column_names.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/fix_syntax_errors.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/impute_values.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/reformat_values.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/remove_collinear_columns.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/remove_columns_with_high_empty_rate.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/remove_columns_with_single_value.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/remove_duplicate_rows.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/cleaning_rules/remove_outliers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/column_types/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/column_types/column_type_detector.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/column_types/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/data_cleaner.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/estimators/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/estimators/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/estimators/encoders.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/estimators/outlier_removal.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/pipelines/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/pipelines/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/shared/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/shared/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/statistics/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/statistics/calculator.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/action_code.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/column.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/custom_action.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/dependency_resolution.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/helpers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/row.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/shared.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/spark/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/spark/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/spark/transformers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/addition.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/constant.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/date_trunc.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/difference.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/distance_between.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/divide.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/formatted_date.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/if_else.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/multiply.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/string_replace.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/string_split.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/udf/substring.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_cleaner/transformer_actions/variable_replacer.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/destinations/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/destinations/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/logger/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/logger/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/sources/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/sources/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/utils/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/utils/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/utils/parsers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_integrations/utils/scheduler.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/azure_container_instance_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/ecs_block_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/executor_factory.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/gcp_cloud_run_block_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/k8s_block_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/k8s_pipeline_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/pipeline_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/pyspark_block_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/pyspark_pipeline_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/executors/streaming_pipeline_executor.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/git/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/logging/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/logging/gcs_logger_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/logging/logger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/logging/logger_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/logging/logger_manager_factory.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/logging/s3_logger_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/dbt/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/dbt/utils/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/errors.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/extension/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/extension/block.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/extension/great_expectations.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/extension/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/integration/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/r/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/r/templates/data_exporter.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/r/templates/data_loader.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/r/templates/transformer.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/bigquery.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/clickhouse.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/druid.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/mssql.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/mysql.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/postgres.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/redshift.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/snowflake.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/spark.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/trino.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/utils/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/sql/utils/shared.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/block/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/errors.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/file.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/pipelines/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/pipelines/integration_pipeline.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/pipelines/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/project.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/triggers/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/variable.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/widget/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/widget/charts.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/widget/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/models/widget/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/preferences.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/shared/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/shared/retry.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/shared/secrets.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/shared/stream.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/shared/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/storage/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/storage/base_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/storage/local_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/storage/s3_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/storage/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/sync/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/sync/base_sync.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/sync/git_sync.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/callbacks/base.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/callbacks/default.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/callbacks/orchestration/triggers/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/custom/python/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/azure_blob_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/bigquery.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/deltalake/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/deltalake/azure_blob_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/deltalake/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/deltalake/gcs.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/deltalake/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/file.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/google_cloud_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/mongodb.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/mysql.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/orchestration/triggers/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/postgres.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/pyspark/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/pyspark/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/r/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/redshift.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/snowflake.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/streaming/dummy.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/streaming/kafka.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/streaming/kinesis.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/streaming/mongodb.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/streaming/opensearch.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_exporters/streaming/s3.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/api.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/azure_blob_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/bigquery.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/deltalake/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/deltalake/azure_blob_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/deltalake/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/deltalake/gcs.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/deltalake/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/druid.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/file.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/google_cloud_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/mongodb.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/mysql.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/orchestration/triggers/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/postgres.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/pyspark/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/pyspark/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/r/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/redshift.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/snowflake.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/streaming/amazon_sqs.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/streaming/azure_event_hub.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/streaming/google_cloud_pubsub.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/streaming/kafka.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/streaming/kinesis.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/data_loaders/streaming/rabbitmq.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/extensions/great_expectations/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/main/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/main/metadata.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/main/projects/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/pipeline/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/pipeline/metadata.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/pipeline_execution/emr_bootstrap.sh +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/pipeline_execution/spark_script.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/.gitignore +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/charts/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/custom/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/data_exporters/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/data_exporters/export_titanic_clean.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/data_loaders/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/data_loaders/load_titanic.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/dbt/profiles.yml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/extensions/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/io_config.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/metadata.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/pipelines/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/pipelines/example_pipeline/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/pipelines/example_pipeline/metadata.yaml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/requirements.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/scratchpads/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/transformers/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/transformers/fill_in_missing_values.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/repo/utils/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/sensors/bigquery.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/sensors/default.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/sensors/mysql.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/sensors/postgres.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/sensors/redshift.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/sensors/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/sensors/snowflake.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/template.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/testable.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/data_warehouse_transformer.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/default.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/default_pyspark.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/default_streaming.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/r/default.r +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/suggestion_fmt.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/action.jinja +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/average.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/clean_column_name.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/count.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/count_distinct.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/diff.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/first.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/fix_syntax_errors.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/impute.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/last.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/max.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/median.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/min.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/normalize.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/reformat.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/remove.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/remove_outliers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/select.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/shift_down.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/shift_up.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/standardize.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/sum.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/drop_duplicate.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/filter.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/remove.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/sort.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/templates/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/utils/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/utils/block/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/utils/block/convert_content.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/data_preparation/variable_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/errors/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/errors/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/extensions/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/extensions/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/extensions/dbt/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/extensions/dbt/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/extensions/great_expectations/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/extensions/great_expectations/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/azure_blob_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/bigquery.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/clickhouse.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/druid.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/export_utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/file.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/google_cloud_storage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/io_config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/mongodb.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/mysql.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/postgres.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/redshift.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/snowflake.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/spark.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/trino.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/io/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/airflow.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/backfills/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/backfills/service.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/alembic.ini +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/database_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/errors.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/README.md +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/env.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/script.py.mako +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/053ee2c10d85_add_completed_at.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/067326f43bc3_add_variables_to_pipelinerun.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/1a737bdee53b_add_preferences_to_user.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/1bfc6d904929_add_indices_to_schedule_models.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/1d8e65aeefdd_add_settings_to_pipeline_schedule.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/1f9353eddbc6_add_secrets_table.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/21e31d66ccea_add_pipeline_uuid_index_to_pipeline_.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/2266370f589b_add_indexes_to_pipeline_run.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/26305e46df52_create_backfills_table.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/3fafd217efa7_add_event_matcher_model.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/52ab80005742_add_variables_to_pipeline_schedule.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/5cd59ec4cf1d_add_passed_sla_to_pipeline_run.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/643b6e65e814_add_unique_indexes_on_authentication_.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/66e67039b8a2_add_executor_type_to_pipeline_run.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/6aecc9bc451c_update_schedule_type_enum.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/7ac6fed06918_add_token_column_to_pipeline_schedule_.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/83a74eca6ea1_create_user_roles_roles_and_permissions.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/847ea6602d6f_add_upstream_failed_to_block_run_status.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/84de4cdd6126_add_sla_to_pipeline_schedule.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/8971d4cd5b39_add_event_variables_and_metadata_to_.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/97ff9f55a3c0_create_users_oauth2_applications_and_.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/b01be687e537_add_started_at_to_block_run.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/c07a23ff782b_add_initial_tables.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/e7beb59b44f9_add_repo_path_to_pipeline_schedule.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/migrations/versions/ec5df57a1c60_add_metrics_to_block_runs.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/models/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/models/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/models/oauth.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/models/secrets.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/db/process.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/execution_process_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/job_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/metrics/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/metrics/pipeline_run.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/monitor/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/monitor/monitor_stats.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/notification/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/notification/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/notification/sender.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/queue/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/queue/celery_queue.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/queue/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/queue/process_queue.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/queue/queue.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/queue/queue_factory.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/run_status_checker.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/triggers/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/triggers/api.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/triggers/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/triggers/event_trigger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/triggers/loop_time_trigger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/triggers/time_trigger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/utils/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/orchestration/utils/resources.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/sample_datasets/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/sample_datasets/product_purchases.csv +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/sample_datasets/salary_survey.csv +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/sample_datasets/titanic_survival.csv +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/sample_datasets/user_emails.csv +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/active_kernel.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/blocks.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/clusters.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/errors.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/events.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/integration_sources.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/projects.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/triggers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/api/v1.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/app.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/client/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/client/mage.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/data/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/data/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/data/models.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/docs_server.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/1005-5c88ae13680d7023.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/1150.1378afaa474df64a.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/1240.0819f45820d22263.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/1286-a62050b3f897c6be.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/1450.d383f64c169d4278.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/1774-aa51ef1da7217ff9.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/2125-e6ce3c9a08d9d3b1.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/2481.0454a0e25dc7e027.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/2508.724531e7f9cf5f36.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/2545.8371b39c898ae92b.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/261.0a24b4ece1d29aa1.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/266.e301071d22592682.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/2714-1e79e9f2e998b544.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/29107295-989a0767a635d9d5.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/3077-5f598aed0c29fc0a.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/3453.992f4b1667e9882c.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/3467.38cd0654ba6f788f.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/3835.df296b4e4078e985.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/3873.4b3eace753998412.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/3898.880191695bb05845.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4042.5e16d36209052351.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4092.536ee541241f4538.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4388.04098706f32e69e7.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/440.3ab77942f659ea0c.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4450.79f14f763d55c63e.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4454.13a2404adecaa39e.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4495-4f0340aa82e0c623.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4776.753ad29fa0a29a4a.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4804-01a10103ebe26ca8.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4822-337f23e5783da975.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/4883.a5bb0edbf8f3cc8f.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/5008.29c2662ecc2b04c7.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/5104.1edcf4437c471dd4.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/5164.857023e800905b6f.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/547-f3f2ccd9dcde9459.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/5729.0f2748e9e6dab951.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/5824.628653557e904674.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/5872-1767c45ee6690ae5.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/5896-10a676bcc86978cc.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/6042.c59010de9e699437.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/6115.0c85e507543394ea.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/6116.871a682ddf535aca.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/6434.10380ee0968636ba.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/6443.7b6d2b4e51018184.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/6507.d3a17777d2c294e6.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/6958.8f39c585d36737a7.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/7011-81dd8269c4806d26.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/7107-b89772bb2a2669df.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/72fdc299.2d5ec188af5d0049.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/739.3d24945544b37e52.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/7400-e5e39ae07de554b2.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/7607-324c3a1e4e7d0628.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/792.010ca00d79b2112f.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/7947.77be4bec4d47774e.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/7951.fee8b6c27c9ef777.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8018.968bf87c390e3312.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8097.b0345f30a7390c1d.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8180-0c53312021451bb7.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8256.290ceb269b1ffe26.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/826.75268ee34f93393a.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8277.5003e1d94bb85156.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8312-71137409aea5d028.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/844-1e171f361e63b36d.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8735-1a3d39946add4aea.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8762.dff300f86bef8573.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8789-4f858e520d46973b.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8807.a68c69c8fe0a8c01.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8849.db0d50b4d84b09a6.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8901.21d26d5a1ee473fe.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/8920.5700e380a2999098.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9258.6c6ef544c701a011.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9270-e35a5eb3dae4c3ca.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9307.d4baf7aebbcef1f0.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9350-1ff50f1d7b9ee754.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9361.a0820e3069f5ef74.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9363.6b811b4c86277e07.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9437.a3c32f45cf9ef69b.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9566.f8bd24768ed14ecb.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9633.40e5056ca1e2b22a.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9785.5ff26cb26d84d6a1.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9832-f97919376d52e3bf.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9855.c4394a68322be9f8.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/9927.e82a3e1e21990d77.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/bd1a647f.6050372acaa5cc3c.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/framework-7c365855dab1bf41.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/main-bb0dd5375146d7fd.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/_error-235304e5badb19eb.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/files-62c95766fcf47143.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/index-b6cd94a079629572.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users/[user]-8b2482416f3958b0.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users-430a971c087e6de4.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-6342d4f39d7f2b5c.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors-092f364100995ba6.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/settings-55748e7fcf738d91.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-4acba123203d0a5d.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers-7990c5c7af475c5f.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]-ca9457e1a6bced4b.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-bf83d167f46905c6.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-3b26db0dd0962783.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/sync-data-b602fa9b6ffabd12.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-70cbb7d5cb54a84a.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings-d594a66a568306da.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/sign-in-56fb21d1b7d55ca9.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/terminal-0d2260ad08dfe44a.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/test-bd801bde63db7c9e.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/pages/triggers-d74d0f163157ba65.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/polyfills-5cd94c89d3acac5f.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/chunks/webpack-bc5e4eb2c1ff587c.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/_next/static/css/d1e8e64d0b07af2f.css +0 -0
- {mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/j-J6532RA0pcVgjHCeKSz → mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/zlCBBK90aKYZtPlYLj9_T}/_middlewareManifest.js +0 -0
- {mage-ai-0.8.91/mage_ai/server/frontend_dist/_next/static/j-J6532RA0pcVgjHCeKSz → mage-ai-0.8.93/mage_ai/server/frontend_dist/_next/static/zlCBBK90aKYZtPlYLj9_T}/_ssgManifest.js +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/favicon.ico +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Bold.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Light.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Medium.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Regular.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Retina.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-SemiBold.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/LICENSE.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Black.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Bold.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Italic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Light.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Medium.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Regular.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Thin.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/LICENSE.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/README.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/RobotoMono-Italic-VariableFont_wght.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/RobotoMono-VariableFont_wght.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Bold.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-BoldItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ExtraLight.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ExtraLightItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Italic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Light.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-LightItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Medium.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-MediumItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Regular.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-SemiBold.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-SemiBoldItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Thin.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ThinItalic.ttf +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/backfill.jpg +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/banner-shape-purple-peach.jpg +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/dashboard-api-key.webp +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/extensions/dbt/logo.png +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/extensions/great_expectations/logo.png +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/extra.jpg +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/monitor.jpg +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/run B.jpg +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/images/sessions/abstract.png +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/frontend_dist/vercel.svg +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/kernel_output_parser.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/kernels.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/logger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/scheduler_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/subscriber.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/terminal_server.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/utils/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/utils/frontend_renderer.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/server/utils/output_display.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/airbyte/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/airbyte/client.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/airbyte/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/airbyte/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/airbyte/exceptions.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/airbyte/server.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/ecs/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/ecs/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/ecs/ecs.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/emr/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/emr/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/emr/emr.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/emr/emr_basics.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/emr/launcher.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/emr/resource_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/events/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/events/events.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/s3/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/s3/s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/secrets_manager/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/aws/secrets_manager/secrets_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/azure/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/azure/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/azure/container_instance/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/azure/container_instance/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/azure/container_instance/container_instance.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/datadog/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/dbt/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/dbt/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/dbt/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/dbt/dbt.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/email/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/email/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/email/email.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/gcp/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/gcp/cloud_run/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/gcp/cloud_run/cloud_run.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/gcp/cloud_run/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/google_chat/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/google_chat/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/google_chat/google_chat.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/hightouch/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/hightouch/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/hightouch/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/hightouch/hightouch.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/k8s/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/k8s/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/k8s/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/k8s/job_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/metaplane/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/metaplane/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/metaplane/metaplane.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/opsgenie/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/opsgenie/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/opsgenie/opsgenie.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/slack/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/slack/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/slack/slack.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/spark/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/stitch/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/stitch/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/stitch/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/stitch/stitch.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/teams/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/teams/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/teams/teams.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/tracking/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/services/tracking/metrics.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/settings/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/array.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/code.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/conversions.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/custom_types.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/dates.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/hash.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/http_client.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/io.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/logger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/multi.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/parsers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/retry.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/security.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/strings.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/urls.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/shared/utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/amazon_s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/dummy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/kafka.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/kinesis.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/mongodb.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/opensearch.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sinks/sink_factory.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/amazon_sqs.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/azure_event_hub.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/google_cloud_pubsub.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/kafka.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/kinesis.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/rabbitmq.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/shared.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/streaming/sources/source_factory.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/operations/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/operations/test_base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/operations/test_operations.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/operations/test_pipeline_schedules.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/operations/test_sessions.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/operations/test_users.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/api/test_utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/base_test.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_clean_column_names.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_fix_syntax_error.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_impute_values.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_reformat_values.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_collinear_columns.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_columns_with_high_empty_rate.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_columns_with_single_value.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_duplicate_rows.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_outliers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/statistics/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/statistics/test_calculator.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/test_column_type_detector.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/shared.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/test_base.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/test_column.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/test_custom_actions.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/test_helpers.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/test_row.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/test_utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_cleaner/transformer_actions/test_variable_replacer.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/git/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/git/test_git.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/models/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/models/block/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/models/block/test_sql.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/models/test_block.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/models/test_variable.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/test_templates.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/data_preparation/test_variable_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/factory.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/io/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/io/test_config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/io/test_export_utils.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/db/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/db/test_models.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/notification/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/notification/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/notification/test_config.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/notification/test_sender.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/queue/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/queue/test_process_queue.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/test_execution_process_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/test_job_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/test_pipeline_scheduler.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/triggers/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/triggers/test_event_trigger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/orchestration/triggers/test_loop_time_trigger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/services/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/services/aws/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/services/aws/s3/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/services/aws/s3/test_s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/services/datadog/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/services/datadog/test_datadog.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/services/k8s/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/services/k8s/test_job_manager.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/shared/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/shared/test_io.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/shared/test_retry.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/shared/test_security.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sinks/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sinks/test_amazon_s3.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sinks/test_dummy.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sinks/test_kinesis.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sinks/test_mongodb.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sinks/test_opensearch.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sinks/test_sink_factory.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sources/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sources/test_amazon_sqs.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sources/test_azure_event_hub.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sources/test_google_cloud_pubsub.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sources/test_kafka.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sources/test_kinesis.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sources/test_rabbitmq.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/streaming/sources/test_source_factory.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/tests/test_shared.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/usage_statistics/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/usage_statistics/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/usage_statistics/logger.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/utils/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/utils/code.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/utils/logger/__init__.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai/utils/logger/constants.py +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai.egg-info/dependency_links.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai.egg-info/entry_points.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai.egg-info/requires.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/mage_ai.egg-info/top_level.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/pyproject.toml +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/requirements.txt +0 -0
- {mage-ai-0.8.91 → mage-ai-0.8.93}/setup.cfg +0 -0
|
@@ -37,6 +37,7 @@ PipelinePolicy.allow_actions([
|
|
|
37
37
|
|
|
38
38
|
PipelinePolicy.allow_read(PipelinePresenter.default_attributes + [
|
|
39
39
|
'callbacks',
|
|
40
|
+
'conditionals',
|
|
40
41
|
'extensions',
|
|
41
42
|
], scopes=[
|
|
42
43
|
OauthScope.CLIENT_PRIVATE,
|
|
@@ -46,6 +47,7 @@ PipelinePolicy.allow_read(PipelinePresenter.default_attributes + [
|
|
|
46
47
|
|
|
47
48
|
PipelinePolicy.allow_read(PipelinePresenter.default_attributes + [
|
|
48
49
|
'callbacks',
|
|
50
|
+
'conditionals',
|
|
49
51
|
'extensions',
|
|
50
52
|
], scopes=[
|
|
51
53
|
OauthScope.CLIENT_PRIVATE,
|
|
@@ -56,6 +58,7 @@ PipelinePolicy.allow_read(PipelinePresenter.default_attributes + [
|
|
|
56
58
|
|
|
57
59
|
PipelinePolicy.allow_read(PipelinePresenter.default_attributes + [
|
|
58
60
|
'callbacks',
|
|
61
|
+
'conditionals',
|
|
59
62
|
'extensions',
|
|
60
63
|
], scopes=[
|
|
61
64
|
OauthScope.CLIENT_PRIVATE,
|
|
@@ -65,6 +68,7 @@ PipelinePolicy.allow_read(PipelinePresenter.default_attributes + [
|
|
|
65
68
|
|
|
66
69
|
PipelinePolicy.allow_read(PipelinePresenter.default_attributes + [
|
|
67
70
|
'callbacks',
|
|
71
|
+
'conditionals',
|
|
68
72
|
'extensions',
|
|
69
73
|
'schedules',
|
|
70
74
|
], scopes=[
|
|
@@ -75,6 +79,7 @@ PipelinePolicy.allow_read(PipelinePresenter.default_attributes + [
|
|
|
75
79
|
|
|
76
80
|
PipelinePolicy.allow_write([
|
|
77
81
|
'callbacks',
|
|
82
|
+
'conditionals',
|
|
78
83
|
'clone_pipeline_uuid',
|
|
79
84
|
'extensions',
|
|
80
85
|
'name',
|
|
@@ -88,6 +93,7 @@ PipelinePolicy.allow_write([
|
|
|
88
93
|
PipelinePolicy.allow_write([
|
|
89
94
|
'add_upstream_for_block_uuid',
|
|
90
95
|
'callbacks',
|
|
96
|
+
'conditionals',
|
|
91
97
|
'extensions',
|
|
92
98
|
'schedules',
|
|
93
99
|
] + PipelinePresenter.default_attributes, scopes=[
|
|
@@ -12,6 +12,7 @@ class PipelinePresenter(BasePresenter):
|
|
|
12
12
|
'executor_count',
|
|
13
13
|
'executor_type',
|
|
14
14
|
'name',
|
|
15
|
+
'spark_config',
|
|
15
16
|
'type',
|
|
16
17
|
'updated_at',
|
|
17
18
|
'uuid',
|
|
@@ -44,6 +45,7 @@ class PipelinePresenter(BasePresenter):
|
|
|
44
45
|
include_block_metadata=include_block_metadata,
|
|
45
46
|
include_block_tags=True,
|
|
46
47
|
include_callback_blocks=True,
|
|
48
|
+
include_conditional_blocks=True,
|
|
47
49
|
include_content=include_content,
|
|
48
50
|
include_extensions=include_extensions,
|
|
49
51
|
include_outputs=include_outputs,
|
|
@@ -64,6 +64,31 @@ class BlockExecutor:
|
|
|
64
64
|
on_start(self.block_uuid)
|
|
65
65
|
pipeline_run = PipelineRun.query.get(kwargs['pipeline_run_id']) \
|
|
66
66
|
if 'pipeline_run_id' in kwargs else None
|
|
67
|
+
|
|
68
|
+
conditional_result = self._execute_conditional(
|
|
69
|
+
dynamic_block_index=dynamic_block_index,
|
|
70
|
+
dynamic_upstream_block_uuids=dynamic_upstream_block_uuids,
|
|
71
|
+
global_vars=global_vars,
|
|
72
|
+
logging_tags=tags,
|
|
73
|
+
pipeline_run=pipeline_run,
|
|
74
|
+
)
|
|
75
|
+
if not conditional_result:
|
|
76
|
+
self.logger.info(
|
|
77
|
+
f'Conditional block(s) returned false for {self.block.uuid}. '
|
|
78
|
+
'This block run and downstream blocks will set as CONDITION_FAILED.',
|
|
79
|
+
**merge_dict(tags, dict(
|
|
80
|
+
block_type=self.block.type,
|
|
81
|
+
block_uuid=self.block.uuid,
|
|
82
|
+
)),
|
|
83
|
+
)
|
|
84
|
+
self.__update_block_run_status(
|
|
85
|
+
'condition_failed',
|
|
86
|
+
block_run_id=kwargs.get('block_run_id'),
|
|
87
|
+
callback_url=callback_url,
|
|
88
|
+
tags=tags,
|
|
89
|
+
)
|
|
90
|
+
return dict(output=[])
|
|
91
|
+
|
|
67
92
|
try:
|
|
68
93
|
from mage_ai.shared.retry import retry
|
|
69
94
|
|
|
@@ -207,12 +232,52 @@ class BlockExecutor:
|
|
|
207
232
|
|
|
208
233
|
return result
|
|
209
234
|
|
|
235
|
+
def _execute_conditional(
|
|
236
|
+
self,
|
|
237
|
+
global_vars: Dict,
|
|
238
|
+
logging_tags: Dict,
|
|
239
|
+
pipeline_run: PipelineRun,
|
|
240
|
+
dynamic_block_index: Union[int, None] = None,
|
|
241
|
+
dynamic_upstream_block_uuids: Union[List[str], None] = None,
|
|
242
|
+
):
|
|
243
|
+
result = True
|
|
244
|
+
for conditional_block in self.block.conditional_blocks:
|
|
245
|
+
try:
|
|
246
|
+
block_result = conditional_block.execute_conditional(
|
|
247
|
+
self.block,
|
|
248
|
+
dynamic_block_index=dynamic_block_index,
|
|
249
|
+
dynamic_upstream_block_uuids=dynamic_upstream_block_uuids,
|
|
250
|
+
execution_partition=self.execution_partition,
|
|
251
|
+
global_vars=global_vars,
|
|
252
|
+
logger=self.logger,
|
|
253
|
+
logging_tags=logging_tags,
|
|
254
|
+
pipeline_run=pipeline_run,
|
|
255
|
+
)
|
|
256
|
+
if not block_result:
|
|
257
|
+
self.logger.info(
|
|
258
|
+
f'Conditional block {conditional_block.uuid} evaluated as False ' +
|
|
259
|
+
f'for block {self.block.uuid}',
|
|
260
|
+
logging_tags,
|
|
261
|
+
)
|
|
262
|
+
result = result and block_result
|
|
263
|
+
except Exception as conditional_err:
|
|
264
|
+
self.logger.exception(
|
|
265
|
+
f'Failed to execute conditional block {conditional_block.uuid} ' +
|
|
266
|
+
f'for block {self.block.uuid}.',
|
|
267
|
+
**merge_dict(logging_tags, dict(
|
|
268
|
+
error=conditional_err,
|
|
269
|
+
)),
|
|
270
|
+
)
|
|
271
|
+
result = False
|
|
272
|
+
|
|
273
|
+
return result
|
|
274
|
+
|
|
210
275
|
def _execute_callback(
|
|
211
276
|
self,
|
|
212
277
|
callback: str,
|
|
213
|
-
global_vars,
|
|
214
|
-
logging_tags,
|
|
215
|
-
pipeline_run,
|
|
278
|
+
global_vars: Dict,
|
|
279
|
+
logging_tags: Dict,
|
|
280
|
+
pipeline_run: PipelineRun,
|
|
216
281
|
dynamic_block_index: Union[int, None] = None,
|
|
217
282
|
dynamic_upstream_block_uuids: Union[List[str], None] = None,
|
|
218
283
|
):
|
|
@@ -47,7 +47,7 @@ from mage_ai.data_preparation.models.constants import (
|
|
|
47
47
|
)
|
|
48
48
|
from mage_ai.data_preparation.models.file import File
|
|
49
49
|
from mage_ai.data_preparation.models.variable import VariableType
|
|
50
|
-
from mage_ai.data_preparation.repo_manager import get_repo_path
|
|
50
|
+
from mage_ai.data_preparation.repo_manager import RepoConfig, get_repo_path
|
|
51
51
|
from mage_ai.data_preparation.shared.stream import StreamToLogger
|
|
52
52
|
from mage_ai.data_preparation.templates.template import load_template
|
|
53
53
|
from mage_ai.server.kernel_output_parser import DataType
|
|
@@ -253,6 +253,7 @@ class Block:
|
|
|
253
253
|
|
|
254
254
|
self._outputs = None
|
|
255
255
|
self._outputs_loaded = False
|
|
256
|
+
self.conditional_blocks = []
|
|
256
257
|
self.callback_blocks = []
|
|
257
258
|
self.upstream_blocks = []
|
|
258
259
|
self.downstream_blocks = []
|
|
@@ -348,6 +349,10 @@ class Block:
|
|
|
348
349
|
def callback_block_uuids(self) -> List[str]:
|
|
349
350
|
return [b.uuid for b in self.callback_blocks]
|
|
350
351
|
|
|
352
|
+
@property
|
|
353
|
+
def conditional_block_uuids(self) -> List[str]:
|
|
354
|
+
return [b.uuid for b in self.conditional_blocks]
|
|
355
|
+
|
|
351
356
|
@property
|
|
352
357
|
def upstream_block_uuids(self) -> List[str]:
|
|
353
358
|
return [b.uuid for b in self.upstream_blocks]
|
|
@@ -456,6 +461,8 @@ class Block:
|
|
|
456
461
|
elif pipeline and PipelineType.INTEGRATION == pipeline.type:
|
|
457
462
|
if BlockType.CALLBACK == block_type:
|
|
458
463
|
return CallbackBlock
|
|
464
|
+
elif BlockType.CONDITIONAL == block_type:
|
|
465
|
+
return ConditionalBlock
|
|
459
466
|
elif BlockType.DATA_LOADER == block_type:
|
|
460
467
|
return SourceBlock
|
|
461
468
|
elif BlockType.DATA_EXPORTER == block_type:
|
|
@@ -670,11 +677,33 @@ class Block:
|
|
|
670
677
|
if logging_tags is None:
|
|
671
678
|
logging_tags = dict()
|
|
672
679
|
|
|
673
|
-
|
|
680
|
+
if self.conditional_blocks and len(self.conditional_blocks) > 0:
|
|
681
|
+
conditional_message = ''
|
|
682
|
+
result = True
|
|
683
|
+
for conditional_block in self.conditional_blocks:
|
|
684
|
+
block_result = conditional_block.execute_conditional(
|
|
685
|
+
self,
|
|
686
|
+
global_vars=global_vars,
|
|
687
|
+
logger=logger,
|
|
688
|
+
logging_tags=logging_tags,
|
|
689
|
+
)
|
|
690
|
+
conditional_message += \
|
|
691
|
+
f'Conditional block {conditional_block.uuid} evaluated to {block_result}.\n'
|
|
692
|
+
result = result and block_result
|
|
693
|
+
|
|
694
|
+
# Print result to block output
|
|
695
|
+
if not result:
|
|
696
|
+
conditional_message += 'This block would not be executed in a trigger run.\n'
|
|
697
|
+
conditional_json = json.dumps(dict(
|
|
698
|
+
message=conditional_message,
|
|
699
|
+
))
|
|
700
|
+
print(f'[__internal_test__]{conditional_json}')
|
|
701
|
+
|
|
702
|
+
callback_arr = []
|
|
674
703
|
if self.callback_block:
|
|
675
|
-
|
|
704
|
+
callback_arr.append(self.callback_block)
|
|
676
705
|
if self.callback_blocks:
|
|
677
|
-
|
|
706
|
+
callback_arr += self.callback_blocks
|
|
678
707
|
|
|
679
708
|
try:
|
|
680
709
|
output = self.execute_sync(
|
|
@@ -684,7 +713,7 @@ class Block:
|
|
|
684
713
|
**kwargs
|
|
685
714
|
)
|
|
686
715
|
except Exception as e:
|
|
687
|
-
for callback_block in
|
|
716
|
+
for callback_block in callback_arr:
|
|
688
717
|
callback_block.execute_callback(
|
|
689
718
|
'on_failure',
|
|
690
719
|
global_vars=global_vars,
|
|
@@ -694,7 +723,7 @@ class Block:
|
|
|
694
723
|
)
|
|
695
724
|
raise e
|
|
696
725
|
|
|
697
|
-
for callback_block in
|
|
726
|
+
for callback_block in callback_arr:
|
|
698
727
|
callback_block.execute_callback(
|
|
699
728
|
'on_success',
|
|
700
729
|
global_vars=global_vars,
|
|
@@ -1131,6 +1160,8 @@ class Block:
|
|
|
1131
1160
|
self,
|
|
1132
1161
|
execution_partition: str = None,
|
|
1133
1162
|
include_print_outputs: bool = True,
|
|
1163
|
+
csv_lines_only: bool = False,
|
|
1164
|
+
sample: bool = True,
|
|
1134
1165
|
sample_count: int = DATAFRAME_SAMPLE_COUNT_PREVIEW,
|
|
1135
1166
|
variable_type: VariableType = None,
|
|
1136
1167
|
block_uuid: str = None,
|
|
@@ -1166,40 +1197,47 @@ class Block:
|
|
|
1166
1197
|
continue
|
|
1167
1198
|
|
|
1168
1199
|
data = variable_object.read_data(
|
|
1169
|
-
sample=
|
|
1200
|
+
sample=sample,
|
|
1170
1201
|
sample_count=sample_count,
|
|
1171
1202
|
spark=self.__get_spark_session(),
|
|
1172
1203
|
)
|
|
1173
1204
|
if type(data) is pd.DataFrame:
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
block_uuid,
|
|
1178
|
-
v,
|
|
1179
|
-
dataframe_analysis_keys=['metadata', 'statistics'],
|
|
1180
|
-
partition=execution_partition,
|
|
1181
|
-
variable_type=VariableType.DATAFRAME_ANALYSIS,
|
|
1205
|
+
if csv_lines_only:
|
|
1206
|
+
data = dict(
|
|
1207
|
+
table=data.to_csv(header=True, index=False).strip('\n').split('\n')
|
|
1182
1208
|
)
|
|
1183
|
-
except Exception:
|
|
1184
|
-
analysis = None
|
|
1185
|
-
if analysis is not None:
|
|
1186
|
-
stats = analysis.get('statistics', {})
|
|
1187
|
-
column_types = (analysis.get('metadata') or {}).get('column_types', {})
|
|
1188
|
-
row_count = stats.get('original_row_count', stats.get('count'))
|
|
1189
|
-
column_count = stats.get('original_column_count', len(column_types))
|
|
1190
1209
|
else:
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1210
|
+
try:
|
|
1211
|
+
analysis = variable_manager.get_variable(
|
|
1212
|
+
self.pipeline.uuid,
|
|
1213
|
+
block_uuid,
|
|
1214
|
+
v,
|
|
1215
|
+
dataframe_analysis_keys=['metadata', 'statistics'],
|
|
1216
|
+
partition=execution_partition,
|
|
1217
|
+
variable_type=VariableType.DATAFRAME_ANALYSIS,
|
|
1218
|
+
)
|
|
1219
|
+
except Exception:
|
|
1220
|
+
analysis = None
|
|
1221
|
+
if analysis is not None:
|
|
1222
|
+
stats = analysis.get('statistics', {})
|
|
1223
|
+
column_types = (analysis.get('metadata') or {}).get('column_types', {})
|
|
1224
|
+
row_count = stats.get('original_row_count', stats.get('count'))
|
|
1225
|
+
column_count = stats.get('original_column_count', len(column_types))
|
|
1226
|
+
else:
|
|
1227
|
+
row_count, column_count = data.shape
|
|
1228
|
+
|
|
1229
|
+
columns_to_display = data.columns.tolist()[:DATAFRAME_ANALYSIS_MAX_COLUMNS]
|
|
1230
|
+
data = dict(
|
|
1231
|
+
sample_data=dict(
|
|
1232
|
+
columns=columns_to_display,
|
|
1233
|
+
rows=json.loads(
|
|
1234
|
+
data[columns_to_display].to_json(orient='split')
|
|
1235
|
+
)['data']
|
|
1236
|
+
),
|
|
1237
|
+
shape=[row_count, column_count],
|
|
1238
|
+
type=DataType.TABLE,
|
|
1239
|
+
variable_uuid=v,
|
|
1240
|
+
)
|
|
1203
1241
|
data_products.append(data)
|
|
1204
1242
|
continue
|
|
1205
1243
|
elif is_geo_dataframe(data):
|
|
@@ -1383,7 +1421,11 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1383
1421
|
variable_mapping = self.__save_outputs_prepare(outputs)
|
|
1384
1422
|
await self.store_variables_async(variable_mapping, override=override)
|
|
1385
1423
|
|
|
1386
|
-
def to_dict_base(
|
|
1424
|
+
def to_dict_base(
|
|
1425
|
+
self,
|
|
1426
|
+
include_callback_blocks: bool = False,
|
|
1427
|
+
include_conditional_blocks: bool = False,
|
|
1428
|
+
) -> Dict:
|
|
1387
1429
|
language = self.language
|
|
1388
1430
|
if language and type(self.language) is not str:
|
|
1389
1431
|
language = self.language.value
|
|
@@ -1410,6 +1452,9 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1410
1452
|
if include_callback_blocks:
|
|
1411
1453
|
data['callback_blocks'] = self.callback_block_uuids
|
|
1412
1454
|
|
|
1455
|
+
if include_conditional_blocks:
|
|
1456
|
+
data['conditional_blocks'] = self.conditional_block_uuids
|
|
1457
|
+
|
|
1413
1458
|
if self.replicated_block:
|
|
1414
1459
|
data['replicated_block'] = self.replicated_block
|
|
1415
1460
|
|
|
@@ -1451,12 +1496,16 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1451
1496
|
include_block_metadata: bool = False,
|
|
1452
1497
|
include_block_tags: bool = False,
|
|
1453
1498
|
include_callback_blocks: bool = False,
|
|
1499
|
+
include_conditional_blocks: bool = False,
|
|
1454
1500
|
include_content: bool = False,
|
|
1455
1501
|
include_outputs: bool = False,
|
|
1456
1502
|
sample_count: int = None,
|
|
1457
1503
|
check_if_file_exists: bool = False,
|
|
1458
1504
|
) -> Dict:
|
|
1459
|
-
data = self.to_dict_base(
|
|
1505
|
+
data = self.to_dict_base(
|
|
1506
|
+
include_callback_blocks=include_callback_blocks,
|
|
1507
|
+
include_conditional_blocks=include_conditional_blocks,
|
|
1508
|
+
)
|
|
1460
1509
|
|
|
1461
1510
|
if include_content:
|
|
1462
1511
|
data['content'] = await self.content_async()
|
|
@@ -1509,6 +1558,11 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1509
1558
|
):
|
|
1510
1559
|
self.__update_callback_blocks(data['callback_blocks'])
|
|
1511
1560
|
|
|
1561
|
+
if 'conditional_blocks' in data and set(data['conditional_blocks']) != set(
|
|
1562
|
+
self.conditional_block_uuids
|
|
1563
|
+
):
|
|
1564
|
+
self.__update_conditional_blocks(data['conditional_blocks'])
|
|
1565
|
+
|
|
1512
1566
|
if 'executor_type' in data and data['executor_type'] != self.executor_type:
|
|
1513
1567
|
self.executor_type = data['executor_type']
|
|
1514
1568
|
self.__update_pipeline_block()
|
|
@@ -1524,6 +1578,9 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1524
1578
|
def update_callback_blocks(self, callback_blocks: List[Any]) -> None:
|
|
1525
1579
|
self.callback_blocks = callback_blocks
|
|
1526
1580
|
|
|
1581
|
+
def update_conditional_blocks(self, conditional_blocks: List[Any]) -> None:
|
|
1582
|
+
self.conditional_blocks = conditional_blocks
|
|
1583
|
+
|
|
1527
1584
|
def update_upstream_blocks(self, upstream_blocks: List[Any]) -> None:
|
|
1528
1585
|
self.upstream_blocks = upstream_blocks
|
|
1529
1586
|
|
|
@@ -1839,11 +1896,17 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1839
1896
|
return global_vars
|
|
1840
1897
|
|
|
1841
1898
|
def __get_spark_session(self):
|
|
1842
|
-
if self.spark_init
|
|
1899
|
+
if self.spark_init and (not self.pipeline or
|
|
1900
|
+
not self.pipeline.spark_config):
|
|
1843
1901
|
return self.spark
|
|
1844
1902
|
try:
|
|
1845
|
-
|
|
1846
|
-
|
|
1903
|
+
if self.pipeline and self.pipeline.spark_config:
|
|
1904
|
+
spark_config = SparkConfig.load(
|
|
1905
|
+
config=self.pipeline.spark_config)
|
|
1906
|
+
else:
|
|
1907
|
+
repo_config = RepoConfig(repo_path=self.repo_path)
|
|
1908
|
+
spark_config = SparkConfig.load(
|
|
1909
|
+
config=repo_config.spark_config)
|
|
1847
1910
|
self.spark = get_spark_session(spark_config)
|
|
1848
1911
|
except Exception:
|
|
1849
1912
|
self.spark = None
|
|
@@ -2026,6 +2089,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
2026
2089
|
|
|
2027
2090
|
def tags(self) -> List[str]:
|
|
2028
2091
|
from mage_ai.data_preparation.models.block.constants import (
|
|
2092
|
+
TAG_CONDITION,
|
|
2029
2093
|
TAG_DYNAMIC,
|
|
2030
2094
|
TAG_DYNAMIC_CHILD,
|
|
2031
2095
|
TAG_REDUCE_OUTPUT,
|
|
@@ -2046,6 +2110,9 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
2046
2110
|
if self.replicated_block:
|
|
2047
2111
|
arr.append(TAG_REPLICA)
|
|
2048
2112
|
|
|
2113
|
+
if len(self.conditional_blocks) > 0:
|
|
2114
|
+
arr.append(TAG_CONDITION)
|
|
2115
|
+
|
|
2049
2116
|
return arr
|
|
2050
2117
|
|
|
2051
2118
|
def variable_object(
|
|
@@ -2155,6 +2222,16 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
2155
2222
|
widget=BlockType.CHART == self.type,
|
|
2156
2223
|
)
|
|
2157
2224
|
|
|
2225
|
+
def __update_conditional_blocks(self, block_uuids: List[str]) -> None:
|
|
2226
|
+
if self.pipeline is None:
|
|
2227
|
+
return
|
|
2228
|
+
|
|
2229
|
+
self.pipeline.update_block(
|
|
2230
|
+
self,
|
|
2231
|
+
conditional_block_uuids=block_uuids,
|
|
2232
|
+
widget=BlockType.CHART == self.type,
|
|
2233
|
+
)
|
|
2234
|
+
|
|
2158
2235
|
|
|
2159
2236
|
class SensorBlock(Block):
|
|
2160
2237
|
def execute_block_function(
|
|
@@ -2187,7 +2264,98 @@ class SensorBlock(Block):
|
|
|
2187
2264
|
return []
|
|
2188
2265
|
|
|
2189
2266
|
|
|
2190
|
-
class
|
|
2267
|
+
class AddonBlock(Block):
|
|
2268
|
+
def _create_global_vars(
|
|
2269
|
+
self,
|
|
2270
|
+
global_vars: Dict,
|
|
2271
|
+
parent_block: Block,
|
|
2272
|
+
**kwargs,
|
|
2273
|
+
) -> Dict:
|
|
2274
|
+
pipeline_run = kwargs.get('pipeline_run')
|
|
2275
|
+
global_vars = merge_dict(
|
|
2276
|
+
global_vars or dict(),
|
|
2277
|
+
dict(
|
|
2278
|
+
pipeline_uuid=self.pipeline.uuid,
|
|
2279
|
+
block_uuid=self.uuid,
|
|
2280
|
+
pipeline_run=pipeline_run,
|
|
2281
|
+
),
|
|
2282
|
+
)
|
|
2283
|
+
if parent_block:
|
|
2284
|
+
global_vars['parent_block_uuid'] = parent_block.uuid
|
|
2285
|
+
|
|
2286
|
+
if parent_block and \
|
|
2287
|
+
parent_block.pipeline and \
|
|
2288
|
+
PipelineType.INTEGRATION == parent_block.pipeline.type:
|
|
2289
|
+
|
|
2290
|
+
template_runtime_configuration = parent_block.template_runtime_configuration
|
|
2291
|
+
index = template_runtime_configuration.get('index', None)
|
|
2292
|
+
is_last_block_run = template_runtime_configuration.get('is_last_block_run', False)
|
|
2293
|
+
selected_streams = template_runtime_configuration.get('selected_streams', [])
|
|
2294
|
+
stream = selected_streams[0] if len(selected_streams) >= 1 else None
|
|
2295
|
+
destination_table = template_runtime_configuration.get('destination_table', stream)
|
|
2296
|
+
|
|
2297
|
+
global_vars['index'] = index
|
|
2298
|
+
global_vars['is_last_block_run'] = is_last_block_run
|
|
2299
|
+
global_vars['stream'] = stream
|
|
2300
|
+
global_vars['destination_table'] = destination_table
|
|
2301
|
+
|
|
2302
|
+
return global_vars
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
class ConditionalBlock(AddonBlock):
|
|
2306
|
+
def execute_conditional(
|
|
2307
|
+
self,
|
|
2308
|
+
parent_block: Block,
|
|
2309
|
+
dynamic_block_index: Union[int, None] = None,
|
|
2310
|
+
dynamic_upstream_block_uuids: Union[List[str], None] = None,
|
|
2311
|
+
execution_partition: str = None,
|
|
2312
|
+
global_vars: Dict = None,
|
|
2313
|
+
logger: Logger = None,
|
|
2314
|
+
logging_tags: Dict = None,
|
|
2315
|
+
**kwargs
|
|
2316
|
+
) -> bool:
|
|
2317
|
+
if logger is not None:
|
|
2318
|
+
stdout = StreamToLogger(logger, logging_tags=logging_tags)
|
|
2319
|
+
else:
|
|
2320
|
+
stdout = sys.stdout
|
|
2321
|
+
|
|
2322
|
+
with redirect_stdout(stdout):
|
|
2323
|
+
global_vars = self._create_global_vars(
|
|
2324
|
+
global_vars,
|
|
2325
|
+
parent_block,
|
|
2326
|
+
**kwargs,
|
|
2327
|
+
)
|
|
2328
|
+
|
|
2329
|
+
condition_functions = []
|
|
2330
|
+
|
|
2331
|
+
results = dict(
|
|
2332
|
+
condition=self._block_decorator(condition_functions),
|
|
2333
|
+
)
|
|
2334
|
+
exec(self.content, results)
|
|
2335
|
+
|
|
2336
|
+
global_vars_copy = global_vars.copy()
|
|
2337
|
+
input_vars = []
|
|
2338
|
+
# Fetch input variables for parent block
|
|
2339
|
+
if parent_block is not None:
|
|
2340
|
+
input_vars, kwargs_vars, _ = parent_block.fetch_input_variables(
|
|
2341
|
+
None,
|
|
2342
|
+
execution_partition,
|
|
2343
|
+
global_vars,
|
|
2344
|
+
dynamic_block_index=dynamic_block_index,
|
|
2345
|
+
dynamic_upstream_block_uuids=dynamic_upstream_block_uuids,
|
|
2346
|
+
)
|
|
2347
|
+
|
|
2348
|
+
for kwargs_var in kwargs_vars:
|
|
2349
|
+
global_vars_copy.update(kwargs_var)
|
|
2350
|
+
|
|
2351
|
+
result = True
|
|
2352
|
+
for condition_function in condition_functions:
|
|
2353
|
+
result = condition_function(*input_vars, **global_vars_copy) and result
|
|
2354
|
+
|
|
2355
|
+
return result
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
class CallbackBlock(AddonBlock):
|
|
2191
2359
|
@classmethod
|
|
2192
2360
|
def create(cls, orig_block_name) -> 'CallbackBlock':
|
|
2193
2361
|
return Block.create(
|
|
@@ -2209,40 +2377,17 @@ class CallbackBlock(Block):
|
|
|
2209
2377
|
parent_block: Block = None,
|
|
2210
2378
|
**kwargs
|
|
2211
2379
|
) -> None:
|
|
2212
|
-
pipeline_run = kwargs.get('pipeline_run')
|
|
2213
|
-
|
|
2214
2380
|
if logger is not None:
|
|
2215
2381
|
stdout = StreamToLogger(logger, logging_tags=logging_tags)
|
|
2216
2382
|
else:
|
|
2217
2383
|
stdout = sys.stdout
|
|
2218
2384
|
|
|
2219
2385
|
with redirect_stdout(stdout):
|
|
2220
|
-
global_vars =
|
|
2221
|
-
global_vars
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
block_uuid=self.uuid,
|
|
2225
|
-
pipeline_run=pipeline_run,
|
|
2226
|
-
),
|
|
2386
|
+
global_vars = self._create_global_vars(
|
|
2387
|
+
global_vars,
|
|
2388
|
+
parent_block,
|
|
2389
|
+
**kwargs
|
|
2227
2390
|
)
|
|
2228
|
-
if parent_block:
|
|
2229
|
-
global_vars['parent_block_uuid'] = parent_block.uuid
|
|
2230
|
-
|
|
2231
|
-
if parent_block and \
|
|
2232
|
-
parent_block.pipeline and \
|
|
2233
|
-
PipelineType.INTEGRATION == parent_block.pipeline.type:
|
|
2234
|
-
|
|
2235
|
-
template_runtime_configuration = parent_block.template_runtime_configuration
|
|
2236
|
-
index = template_runtime_configuration.get('index', None)
|
|
2237
|
-
is_last_block_run = template_runtime_configuration.get('is_last_block_run', False)
|
|
2238
|
-
selected_streams = template_runtime_configuration.get('selected_streams', [])
|
|
2239
|
-
stream = selected_streams[0] if len(selected_streams) >= 1 else None
|
|
2240
|
-
destination_table = template_runtime_configuration.get('destination_table', stream)
|
|
2241
|
-
|
|
2242
|
-
global_vars['index'] = index
|
|
2243
|
-
global_vars['is_last_block_run'] = is_last_block_run
|
|
2244
|
-
global_vars['stream'] = stream
|
|
2245
|
-
global_vars['destination_table'] = destination_table
|
|
2246
2391
|
|
|
2247
2392
|
callback_functions = []
|
|
2248
2393
|
failure_functions = []
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
from mage_ai.data_preparation.models.block import (
|
|
2
2
|
Block,
|
|
3
3
|
CallbackBlock,
|
|
4
|
+
ConditionalBlock,
|
|
4
5
|
SensorBlock,
|
|
5
6
|
)
|
|
6
7
|
from mage_ai.data_preparation.models.block.dbt import DBTBlock
|
|
7
8
|
from mage_ai.data_preparation.models.block.extension.block import ExtensionBlock
|
|
8
9
|
from mage_ai.data_preparation.models.constants import BlockType
|
|
9
10
|
|
|
10
|
-
|
|
11
11
|
BLOCK_TYPE_TO_CLASS = {
|
|
12
12
|
BlockType.CALLBACK: CallbackBlock,
|
|
13
|
+
BlockType.CONDITIONAL: ConditionalBlock,
|
|
13
14
|
BlockType.CUSTOM: Block,
|
|
14
15
|
BlockType.DATA_EXPORTER: Block,
|
|
15
16
|
BlockType.DATA_LOADER: Block,
|
|
@@ -21,6 +22,7 @@ BLOCK_TYPE_TO_CLASS = {
|
|
|
21
22
|
BlockType.SENSOR: SensorBlock,
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
TAG_CONDITION = 'condition'
|
|
24
26
|
TAG_DYNAMIC = 'dynamic'
|
|
25
27
|
TAG_DYNAMIC_CHILD = 'dynamic_child'
|
|
26
28
|
TAG_REDUCE_OUTPUT = 'reduce_output'
|