mage-ai 0.8.11__tar.gz → 0.8.13__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.11/mage_ai.egg-info → mage-ai-0.8.13}/PKG-INFO +1 -1
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/BackfillPolicy.py +4 -1
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/BlockPolicy.py +13 -0
- mage-ai-0.8.13/mage_ai/api/policies/SyncPolicy.py +30 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/BlockPresenter.py +12 -1
- mage-ai-0.8.13/mage_ai/api/presenters/SyncPresenter.py +11 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/BlockResource.py +8 -1
- mage-ai-0.8.13/mage_ai/api/resources/SyncResource.py +43 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/pipeline_executor.py +9 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/streaming_pipeline_executor.py +3 -1
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/__init__.py +5 -3
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/integration/__init__.py +59 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/constants.py +1 -0
- mage-ai-0.8.13/mage_ai/data_preparation/preferences.py +43 -0
- mage-ai-0.8.13/mage_ai/data_preparation/sync/__init__.py +17 -0
- mage-ai-0.8.13/mage_ai/data_preparation/sync/base_sync.py +7 -0
- mage-ai-0.8.13/mage_ai/data_preparation/sync/git_sync.py +26 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/streaming/kafka.yaml +5 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/export_utils.py +1 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/postgres.py +46 -4
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/models.py +14 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/pipeline_scheduler.py +12 -4
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/constants.py +1 -1
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/404.html +2 -2
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/404.html.html +2 -2
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/UuQKenirO2LDcepWvj6S9/_buildManifest.js +1 -0
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/1830-c3f709c7ca7f32ab.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/1830-fbc03130dc8507d5.js +1 -1
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/2626-74904ade5b462127.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/3573-9b7b57411a327efa.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/434-b1cbc39e987f22cd.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/4846-688b5f0a015a543a.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/5477-4d9bab807c386355.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/7281-99f836e410857a68.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/7400-26ce25ec46728ef7.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/9767-30e239ed26aa848a.js +1 -0
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-44766f29c8c5b4ce.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-169f9cc923ae39a5.js +1 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-14c743a0e2549486.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-91c4fd203b4ac0e2.js +1 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipeline-runs-21fe37061bdaaaea.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipeline-runs-10d54d54bfd9b39c.js +1 -1
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-971ea5bb26d66155.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills-393cec015b843dd8.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-2963c971fdefd159.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/logs-d1490dc3ea4f2e61.js +1 -0
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runs-8f23f7ca9efcb069.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runs-f513df1d43ba48f0.js +1 -1
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runtime-393fa626a8873f74.js +1 -0
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors-8b08ec1aef4af4f2.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors-d45f982e19978552.js +1 -1
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs/[run]-463347405cafa133.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-a33f6fd5d91cd123.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/syncs-d4df695d51e01232.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-d83cf90749c8cd56.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers-f6ee40bebf427cfa.js +1 -0
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-1c0627627c21667f.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines-db2903bdeeeae791.js +1 -1
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-19a5aa2de681b54a.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-e1b34b9a44fc4688.js +1 -0
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/sync_data-4ae244876881cfe1.js +1 -0
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-c128672e053a4c30.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-b8aeca222449e041.js +1 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/terminal-6feb9848233a6c6e.js → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/terminal-482bd79cb26b8f73.js +1 -1
- mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/chunks/pages/triggers-81b7327ed8e015a4.js +1 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/index.html +2 -2
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/manage.html +4 -4
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipeline-runs.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills/[...slug].html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/edit.html +2 -2
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/logs.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runs.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runtime.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/runs/[run].html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/runs.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/syncs.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers/[...slug].html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines/[pipeline].html +2 -2
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/pipelines.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/settings/account/profile.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/settings/workspace/preferences.html +5 -5
- mage-ai-0.8.13/mage_ai/server/frontend_dist/settings/workspace/sync_data.html +20 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/settings/workspace/users.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/settings.html +2 -2
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/sign-in.html +4 -4
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/terminal.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/test.html +3 -3
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/triggers.html +5 -5
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/server.py +1 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/websocket_server.py +1 -1
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/config.py +4 -1
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sources/kafka.py +49 -3
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_preparation/test_templates.py +5 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sources/test_kafka.py +17 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13/mage_ai.egg-info}/PKG-INFO +1 -1
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai.egg-info/SOURCES.txt +42 -35
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai.egg-info/requires.txt +2 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/requirements.txt +2 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/setup.py +1 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/Bmwp0WdXRDJpCFVPOVdc9/_buildManifest.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/2249-70929b8c547bbc18.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/2426-115f8871a2e28f8c.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/434-69ddfacd3e93f2db.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/4846-b4ced91dc0e9fba9.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/5944-757b7898608a65e1.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/6579-2b5d8d39472d85c0.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/7400-1430ec3874c1fdee.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/8961-697fe5d4db44d909.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/9140-6f67e0879394373d.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/9767-3f852fd90cf7857f.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-678569cf24a2e10d.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills-0ed0d70bc659c236.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-f96da0174abb54b5.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/logs-5ccc75887776efb0.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/block-runtime-f83ab9de4094e1b0.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs/[run]-73ced07cc98a4968.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-67d23509a0c9a1b8.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/syncs-4084a44baf91f30e.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-ae970171cfe98c51.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers-b0b91245d3299bdf.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-acd7ee47219fee3d.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-07bda506f68974fb.js +0 -1
- mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/chunks/pages/triggers-e0172c422c95eda9.js +0 -1
- {mage-ai-0.8.11 → mage-ai-0.8.13}/LICENSE +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/MANIFEST.in +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/README.md +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/api_context.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/errors.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/logging.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/middleware.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/monitors/BaseMonitor.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/monitors/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/oauth_scope.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/operations/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/operations/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/operations/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/AutocompleteItemPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/BasePolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/BlockRunPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/ClusterPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/DataProviderPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/EventRulePolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/FileContentPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/FilePolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/IntegrationDestinationPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/IntegrationSourcePolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/IntegrationSourceStreamPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/KernelPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/LogPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/MonitorStatPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/OutputPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/PipelinePolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/PipelineRunPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/PipelineSchedulePolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/ProjectPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/SecretPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/SessionPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/UserPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/VariablePolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/WidgetPolicy.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/policies/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/AutocompleteItemPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/BackfillPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/BasePresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/BlockRunPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/ClusterPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/DataProviderPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/EventRulePresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/FileContentPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/FilePresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/IntegrationDestinationPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/IntegrationSourcePresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/IntegrationSourceStreamPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/KernelPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/LogPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/MonitorStatPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/OutputPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/PipelinePresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/PipelineRunPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/PipelineSchedulePresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/ProjectPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/SecretPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/SessionPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/UserPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/VariablePresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/WidgetPresenter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/mixins/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/presenters/mixins/users.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/AutocompleteItemResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/BackfillResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/BaseResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/BlockRunResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/ClusterResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/DataProviderResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/DatabaseResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/EventRuleResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/FileContentResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/FileResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/GenericResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/IntegrationDestinationResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/IntegrationSourceResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/IntegrationSourceStreamResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/KernelResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/LogResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/MonitorStatResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/OutputResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/PipelineResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/PipelineRunResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/PipelineScheduleResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/ProjectResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/Resource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/SecretResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/SessionResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/UserResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/VariableResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/WidgetResource.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/mixins/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/shared/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/shared/collections.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/resources/shared/collective_loaders.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/result_set.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/api/views.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/authentication/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/authentication/oauth2.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/authentication/passwords.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/autocomplete/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/autocomplete/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cli/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cli/main.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cli/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/aws/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/aws/ecs_task_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/aws/emr_cluster_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/cluster_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/gcp/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/gcp/cloud_run_service_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/kubernetes/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/cluster_manager/kubernetes/workload_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/analysis/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/analysis/calculator.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/analysis/charts.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/analysis/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/clean_column_names.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/fix_syntax_errors.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/impute_values.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/reformat_values.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/remove_collinear_columns.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/remove_columns_with_high_empty_rate.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/remove_columns_with_single_value.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/remove_duplicate_rows.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/cleaning_rules/remove_outliers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/column_types/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/column_types/column_type_detector.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/column_types/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/data_cleaner.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/estimators/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/estimators/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/estimators/encoders.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/estimators/outlier_removal.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/pipelines/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/pipelines/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/shared/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/shared/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/statistics/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/statistics/calculator.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/action_code.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/column.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/custom_action.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/dependency_resolution.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/helpers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/row.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/shared.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/spark/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/spark/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/spark/transformers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/addition.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/constant.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/date_trunc.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/difference.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/distance_between.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/divide.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/formatted_date.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/if_else.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/multiply.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/string_replace.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/string_split.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/udf/substring.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_cleaner/transformer_actions/variable_replacer.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/destinations/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/destinations/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/logger/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/logger/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/sources/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/sources/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/utils/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/utils/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/utils/parsers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_integrations/utils/scheduler.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/decorators.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/block_executor.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/ecs_block_executor.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/executor_factory.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/gcp_cloud_run_block_executor.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/k8s_block_executor.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/pyspark_block_executor.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/pyspark_pipeline_executor.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/logging/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/logging/gcs_logger_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/logging/logger.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/logging/logger_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/logging/logger_manager_factory.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/logging/s3_logger_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/dbt/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/dbt/utils/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/errors.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/r/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/r/templates/data_exporter.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/r/templates/data_loader.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/r/templates/transformer.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/bigquery.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/mysql.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/postgres.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/redshift.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/snowflake.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/trino.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/utils/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/sql/utils/shared.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/errors.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/file.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/pipeline.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/pipelines/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/pipelines/integration_pipeline.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/pipelines/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/variable.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/widget/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/widget/charts.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/widget/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/widget/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/repo_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/shared/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/shared/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/shared/secrets.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/shared/stream.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/shared/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/storage/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/storage/base_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/storage/local_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/storage/s3_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/storage/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/callbacks/default.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/custom/python/default.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/azure_blob_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/bigquery.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/default.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/file.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/google_cloud_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/mysql.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/postgres.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/pyspark/default.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/pyspark/s3.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/r/default.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/redshift.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/s3.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/snowflake.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/streaming/kinesis.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_exporters/streaming/opensearch.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/api.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/azure_blob_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/bigquery.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/default.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/file.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/google_cloud_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/mysql.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/postgres.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/pyspark/default.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/pyspark/s3.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/r/default.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/redshift.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/s3.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/snowflake.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/streaming/azure_event_hub.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/streaming/kinesis.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/data_loaders/streaming/rabbitmq.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/pipeline/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/pipeline/metadata.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/pipeline_execution/emr_bootstrap.sh +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/pipeline_execution/spark_script.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/charts/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/data_exporters/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/data_exporters/export_titanic_clean.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/data_loaders/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/data_loaders/load_titanic.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/dbt/profiles.yml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/io_config.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/metadata.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/pipelines/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/pipelines/example_pipeline/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/pipelines/example_pipeline/metadata.yaml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/requirements.txt +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/scratchpads/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/transformers/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/transformers/fill_in_missing_values.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/repo/utils/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/sensors/default.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/sensors/s3.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/template.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/testable.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/data_warehouse_transformer.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/default.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/default_pyspark.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/default_streaming.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/r/default.r +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/suggestion_fmt.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/action.jinja +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/average.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/clean_column_name.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/count.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/count_distinct.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/diff.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/first.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/fix_syntax_errors.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/impute.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/last.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/max.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/median.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/min.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/normalize.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/reformat.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/remove.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/remove_outliers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/select.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/shift_down.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/shift_up.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/standardize.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/column/sum.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/drop_duplicate.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/filter.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/remove.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/transformers/transformer_actions/row/sort.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/templates/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/utils/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/utils/block/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/utils/block/convert_content.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/variable_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/errors/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/errors/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/azure_blob_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/bigquery.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/file.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/google_cloud_storage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/io_config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/mysql.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/redshift.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/s3.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/snowflake.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/sql.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/trino.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/io/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/airflow.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/backfills/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/backfills/service.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/alembic.ini +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/database_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/errors.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/README.md +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/env.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/script.py.mako +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/053ee2c10d85_add_completed_at.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/067326f43bc3_add_variables_to_pipelinerun.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/1d8e65aeefdd_add_settings_to_pipeline_schedule.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/1f9353eddbc6_add_secrets_table.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/2266370f589b_add_indexes_to_pipeline_run.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/26305e46df52_create_backfills_table.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/3fafd217efa7_add_event_matcher_model.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/52ab80005742_add_variables_to_pipeline_schedule.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/5cd59ec4cf1d_add_passed_sla_to_pipeline_run.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/643b6e65e814_add_unique_indexes_on_authentication_.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/6aecc9bc451c_update_schedule_type_enum.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/7ac6fed06918_add_token_column_to_pipeline_schedule_.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/84de4cdd6126_add_sla_to_pipeline_schedule.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/8971d4cd5b39_add_event_variables_and_metadata_to_.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/97ff9f55a3c0_create_users_oauth2_applications_and_.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/b01be687e537_add_started_at_to_block_run.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/c07a23ff782b_add_initial_tables.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/migrations/versions/ec5df57a1c60_add_metrics_to_block_runs.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/db/process.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/execution_process_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/job_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/metrics/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/metrics/pipeline_run.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/monitor/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/monitor/monitor_stats.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/notification/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/notification/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/notification/sender.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/queue/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/queue/celery_queue.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/queue/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/queue/process_queue.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/queue/queue.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/queue/queue_factory.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/run_status_checker.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/triggers/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/triggers/event_trigger.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/triggers/loop_time_trigger.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/triggers/time_trigger.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/utils/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/orchestration/utils/resources.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/sample_datasets/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/sample_datasets/product_purchases.csv +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/sample_datasets/salary_survey.csv +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/sample_datasets/titanic_survival.csv +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/sample_datasets/user_emails.csv +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/active_kernel.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/blocks.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/clusters.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/errors.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/events.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/integration_sources.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/projects.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/triggers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/api/v1.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/app.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/client/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/client/mage.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/data/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/data/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/data/models.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/docs_server.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/execution_manager.py +0 -0
- {mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/Bmwp0WdXRDJpCFVPOVdc9 → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/UuQKenirO2LDcepWvj6S9}/_middlewareManifest.js +0 -0
- {mage-ai-0.8.11/mage_ai/server/frontend_dist/_next/static/Bmwp0WdXRDJpCFVPOVdc9 → mage-ai-0.8.13/mage_ai/server/frontend_dist/_next/static/UuQKenirO2LDcepWvj6S9}/_ssgManifest.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/1150.1378afaa474df64a.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/1240.0819f45820d22263.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/1286-a62050b3f897c6be.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/1450.d383f64c169d4278.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/1774-aa51ef1da7217ff9.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/2083-78a438dbdc57d1e4.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/2125-0b537dc53fe71b18.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/2481.0454a0e25dc7e027.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/2508.724531e7f9cf5f36.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/2524-6aeb9419acf5d1b4.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/2545.8371b39c898ae92b.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/261.0a24b4ece1d29aa1.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/266.e301071d22592682.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/2714-1e79e9f2e998b544.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/29107295-989a0767a635d9d5.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/3453.992f4b1667e9882c.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/3467.38cd0654ba6f788f.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/3835.df296b4e4078e985.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/3850-6395783d820def1c.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/3873.4b3eace753998412.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/3898.880191695bb05845.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4042.5e16d36209052351.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4092.536ee541241f4538.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4388.04098706f32e69e7.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/440.3ab77942f659ea0c.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4450.79f14f763d55c63e.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4454.13a2404adecaa39e.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4463-1b9ce74c6e1bb14e.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4495-4f0340aa82e0c623.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4776.753ad29fa0a29a4a.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4804-01a10103ebe26ca8.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/4883.a5bb0edbf8f3cc8f.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/5008.29c2662ecc2b04c7.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/5104.1edcf4437c471dd4.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/5164.857023e800905b6f.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/5729.0f2748e9e6dab951.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/5824.628653557e904674.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/5872-103815a4a043489b.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/5896-f84e336fb8877027.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6042.c59010de9e699437.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6085-692d2f784c0504f2.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6115.0c85e507543394ea.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6116.871a682ddf535aca.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6434.10380ee0968636ba.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6443.7b6d2b4e51018184.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6507.d3a17777d2c294e6.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6532-a614f9e1f9434872.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6641-a0ed2bd8f5dc777b.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/6958.8f39c585d36737a7.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/7011-81dd8269c4806d26.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/704-4de8946d753a578a.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/72fdc299.2d5ec188af5d0049.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/739.3d24945544b37e52.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/792.010ca00d79b2112f.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/7947.77be4bec4d47774e.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/7951.fee8b6c27c9ef777.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8018.968bf87c390e3312.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8097.b0345f30a7390c1d.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8256.290ceb269b1ffe26.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/826.75268ee34f93393a.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8277.5003e1d94bb85156.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8762.dff300f86bef8573.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8789-4f858e520d46973b.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8807.a68c69c8fe0a8c01.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8849.db0d50b4d84b09a6.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8901.21d26d5a1ee473fe.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/8920.5700e380a2999098.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9258.6c6ef544c701a011.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9307.d4baf7aebbcef1f0.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9361.a0820e3069f5ef74.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9363.6b811b4c86277e07.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9437.a3c32f45cf9ef69b.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9565-28e1c30511c95c2d.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9566.f8bd24768ed14ecb.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9633.40e5056ca1e2b22a.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9785.5ff26cb26d84d6a1.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9832-c8b8970bb522f302.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9855.c4394a68322be9f8.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9898-51ca6a904b7a2382.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/9927.e82a3e1e21990d77.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/bd1a647f.6050372acaa5cc3c.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/framework-7c365855dab1bf41.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/main-bb0dd5375146d7fd.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/pages/_error-235304e5badb19eb.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/pages/index-e34a68d2f6fe16f2.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]-ca9457e1a6bced4b.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/pages/settings-d594a66a568306da.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/pages/sign-in-b4e1eb529a184c60.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/pages/test-85cf18ae78ff535c.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/polyfills-5cd94c89d3acac5f.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/chunks/webpack-bc5e4eb2c1ff587c.js +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/_next/static/css/d1e8e64d0b07af2f.css +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/favicon.ico +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Bold.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Light.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Medium.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Regular.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-Retina.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Fira_Code/ttf/FiraCode-SemiBold.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/LICENSE.txt +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Black.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Bold.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Italic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Light.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Medium.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Regular.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-Thin.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/LICENSE.txt +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/README.txt +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/RobotoMono-Italic-VariableFont_wght.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/RobotoMono-VariableFont_wght.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Bold.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-BoldItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ExtraLight.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ExtraLightItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Italic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Light.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-LightItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Medium.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-MediumItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Regular.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-SemiBold.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-SemiBoldItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-Thin.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/fonts/Roboto_Mono/static/RobotoMono-ThinItalic.ttf +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/images/backfill.jpg +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/images/banner-shape-purple-peach.jpg +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/images/dashboard-api-key.webp +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/images/extra.jpg +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/images/monitor.jpg +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/images/run B.jpg +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/images/sessions/abstract.png +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/frontend_dist/vercel.svg +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/kernel_output_parser.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/kernels.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/scheduler_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/subscriber.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/utils/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/utils/frontend_renderer.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/server/utils/output_display.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/airbyte/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/airbyte/client.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/airbyte/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/airbyte/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/airbyte/exceptions.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/airbyte/server.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/ecs/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/ecs/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/ecs/ecs.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/emr/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/emr/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/emr/emr.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/emr/emr_basics.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/emr/launcher.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/emr/resource_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/events/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/events/events.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/s3/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/s3/s3.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/secrets_manager/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/aws/secrets_manager/secrets_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/datadog/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/dbt/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/dbt/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/dbt/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/dbt/dbt.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/email/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/email/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/email/email.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/gcp/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/gcp/cloud_run/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/gcp/cloud_run/cloud_run.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/gcp/cloud_run/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/hightouch/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/hightouch/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/hightouch/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/hightouch/hightouch.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/k8s/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/k8s/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/k8s/job_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/metaplane/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/metaplane/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/metaplane/metaplane.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/slack/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/slack/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/slack/slack.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/stitch/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/stitch/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/stitch/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/stitch/stitch.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/teams/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/teams/config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/teams/teams.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/tracking/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/services/tracking/metrics.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/settings/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/array.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/code.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/conversions.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/custom_types.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/dates.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/environments.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/hash.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/http_client.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/io.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/logger.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/multi.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/parsers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/retry.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/strings.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/urls.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/shared/utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sinks/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sinks/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sinks/kinesis.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sinks/opensearch.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sinks/sink_factory.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sources/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sources/azure_event_hub.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sources/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sources/kinesis.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sources/rabbitmq.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/streaming/sources/source_factory.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/api/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/api/operations/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/api/operations/base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/api/operations/test_sessions.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/api/operations/test_users.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/base_test.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_clean_column_names.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_fix_syntax_error.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_impute_values.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_reformat_values.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_collinear_columns.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_columns_with_high_empty_rate.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_columns_with_single_value.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_duplicate_rows.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/cleaning_rules/test_remove_outliers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/statistics/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/statistics/test_calculator.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/test_column_type_detector.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/shared.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/test_base.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/test_column.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/test_custom_actions.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/test_helpers.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/test_row.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/test_utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_cleaner/transformer_actions/test_variable_replacer.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_preparation/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_preparation/models/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_preparation/models/test_block.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_preparation/models/test_pipeline.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_preparation/models/test_variable.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/data_preparation/test_variable_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/factory.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/io/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/io/test_config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/io/test_export_utils.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/db/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/db/test_models.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/notification/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/notification/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/notification/test_config.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/notification/test_sender.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/queue/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/queue/test_process_queue.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/test_execution_process_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/test_job_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/test_pipeline_scheduler.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/triggers/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/triggers/test_event_trigger.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/orchestration/triggers/test_loop_time_trigger.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/services/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/services/aws/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/services/aws/s3/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/services/aws/s3/test_s3.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/services/datadog/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/services/datadog/test_datadog.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/services/k8s/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/services/k8s/test_job_manager.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/shared/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/shared/test_io.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/shared/test_retry.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sinks/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sinks/test_kinesis.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sinks/test_opensearch.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sinks/test_sink_factory.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sources/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sources/test_azure_event_hub.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sources/test_kinesis.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sources/test_rabbitmq.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/streaming/sources/test_source_factory.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/tests/test_shared.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/utils/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/utils/code.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/utils/logger/__init__.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/utils/logger/constants.py +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai.egg-info/dependency_links.txt +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai.egg-info/entry_points.txt +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai.egg-info/top_level.txt +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/pyproject.toml +0 -0
- {mage-ai-0.8.11 → mage-ai-0.8.13}/setup.cfg +0 -0
|
@@ -22,7 +22,10 @@ BackfillPolicy.allow_actions([
|
|
|
22
22
|
OauthScope.CLIENT_PRIVATE,
|
|
23
23
|
], condition=lambda policy: policy.has_at_least_editor_role())
|
|
24
24
|
|
|
25
|
-
BackfillPolicy.allow_read([
|
|
25
|
+
BackfillPolicy.allow_read([
|
|
26
|
+
'pipeline_run_dates',
|
|
27
|
+
'total_run_count',
|
|
28
|
+
] + BackfillPresenter.default_attributes, scopes=[
|
|
26
29
|
OauthScope.CLIENT_PRIVATE,
|
|
27
30
|
], on_action=[
|
|
28
31
|
constants.DETAIL,
|
|
@@ -38,6 +38,7 @@ BlockPolicy.allow_read(BlockPresenter.default_attributes + [], scopes=[
|
|
|
38
38
|
], condition=lambda policy: policy.has_at_least_editor_role())
|
|
39
39
|
|
|
40
40
|
BlockPolicy.allow_read([
|
|
41
|
+
'bookmarks',
|
|
41
42
|
'content',
|
|
42
43
|
'outputs',
|
|
43
44
|
] + BlockPresenter.default_attributes, scopes=[
|
|
@@ -68,9 +69,11 @@ BlockPolicy.allow_write([
|
|
|
68
69
|
|
|
69
70
|
BlockPolicy.allow_write([
|
|
70
71
|
'all_upstream_blocks_executed',
|
|
72
|
+
'bookmark_values',
|
|
71
73
|
'color',
|
|
72
74
|
'configuration',
|
|
73
75
|
'content',
|
|
76
|
+
'destination_table',
|
|
74
77
|
'downstream_blocks',
|
|
75
78
|
'executor_config',
|
|
76
79
|
'executor_type',
|
|
@@ -80,6 +83,7 @@ BlockPolicy.allow_write([
|
|
|
80
83
|
'name',
|
|
81
84
|
'outputs',
|
|
82
85
|
'status',
|
|
86
|
+
'tap_stream_id',
|
|
83
87
|
'type',
|
|
84
88
|
'upstream_blocks',
|
|
85
89
|
'uuid',
|
|
@@ -88,3 +92,12 @@ BlockPolicy.allow_write([
|
|
|
88
92
|
], on_action=[
|
|
89
93
|
constants.UPDATE,
|
|
90
94
|
], condition=lambda policy: policy.has_at_least_editor_role())
|
|
95
|
+
|
|
96
|
+
BlockPolicy.allow_query([
|
|
97
|
+
'destination_table',
|
|
98
|
+
'state_stream',
|
|
99
|
+
], scopes=[
|
|
100
|
+
OauthScope.CLIENT_PRIVATE,
|
|
101
|
+
], on_action=[
|
|
102
|
+
constants.DETAIL,
|
|
103
|
+
], condition=lambda policy: policy.has_at_least_viewer_role())
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from mage_ai.api.oauth_scope import OauthScope
|
|
2
|
+
from mage_ai.api.operations import constants
|
|
3
|
+
from mage_ai.api.policies.BasePolicy import BasePolicy
|
|
4
|
+
from mage_ai.api.presenters.SyncPresenter import SyncPresenter
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SyncPolicy(BasePolicy):
|
|
8
|
+
pass
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
SyncPolicy.allow_read(SyncPresenter.default_attributes, scopes=[
|
|
12
|
+
OauthScope.CLIENT_PRIVATE,
|
|
13
|
+
], on_action=[
|
|
14
|
+
constants.CREATE,
|
|
15
|
+
constants.UPDATE,
|
|
16
|
+
], condition=lambda policy: policy.has_at_least_viewer_role())
|
|
17
|
+
|
|
18
|
+
SyncPolicy.allow_write(SyncPresenter.default_attributes, scopes=[
|
|
19
|
+
OauthScope.CLIENT_PRIVATE,
|
|
20
|
+
], on_action=[
|
|
21
|
+
constants.CREATE,
|
|
22
|
+
], condition=lambda policy: policy.has_at_least_editor_role())
|
|
23
|
+
|
|
24
|
+
SyncPolicy.allow_write([
|
|
25
|
+
'action_type',
|
|
26
|
+
], scopes=[
|
|
27
|
+
OauthScope.CLIENT_PRIVATE,
|
|
28
|
+
], on_action=[
|
|
29
|
+
constants.UPDATE,
|
|
30
|
+
], condition=lambda policy: policy.has_at_least_editor_role())
|
|
@@ -30,13 +30,24 @@ class BlockPresenter(BasePresenter):
|
|
|
30
30
|
if display_format in [constants.CREATE, constants.UPDATE]:
|
|
31
31
|
return self.model.to_dict(include_content=True)
|
|
32
32
|
elif display_format in [constants.DETAIL, 'dbt']:
|
|
33
|
-
|
|
33
|
+
query = kwargs.get('query', {})
|
|
34
|
+
|
|
35
|
+
include_outputs = query.get('include_outputs', [True])
|
|
34
36
|
if include_outputs:
|
|
35
37
|
include_outputs = include_outputs[0]
|
|
36
38
|
|
|
39
|
+
state_stream = query.get('state_stream', [None])
|
|
40
|
+
if state_stream:
|
|
41
|
+
state_stream = state_stream[0]
|
|
42
|
+
destination_table = query.get('destination_table', [None])
|
|
43
|
+
if destination_table:
|
|
44
|
+
destination_table = destination_table[0]
|
|
45
|
+
|
|
37
46
|
data = self.model.to_dict(
|
|
47
|
+
destination_table=destination_table,
|
|
38
48
|
include_content=True,
|
|
39
49
|
include_outputs=include_outputs,
|
|
50
|
+
state_stream=state_stream,
|
|
40
51
|
)
|
|
41
52
|
|
|
42
53
|
if 'dbt' == display_format:
|
|
@@ -78,4 +78,11 @@ class BlockResource(GenericResource):
|
|
|
78
78
|
|
|
79
79
|
@safe_db_query
|
|
80
80
|
def update(self, payload, **kwargs):
|
|
81
|
-
|
|
81
|
+
query = kwargs.get('query', {})
|
|
82
|
+
update_state = query.get('update_state', [False])
|
|
83
|
+
if update_state:
|
|
84
|
+
update_state = update_state[0]
|
|
85
|
+
self.model.update(
|
|
86
|
+
payload,
|
|
87
|
+
update_state=update_state,
|
|
88
|
+
)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from mage_ai.api.resources.GenericResource import GenericResource
|
|
2
|
+
from mage_ai.data_preparation.preferences import get_preferences
|
|
3
|
+
from mage_ai.data_preparation.sync import SyncType, SyncConfig
|
|
4
|
+
from mage_ai.data_preparation.sync.git_sync import GitSync
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SyncResource(GenericResource):
|
|
8
|
+
@classmethod
|
|
9
|
+
def collection(self, query, meta, user, **kwargs):
|
|
10
|
+
preferences = get_preferences()
|
|
11
|
+
sync_config = preferences.sync_config
|
|
12
|
+
return self.build_result_set(
|
|
13
|
+
[sync_config],
|
|
14
|
+
user,
|
|
15
|
+
**kwargs,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
@classmethod
|
|
19
|
+
def create(self, payload, user, **kwargs):
|
|
20
|
+
sync_config = SyncConfig.load(config=payload)
|
|
21
|
+
get_preferences().update_preferences(
|
|
22
|
+
dict(sync_config=sync_config.to_dict())
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
if sync_config.type == SyncType.GIT:
|
|
26
|
+
# set up Git repo
|
|
27
|
+
GitSync(sync_config)
|
|
28
|
+
|
|
29
|
+
return self(get_preferences().sync_config, user, **kwargs)
|
|
30
|
+
|
|
31
|
+
@classmethod
|
|
32
|
+
def member(self, pk, user, **kwargs):
|
|
33
|
+
return self(get_preferences().sync_config, user, **kwargs)
|
|
34
|
+
|
|
35
|
+
def update(self, payload, **kwargs):
|
|
36
|
+
sync_config = SyncConfig.load(config=self.model)
|
|
37
|
+
action_type = payload.get('action_type')
|
|
38
|
+
if action_type == 'sync_data':
|
|
39
|
+
if sync_config.type == SyncType.GIT:
|
|
40
|
+
sync = GitSync(sync_config)
|
|
41
|
+
sync.sync_data()
|
|
42
|
+
|
|
43
|
+
return self
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from mage_ai.data_preparation.logging.logger import DictLogger
|
|
2
2
|
from mage_ai.data_preparation.logging.logger_manager_factory import LoggerManagerFactory
|
|
3
3
|
from mage_ai.data_preparation.models.pipeline import Pipeline
|
|
4
|
+
from mage_ai.shared.hash import merge_dict
|
|
4
5
|
from typing import Dict
|
|
5
6
|
import asyncio
|
|
6
7
|
|
|
@@ -33,3 +34,11 @@ class PipelineExecutor:
|
|
|
33
34
|
update_status=update_status,
|
|
34
35
|
))
|
|
35
36
|
self.logger_manager.output_logs_to_destination()
|
|
37
|
+
|
|
38
|
+
def _build_tags(self, **kwargs):
|
|
39
|
+
default_tags = dict(
|
|
40
|
+
pipeline_uuid=self.pipeline.uuid,
|
|
41
|
+
)
|
|
42
|
+
if kwargs.get('pipeline_run_id'):
|
|
43
|
+
default_tags['pipeline_run_id'] = kwargs.get('pipeline_run_id')
|
|
44
|
+
return merge_dict(kwargs.get('tags', {}), default_tags)
|
{mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/executors/streaming_pipeline_executor.py
RENAMED
|
@@ -69,10 +69,12 @@ class StreamingPipelineExecutor(PipelineExecutor):
|
|
|
69
69
|
# TODOs:
|
|
70
70
|
# 1. Support multiple sources and sinks
|
|
71
71
|
# 2. Support flink pipeline
|
|
72
|
+
|
|
73
|
+
tags = self._build_tags(**kwargs)
|
|
72
74
|
if build_block_output_stdout:
|
|
73
75
|
stdout = build_block_output_stdout(self.pipeline.uuid)
|
|
74
76
|
else:
|
|
75
|
-
stdout = StreamToLogger(self.logger)
|
|
77
|
+
stdout = StreamToLogger(self.logger, logging_tags=tags)
|
|
76
78
|
try:
|
|
77
79
|
with redirect_stdout(stdout):
|
|
78
80
|
with redirect_stderr(stdout):
|
|
@@ -1263,6 +1263,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1263
1263
|
include_outputs=False,
|
|
1264
1264
|
sample_count=None,
|
|
1265
1265
|
check_if_file_exists: bool = False,
|
|
1266
|
+
**kwargs,
|
|
1266
1267
|
):
|
|
1267
1268
|
data = self.to_dict_base()
|
|
1268
1269
|
if include_content:
|
|
@@ -1280,6 +1281,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1280
1281
|
'Delete the current block to remove it from the pipeline or write code ' +
|
|
1281
1282
|
f'and save the pipeline to create a new file at {file_path}.',
|
|
1282
1283
|
)
|
|
1284
|
+
|
|
1283
1285
|
return data
|
|
1284
1286
|
|
|
1285
1287
|
async def to_dict_async(
|
|
@@ -1314,7 +1316,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1314
1316
|
|
|
1315
1317
|
return data
|
|
1316
1318
|
|
|
1317
|
-
def update(self, data):
|
|
1319
|
+
def update(self, data, **kwargs):
|
|
1318
1320
|
if 'name' in data and data['name'] != self.name:
|
|
1319
1321
|
self.__update_name(data['name'])
|
|
1320
1322
|
if (
|
|
@@ -1338,6 +1340,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1338
1340
|
if self.has_callback:
|
|
1339
1341
|
CallbackBlock.create(self.uuid)
|
|
1340
1342
|
self.__update_pipeline_block()
|
|
1343
|
+
|
|
1341
1344
|
return self
|
|
1342
1345
|
|
|
1343
1346
|
def update_upstream_blocks(self, upstream_blocks: List[Any]) -> None:
|
|
@@ -1505,8 +1508,6 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1505
1508
|
raise Exception(f'Failed to pass tests for block {self.uuid}')
|
|
1506
1509
|
|
|
1507
1510
|
def analyze_outputs(self, variable_mapping, shape_only: bool = False):
|
|
1508
|
-
from mage_ai.data_cleaner.data_cleaner import clean as clean_data
|
|
1509
|
-
|
|
1510
1511
|
if self.pipeline is None:
|
|
1511
1512
|
return
|
|
1512
1513
|
for uuid, data in variable_mapping.items():
|
|
@@ -1532,6 +1533,7 @@ df = get_variable('{self.pipeline.uuid}', '{block_uuid}', 'df')
|
|
|
1532
1533
|
else:
|
|
1533
1534
|
data_for_analysis = data.reset_index(drop=True)
|
|
1534
1535
|
try:
|
|
1536
|
+
from mage_ai.data_cleaner.data_cleaner import clean as clean_data
|
|
1535
1537
|
analysis = clean_data(
|
|
1536
1538
|
data_for_analysis,
|
|
1537
1539
|
df_original=data,
|
{mage-ai-0.8.11 → mage-ai-0.8.13}/mage_ai/data_preparation/models/block/integration/__init__.py
RENAMED
|
@@ -314,6 +314,65 @@ class SourceBlock(IntegrationBlock):
|
|
|
314
314
|
|
|
315
315
|
|
|
316
316
|
class DestinationBlock(IntegrationBlock):
|
|
317
|
+
def to_dict(
|
|
318
|
+
self,
|
|
319
|
+
include_content=False,
|
|
320
|
+
include_outputs=False,
|
|
321
|
+
sample_count=None,
|
|
322
|
+
check_if_file_exists: bool = False,
|
|
323
|
+
destination_table: str = None,
|
|
324
|
+
state_stream: str = None,
|
|
325
|
+
):
|
|
326
|
+
data = {}
|
|
327
|
+
if state_stream and destination_table:
|
|
328
|
+
from mage_ai.data_preparation.models.pipelines.integration_pipeline \
|
|
329
|
+
import IntegrationPipeline
|
|
330
|
+
integration_pipeline = IntegrationPipeline(self.pipeline.uuid)
|
|
331
|
+
destination_state_file_path = integration_pipeline.destination_state_file_path(
|
|
332
|
+
destination_table=destination_table,
|
|
333
|
+
stream=state_stream,
|
|
334
|
+
)
|
|
335
|
+
if os.path.isfile(destination_state_file_path):
|
|
336
|
+
with open(destination_state_file_path, 'r') as f:
|
|
337
|
+
text = f.read()
|
|
338
|
+
d = json.loads(text) if text else {}
|
|
339
|
+
bookmark_values = d.get('bookmarks', {}).get(state_stream)
|
|
340
|
+
data['bookmarks'] = bookmark_values
|
|
341
|
+
|
|
342
|
+
return merge_dict(
|
|
343
|
+
super().to_dict(
|
|
344
|
+
include_content,
|
|
345
|
+
include_outputs,
|
|
346
|
+
sample_count,
|
|
347
|
+
check_if_file_exists,
|
|
348
|
+
),
|
|
349
|
+
data,
|
|
350
|
+
)
|
|
351
|
+
|
|
352
|
+
def update(self, data, update_state=False):
|
|
353
|
+
if update_state:
|
|
354
|
+
from mage_ai.data_preparation.models.pipelines.integration_pipeline \
|
|
355
|
+
import IntegrationPipeline
|
|
356
|
+
from mage_integrations.destinations.utils \
|
|
357
|
+
import update_destination_state_bookmarks
|
|
358
|
+
|
|
359
|
+
integration_pipeline = IntegrationPipeline(self.pipeline.uuid)
|
|
360
|
+
tap_stream_id = data.get('tap_stream_id')
|
|
361
|
+
destination_table = data.get('destination_table')
|
|
362
|
+
bookmark_values = data.get('bookmark_values', {})
|
|
363
|
+
if tap_stream_id and destination_table:
|
|
364
|
+
destination_state_file_path = integration_pipeline.destination_state_file_path(
|
|
365
|
+
destination_table=destination_table,
|
|
366
|
+
stream=tap_stream_id,
|
|
367
|
+
)
|
|
368
|
+
update_destination_state_bookmarks(
|
|
369
|
+
destination_state_file_path,
|
|
370
|
+
tap_stream_id,
|
|
371
|
+
bookmark_values=bookmark_values
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
return super().update(data)
|
|
375
|
+
|
|
317
376
|
def output_variables(self, execution_partition: str = None) -> List[str]:
|
|
318
377
|
return []
|
|
319
378
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from typing import Dict
|
|
2
|
+
from mage_ai.data_preparation.models.constants import PREFERENCES_FILE
|
|
3
|
+
from mage_ai.data_preparation.repo_manager import get_repo_path
|
|
4
|
+
import os
|
|
5
|
+
import traceback
|
|
6
|
+
import yaml
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Preferences:
|
|
10
|
+
def __init__(self, repo_path: str = None, config_dict: Dict = None):
|
|
11
|
+
self.repo_path = repo_path or get_repo_path()
|
|
12
|
+
self.preferences_file_path = \
|
|
13
|
+
os.path.join(self.repo_path, PREFERENCES_FILE)
|
|
14
|
+
|
|
15
|
+
try:
|
|
16
|
+
if not config_dict:
|
|
17
|
+
if os.path.exists(self.preferences_file_path):
|
|
18
|
+
with open(self.preferences_file_path) as f:
|
|
19
|
+
preferences = yaml.full_load(f.read()) or {}
|
|
20
|
+
else:
|
|
21
|
+
preferences = dict()
|
|
22
|
+
else:
|
|
23
|
+
preferences = config_dict
|
|
24
|
+
|
|
25
|
+
self.sync_config = preferences.get('sync_config', dict())
|
|
26
|
+
except Exception:
|
|
27
|
+
traceback.print_exc()
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
def update_preferences(self, updates: Dict):
|
|
31
|
+
preferences = self.to_dict()
|
|
32
|
+
preferences.update(updates)
|
|
33
|
+
with open(self.preferences_file_path, 'w') as f:
|
|
34
|
+
yaml.dump(preferences, f)
|
|
35
|
+
|
|
36
|
+
def to_dict(self) -> Dict:
|
|
37
|
+
return dict(
|
|
38
|
+
sync_config=self.sync_config
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def get_preferences(repo_path=None) -> Preferences:
|
|
43
|
+
return Preferences(repo_path=repo_path)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from enum import Enum
|
|
3
|
+
from mage_ai.shared.config import BaseConfig
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SyncType(str, Enum):
|
|
8
|
+
GIT = 'git'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass
|
|
12
|
+
class SyncConfig(BaseConfig):
|
|
13
|
+
type: SyncType
|
|
14
|
+
remote_repo_link: str
|
|
15
|
+
repo_path: str = os.getcwd()
|
|
16
|
+
branch: str = 'main'
|
|
17
|
+
sync_on_pipeline_run: bool = False
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from mage_ai.data_preparation.sync import SyncConfig
|
|
2
|
+
from mage_ai.data_preparation.sync.base_sync import BaseSync
|
|
3
|
+
from mage_ai.shared.logger import VerboseFunctionExec
|
|
4
|
+
import git
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class GitSync(BaseSync):
|
|
8
|
+
def __init__(self, sync_config: SyncConfig):
|
|
9
|
+
self.remote_repo_link = sync_config.remote_repo_link
|
|
10
|
+
self.repo_path = sync_config.repo_path
|
|
11
|
+
self.branch = sync_config.branch
|
|
12
|
+
try:
|
|
13
|
+
self.repo = git.Repo(self.repo_path)
|
|
14
|
+
except git.exc.InvalidGitRepositoryError:
|
|
15
|
+
self.repo = git.Repo.init(self.repo_path)
|
|
16
|
+
self.repo.create_remote('origin', self.remote_repo_link)
|
|
17
|
+
|
|
18
|
+
self.origin = self.repo.remotes.origin
|
|
19
|
+
|
|
20
|
+
def sync_data(self):
|
|
21
|
+
with VerboseFunctionExec(
|
|
22
|
+
f'Syncing data with remote repo {self.remote_repo_link}',
|
|
23
|
+
verbose=True,
|
|
24
|
+
):
|
|
25
|
+
self.origin.fetch(kill_after_timeout=60)
|
|
26
|
+
self.repo.git.reset('--hard', f'origin/{self.branch}')
|
|
@@ -18,3 +18,8 @@ consumer_group: unique_consumer_group
|
|
|
18
18
|
# mechanism: "PLAIN"
|
|
19
19
|
# username: username
|
|
20
20
|
# password: password
|
|
21
|
+
|
|
22
|
+
# Uncomment the config below to use protobuf schema to deserialize message
|
|
23
|
+
# serde_config:
|
|
24
|
+
# serialization_method: PROTOBUF
|
|
25
|
+
# schema_classpath: "path.to.schema.SchemaClass"
|
|
@@ -4,8 +4,10 @@ from mage_ai.io.sql import BaseSQL
|
|
|
4
4
|
from pandas import DataFrame, Series
|
|
5
5
|
from psycopg2 import connect, _psycopg
|
|
6
6
|
from sshtunnel import SSHTunnelForwarder
|
|
7
|
-
import numpy as np
|
|
8
7
|
from typing import Union, IO
|
|
8
|
+
import json
|
|
9
|
+
import numpy as np
|
|
10
|
+
import pandas as pd
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
class Postgres(BaseSQL):
|
|
@@ -138,6 +140,29 @@ class Postgres(BaseSQL):
|
|
|
138
140
|
PandasTypes.UNKNOWN_ARRAY,
|
|
139
141
|
PandasTypes.COMPLEX,
|
|
140
142
|
):
|
|
143
|
+
series = column[column.notnull()]
|
|
144
|
+
values = series.values
|
|
145
|
+
|
|
146
|
+
column_type = None
|
|
147
|
+
|
|
148
|
+
if len(values) >= 1:
|
|
149
|
+
value = values[0]
|
|
150
|
+
column_type = 'JSONB'
|
|
151
|
+
|
|
152
|
+
if type(value) is list:
|
|
153
|
+
if len(value) >= 1:
|
|
154
|
+
item = value[0]
|
|
155
|
+
item_series = pd.Series(data=item)
|
|
156
|
+
item_dtype = item_series.dtype
|
|
157
|
+
if PandasTypes.OBJECT != item_dtype:
|
|
158
|
+
item_type = self.get_type(item_series, item_dtype)
|
|
159
|
+
column_type = f'{item_type}[]'
|
|
160
|
+
else:
|
|
161
|
+
column_type = 'text[]'
|
|
162
|
+
|
|
163
|
+
if column_type:
|
|
164
|
+
return column_type
|
|
165
|
+
|
|
141
166
|
raise BadConversionError(
|
|
142
167
|
f'Cannot convert column \'{column.name}\' with data type \'{dtype}\' to '
|
|
143
168
|
'a PostgreSQL datatype.'
|
|
@@ -180,6 +205,8 @@ class Postgres(BaseSQL):
|
|
|
180
205
|
return 'bigint'
|
|
181
206
|
elif dtype == PandasTypes.EMPTY:
|
|
182
207
|
return 'text'
|
|
208
|
+
elif PandasTypes.OBJECT == dtype:
|
|
209
|
+
return 'JSONB'
|
|
183
210
|
else:
|
|
184
211
|
print(f'Invalid datatype provided: {dtype}')
|
|
185
212
|
|
|
@@ -192,9 +219,24 @@ class Postgres(BaseSQL):
|
|
|
192
219
|
full_table_name: str,
|
|
193
220
|
buffer: Union[IO, None] = None
|
|
194
221
|
) -> None:
|
|
195
|
-
|
|
196
|
-
|
|
222
|
+
df_ = df.copy()
|
|
223
|
+
columns = df_.columns
|
|
224
|
+
|
|
225
|
+
for col in columns:
|
|
226
|
+
print(col, df_[col].dtype)
|
|
227
|
+
if PandasTypes.OBJECT == df_[col].dtype:
|
|
228
|
+
df_[col] = df_[col].apply(lambda x: json.dumps(x))
|
|
229
|
+
|
|
230
|
+
df_.to_csv(
|
|
231
|
+
buffer,
|
|
232
|
+
header=False,
|
|
233
|
+
index=False,
|
|
234
|
+
na_rep='',
|
|
235
|
+
)
|
|
236
|
+
|
|
197
237
|
buffer.seek(0)
|
|
238
|
+
|
|
239
|
+
columns_names = ', '.join(columns)
|
|
198
240
|
cursor.copy_expert(f"""
|
|
199
241
|
COPY {full_table_name} FROM STDIN (
|
|
200
242
|
FORMAT csv
|
|
@@ -202,4 +244,4 @@ COPY {full_table_name} FROM STDIN (
|
|
|
202
244
|
, NULL \'\'
|
|
203
245
|
, FORCE_NULL({columns_names})
|
|
204
246
|
);
|
|
205
|
-
""", buffer)
|
|
247
|
+
""", buffer)
|
|
@@ -76,6 +76,11 @@ class BaseModel(Base):
|
|
|
76
76
|
def full_clean(self, **kwargs) -> None:
|
|
77
77
|
pass
|
|
78
78
|
|
|
79
|
+
@classmethod
|
|
80
|
+
@safe_db_query
|
|
81
|
+
def get(self, uuid):
|
|
82
|
+
return self.query.get(uuid)
|
|
83
|
+
|
|
79
84
|
def save(self, commit=True) -> None:
|
|
80
85
|
self.session.add(self)
|
|
81
86
|
if commit:
|
|
@@ -667,6 +672,15 @@ class Backfill(BaseModel):
|
|
|
667
672
|
|
|
668
673
|
pipeline_runs = relationship('PipelineRun', back_populates='backfill')
|
|
669
674
|
|
|
675
|
+
@classmethod
|
|
676
|
+
@safe_db_query
|
|
677
|
+
def filter(self, pipeline_schedule_ids: List = None):
|
|
678
|
+
if pipeline_schedule_ids is not None:
|
|
679
|
+
return Backfill.query.filter(
|
|
680
|
+
Backfill.pipeline_schedule_id.in_(pipeline_schedule_ids),
|
|
681
|
+
)
|
|
682
|
+
return []
|
|
683
|
+
|
|
670
684
|
|
|
671
685
|
class Secret(BaseModel):
|
|
672
686
|
name = Column(String(255), unique=True)
|
|
@@ -14,7 +14,10 @@ from mage_ai.data_preparation.models.block.utils import (
|
|
|
14
14
|
from mage_ai.data_preparation.models.constants import PipelineType
|
|
15
15
|
from mage_ai.data_preparation.models.pipeline import Pipeline
|
|
16
16
|
from mage_ai.data_preparation.models.pipelines.integration_pipeline import IntegrationPipeline
|
|
17
|
+
from mage_ai.data_preparation.preferences import get_preferences
|
|
17
18
|
from mage_ai.data_preparation.repo_manager import get_repo_config, get_repo_path
|
|
19
|
+
from mage_ai.data_preparation.sync import SyncConfig
|
|
20
|
+
from mage_ai.data_preparation.sync.git_sync import GitSync
|
|
18
21
|
from mage_ai.data_preparation.variable_manager import get_global_variables
|
|
19
22
|
from mage_ai.orchestration.db.models import (
|
|
20
23
|
Backfill,
|
|
@@ -58,6 +61,12 @@ class PipelineScheduler:
|
|
|
58
61
|
)
|
|
59
62
|
|
|
60
63
|
def start(self, should_schedule: bool = True) -> None:
|
|
64
|
+
if get_preferences().sync_config:
|
|
65
|
+
sync_config = SyncConfig.load(config=get_preferences().sync_config)
|
|
66
|
+
if sync_config.sync_on_pipeline_run:
|
|
67
|
+
sync = GitSync(sync_config)
|
|
68
|
+
sync.sync_data()
|
|
69
|
+
|
|
61
70
|
if self.pipeline_run.status == PipelineRun.PipelineRunStatus.RUNNING:
|
|
62
71
|
return
|
|
63
72
|
self.pipeline_run.update(status=PipelineRun.PipelineRunStatus.RUNNING)
|
|
@@ -126,7 +135,7 @@ class PipelineScheduler:
|
|
|
126
135
|
)
|
|
127
136
|
self.logger_manager.output_logs_to_destination()
|
|
128
137
|
|
|
129
|
-
schedule = PipelineSchedule.
|
|
138
|
+
schedule = PipelineSchedule.get(
|
|
130
139
|
self.pipeline_run.pipeline_schedule_id,
|
|
131
140
|
)
|
|
132
141
|
|
|
@@ -735,9 +744,8 @@ def schedule_all():
|
|
|
735
744
|
active_pipeline_schedules = \
|
|
736
745
|
list(PipelineSchedule.active_schedules(pipeline_uuids=repo_pipelines))
|
|
737
746
|
|
|
738
|
-
backfills = Backfill.
|
|
739
|
-
|
|
740
|
-
)
|
|
747
|
+
backfills = Backfill.filter(pipeline_schedule_ids=[ps.id for ps in active_pipeline_schedules])
|
|
748
|
+
|
|
741
749
|
backfills_by_pipeline_schedule_id = index_by(
|
|
742
750
|
lambda backfill: backfill.pipeline_schedule_id,
|
|
743
751
|
backfills,
|