mage-ai 0.8.97__py3-none-any.whl → 0.8.99__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mage-ai might be problematic. Click here for more details.
- mage_ai/api/policies/AutocompleteItemPolicy.py +2 -1
- mage_ai/api/policies/BasePolicy.py +2 -2
- mage_ai/api/policies/BlockTemplatePolicy.py +2 -1
- mage_ai/api/policies/ClusterPolicy.py +2 -1
- mage_ai/api/policies/DataProviderPolicy.py +2 -1
- mage_ai/api/policies/EventRulePolicy.py +2 -1
- mage_ai/api/policies/ExtensionOptionPolicy.py +2 -1
- mage_ai/api/policies/FileVersionPolicy.py +2 -1
- mage_ai/api/policies/GitBranchPolicy.py +9 -0
- mage_ai/api/policies/KernelPolicy.py +2 -1
- mage_ai/api/policies/LogPolicy.py +2 -2
- mage_ai/api/policies/OauthPolicy.py +15 -0
- mage_ai/api/policies/OutputPolicy.py +2 -2
- mage_ai/api/policies/PipelinePolicy.py +2 -2
- mage_ai/api/policies/PipelineRunPolicy.py +2 -2
- mage_ai/api/policies/PipelineSchedulePolicy.py +2 -2
- mage_ai/api/policies/PullRequestPolicy.py +64 -0
- mage_ai/api/policies/SessionPolicy.py +4 -1
- mage_ai/api/policies/VariablePolicy.py +2 -2
- mage_ai/api/policies/WidgetPolicy.py +2 -2
- mage_ai/api/policies/WorkspacePolicy.py +3 -3
- mage_ai/api/presenters/PipelinePresenter.py +1 -0
- mage_ai/api/presenters/PullRequestPresenter.py +16 -0
- mage_ai/api/presenters/StatusPresenter.py +2 -0
- mage_ai/api/presenters/SyncPresenter.py +1 -0
- mage_ai/api/presenters/WorkspacePresenter.py +2 -0
- mage_ai/api/resources/GitBranchResource.py +81 -26
- mage_ai/api/resources/OauthResource.py +31 -4
- mage_ai/api/resources/PipelineResource.py +8 -1
- mage_ai/api/resources/PullRequestResource.py +87 -0
- mage_ai/api/resources/RoleResource.py +6 -3
- mage_ai/api/resources/SecretResource.py +2 -5
- mage_ai/api/resources/SessionResource.py +18 -0
- mage_ai/api/resources/StatusResource.py +7 -3
- mage_ai/api/resources/UserResource.py +11 -16
- mage_ai/api/resources/WorkspaceResource.py +83 -53
- mage_ai/authentication/oauth/active_directory.py +17 -0
- mage_ai/authentication/oauth/constants.py +9 -0
- mage_ai/authentication/oauth/utils.py +2 -1
- mage_ai/authentication/oauth2.py +9 -3
- mage_ai/cli/main.py +94 -51
- mage_ai/cluster_manager/kubernetes/workload_manager.py +141 -45
- mage_ai/data_preparation/git/__init__.py +86 -16
- mage_ai/data_preparation/git/api.py +175 -0
- mage_ai/data_preparation/models/block/dbt/utils/__init__.py +49 -14
- mage_ai/data_preparation/models/block/sql/__init__.py +3 -2
- mage_ai/data_preparation/models/pipeline.py +4 -1
- mage_ai/data_preparation/models/pipelines/integration_pipeline.py +7 -3
- mage_ai/data_preparation/preferences.py +4 -2
- mage_ai/data_preparation/repo_manager.py +41 -10
- mage_ai/data_preparation/shared/secrets.py +5 -6
- mage_ai/data_preparation/sync/__init__.py +2 -1
- mage_ai/data_preparation/sync/git_sync.py +2 -5
- mage_ai/data_preparation/templates/utils.py +2 -0
- mage_ai/orchestration/db/models/oauth.py +22 -4
- mage_ai/orchestration/pipeline_scheduler.py +19 -8
- mage_ai/orchestration/queue/process_queue.py +15 -12
- mage_ai/server/api/clusters.py +21 -11
- mage_ai/server/constants.py +1 -1
- mage_ai/server/frontend_dist/404.html +2 -2
- mage_ai/server/frontend_dist/404.html.html +2 -2
- mage_ai/server/frontend_dist/_next/static/WRxCTOtmZhTqQws_7OJZD/_buildManifest.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/{1286-993725c925c56a98.js → 1286-b90bd4b7f8abfc3a.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/{1424-f475cae42f8a7fca.js → 1424-90c0f66ba2f86b88.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/3883-c95563b9f60ae526.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/6694-c8f2a68074420906.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/{9350-1ff50f1d7b9ee754.js → 9350-5191c83a8d0cf454.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/{_app-3527178abd99bc87.js → _app-171846e16d26855a.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/files-e4e778f8f5e1bf2e.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/settings-c788c1b127999825.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users/[user]-b4650224a19e8fe6.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users/new-931eb719e3fae29c.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users-d3724bde0b186dd9.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-af11f9cf94024ac0.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills/{[...slug]-3ec5eb9562e4bff4.js → [...slug]-34326db259f922d1.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-503ecb7a72257b79.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs/{[run]-7667080098731e30.js → [run]-2994b8ab7862c07b.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-7b31b851e2544b42.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers/{[...slug]-e18058e13882b20d.js → [...slug]-4445619d4eabe065.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/{triggers-6854c10d5589d394.js → triggers-b7db0b682fadb840.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-ee0931af3abb55b3.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-f8a59d718751be9a.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/sync-data-90f8830890036eb2.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-9f82673fc438ea83.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/sign-in-a1871b8a537d823c.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/version-control-48859b4e9c846212.js +1 -0
- mage_ai/server/frontend_dist/files.html +2 -2
- mage_ai/server/frontend_dist/index.html +2 -2
- mage_ai/server/frontend_dist/manage/settings.html +24 -0
- mage_ai/server/frontend_dist/manage/users/[user].html +2 -2
- mage_ai/server/frontend_dist/manage/users/new.html +24 -0
- mage_ai/server/frontend_dist/manage/users.html +2 -2
- mage_ai/server/frontend_dist/manage.html +2 -2
- mage_ai/server/frontend_dist/pipeline-runs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills/[...slug].html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/edit.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/logs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runtime.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/runs/[run].html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/runs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/settings.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/syncs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers/[...slug].html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline].html +2 -2
- mage_ai/server/frontend_dist/pipelines.html +2 -2
- mage_ai/server/frontend_dist/settings/account/profile.html +2 -2
- mage_ai/server/frontend_dist/settings/workspace/preferences.html +2 -2
- mage_ai/server/frontend_dist/settings/workspace/sync-data.html +2 -2
- mage_ai/server/frontend_dist/settings/workspace/users.html +2 -2
- mage_ai/server/frontend_dist/settings.html +2 -2
- mage_ai/server/frontend_dist/sign-in.html +2 -2
- mage_ai/server/frontend_dist/terminal.html +2 -2
- mage_ai/server/frontend_dist/test.html +2 -2
- mage_ai/server/frontend_dist/triggers.html +2 -2
- mage_ai/server/frontend_dist/version-control.html +2 -2
- mage_ai/server/scheduler_manager.py +7 -2
- mage_ai/server/server.py +37 -3
- mage_ai/server/terminal_server.py +2 -2
- mage_ai/server/websocket_server.py +6 -2
- mage_ai/services/newrelic/__init__.py +21 -0
- mage_ai/settings/__init__.py +32 -0
- mage_ai/shared/hash.py +2 -0
- mage_ai/tests/api/test_utils.py +29 -2
- mage_ai/tests/data_preparation/models/test_pipeline.py +5 -0
- {mage_ai-0.8.97.dist-info → mage_ai-0.8.99.dist-info}/METADATA +8 -3
- {mage_ai-0.8.97.dist-info → mage_ai-0.8.99.dist-info}/RECORD +136 -127
- mage_ai/data_preparation/templates/main/projects/__init__.py +0 -0
- mage_ai/server/frontend_dist/_next/static/YLZRSrQ0aqtl-GGePfsMB/_buildManifest.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/3077-d58f18ed770e5137.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/3714-b676173cd4d8d86c.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/files-82b5409dac9564f4.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users/[user]-bb6aaa23e92a5add.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users-c91ee702a4cd7a6f.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-7961010cb0fb9abd.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-7b8ce89f0d717465.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-5bd17a8f3f3d57ef.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-7d75e42d5f4936bb.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-8220c1200472bf70.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/sync-data-b602fa9b6ffabd12.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-3f9d5800f268a263.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/sign-in-2925c2c1b0c5559a.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/version-control-5ffc663cfb0ec81e.js +0 -1
- /mage_ai/server/frontend_dist/_next/static/{YLZRSrQ0aqtl-GGePfsMB → WRxCTOtmZhTqQws_7OJZD}/_middlewareManifest.js +0 -0
- /mage_ai/server/frontend_dist/_next/static/{YLZRSrQ0aqtl-GGePfsMB → WRxCTOtmZhTqQws_7OJZD}/_ssgManifest.js +0 -0
- {mage_ai-0.8.97.dist-info → mage_ai-0.8.99.dist-info}/LICENSE +0 -0
- {mage_ai-0.8.97.dist-info → mage_ai-0.8.99.dist-info}/WHEEL +0 -0
- {mage_ai-0.8.97.dist-info → mage_ai-0.8.99.dist-info}/entry_points.txt +0 -0
- {mage_ai-0.8.97.dist-info → mage_ai-0.8.99.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import newrelic.agent
|
|
2
|
+
|
|
3
|
+
from mage_ai.settings import ENABLE_NEW_RELIC, NEW_RELIC_CONFIG_PATH
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def initialize_new_relic():
|
|
7
|
+
enable_new_relic = ENABLE_NEW_RELIC
|
|
8
|
+
application = None
|
|
9
|
+
if ENABLE_NEW_RELIC:
|
|
10
|
+
try:
|
|
11
|
+
newrelic.agent.initialize(NEW_RELIC_CONFIG_PATH)
|
|
12
|
+
application = newrelic.agent.register_application(timeout=10)
|
|
13
|
+
except newrelic.api.exceptions.ConfigurationError as error:
|
|
14
|
+
print(f"Configuration error with new relic initialization. Disable "
|
|
15
|
+
f"new relic reporting. Message: {error}")
|
|
16
|
+
enable_new_relic = False
|
|
17
|
+
except Exception as error:
|
|
18
|
+
print("Unexpected error with new relic initialization. Disable "
|
|
19
|
+
f"new relic reporting. Message: {error}")
|
|
20
|
+
enable_new_relic = False
|
|
21
|
+
return (enable_new_relic, application)
|
mage_ai/settings/__init__.py
CHANGED
|
@@ -23,6 +23,7 @@ def is_disable_pipeline_edit_access():
|
|
|
23
23
|
return DISABLE_NOTEBOOK_EDIT_ACCESS >= 1
|
|
24
24
|
|
|
25
25
|
|
|
26
|
+
# ----------------- Authentication settings ----------------
|
|
26
27
|
REQUIRE_USER_AUTHENTICATION = \
|
|
27
28
|
os.getenv('REQUIRE_USER_AUTHENTICATION', 'False').lower() in ('true', '1', 't')
|
|
28
29
|
AUTHENTICATION_MODE = os.getenv('AUTHENTICATION_MODE', 'LOCAL')
|
|
@@ -38,6 +39,10 @@ LDAP_ADMIN_USERNAME = os.getenv('LDAP_ADMIN_USERNAME', 'admin')
|
|
|
38
39
|
# values: Viewer, Editor, Admin
|
|
39
40
|
LDAP_DEFAULT_ACCESS = os.getenv('LDAP_DEFAULT_ACCESS', None)
|
|
40
41
|
|
|
42
|
+
ACTIVE_DIRECTORY_DIRECTORY_ID = os.getenv('ACTIVE_DIRECTORY_DIRECTORY_ID', None)
|
|
43
|
+
|
|
44
|
+
# ----------------------------------------------------------
|
|
45
|
+
|
|
41
46
|
SERVER_VERBOSITY = os.getenv('SERVER_VERBOSITY', 'info') or 'info'
|
|
42
47
|
|
|
43
48
|
SHELL_COMMAND = os.getenv('SHELL_COMMAND', None)
|
|
@@ -47,5 +52,32 @@ USE_UNIQUE_TERMINAL = os.getenv('USE_UNIQUE_TERMINAL', None)
|
|
|
47
52
|
SENTRY_DSN = os.getenv('SENTRY_DSN', None)
|
|
48
53
|
SENTRY_TRACES_SAMPLE_RATE = os.getenv('SENTRY_TRACES_SAMPLE_RATE', 1.0)
|
|
49
54
|
|
|
55
|
+
# New relic enable environment variable
|
|
56
|
+
ENABLE_NEW_RELIC = os.getenv('ENABLE_NEW_RELIC', False)
|
|
57
|
+
NEW_RELIC_CONFIG_PATH = os.getenv('NEW_RELIC_CONFIG_PATH', '')
|
|
58
|
+
|
|
50
59
|
DEFAULT_LOCALHOST_URL = 'http://localhost:6789'
|
|
51
60
|
MAGE_PUBLIC_HOST = os.getenv('MAGE_PUBLIC_HOST') or DEFAULT_LOCALHOST_URL
|
|
61
|
+
|
|
62
|
+
# List of environment variables used to configure Mage. The value of these settings
|
|
63
|
+
# will be copied between workspaces.
|
|
64
|
+
MAGE_SETTINGS_ENVIRONMENT_VARIABLES = [
|
|
65
|
+
'DISABLE_NOTEBOOK_EDIT_ACCESS',
|
|
66
|
+
'REQUIRE_USER_AUTHENTICATION',
|
|
67
|
+
'AUTHENTICATION_MODE',
|
|
68
|
+
'LDAP_SERVER',
|
|
69
|
+
'LDAP_BIND_DN',
|
|
70
|
+
'LDAP_BIND_PASSWORD',
|
|
71
|
+
'LDAP_BASE_DN',
|
|
72
|
+
'LDAP_AUTHENTICATION_FILTER',
|
|
73
|
+
'LDAP_AUTHORIZATION_FILTER',
|
|
74
|
+
'LDAP_ADMIN_USERNAME',
|
|
75
|
+
'LDAP_DEFAULT_ACCESS',
|
|
76
|
+
'SERVER_VERBOSITY',
|
|
77
|
+
'SHELL_COMMAND',
|
|
78
|
+
'USE_UNIQUE_TERMINAL',
|
|
79
|
+
'SENTRY_DSN',
|
|
80
|
+
'SENTRY_TRACES_SAMPLE_RATE',
|
|
81
|
+
'MAGE_PUBLIC_HOST',
|
|
82
|
+
'ACTIVE_DIRECTORY_DIRECTORY_ID',
|
|
83
|
+
]
|
mage_ai/shared/hash.py
CHANGED
mage_ai/tests/api/test_utils.py
CHANGED
|
@@ -39,6 +39,29 @@ class UtilsTest(DBTestCase):
|
|
|
39
39
|
},
|
|
40
40
|
)
|
|
41
41
|
|
|
42
|
+
def test_get_user_access_for_user_with_no_permissions(self):
|
|
43
|
+
password_salt = generate_salt()
|
|
44
|
+
user = User.create(
|
|
45
|
+
email='no_access@admin.com',
|
|
46
|
+
password_hash=create_bcrypt_hash('admin', password_salt),
|
|
47
|
+
password_salt=password_salt,
|
|
48
|
+
username='no_access',
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
access = user.get_access(None)
|
|
52
|
+
self.assertEqual(0, access)
|
|
53
|
+
|
|
54
|
+
access = user.get_access(Permission.Entity.ANY)
|
|
55
|
+
self.assertEqual(0, access)
|
|
56
|
+
|
|
57
|
+
access = user.get_access(Permission.Entity.GLOBAL, None)
|
|
58
|
+
self.assertEqual(0, access)
|
|
59
|
+
|
|
60
|
+
access = user.get_access(Permission.Entity.PIPELINE, 'test')
|
|
61
|
+
self.assertEqual(0, access)
|
|
62
|
+
|
|
63
|
+
self.assertFalse(is_owner(user))
|
|
64
|
+
|
|
42
65
|
def test_get_user_access_for_global_owner(self):
|
|
43
66
|
password_salt = generate_salt()
|
|
44
67
|
user = User.create(
|
|
@@ -48,7 +71,11 @@ class UtilsTest(DBTestCase):
|
|
|
48
71
|
roles_new=[Role.query.filter(Role.name == 'Owner').first()],
|
|
49
72
|
username='admin',
|
|
50
73
|
)
|
|
74
|
+
|
|
51
75
|
access = user.get_access(None)
|
|
76
|
+
self.assertEqual(0, access)
|
|
77
|
+
|
|
78
|
+
access = user.get_access(Permission.Entity.ANY)
|
|
52
79
|
self.assertEqual(1, access)
|
|
53
80
|
|
|
54
81
|
access = user.get_access(Permission.Entity.GLOBAL, None)
|
|
@@ -77,7 +104,7 @@ class UtilsTest(DBTestCase):
|
|
|
77
104
|
)],
|
|
78
105
|
username='editor',
|
|
79
106
|
)
|
|
80
|
-
access = user.get_access(
|
|
107
|
+
access = user.get_access(Permission.Entity.ANY)
|
|
81
108
|
self.assertEqual(4, access)
|
|
82
109
|
|
|
83
110
|
access = user.get_access(Permission.Entity.GLOBAL, None)
|
|
@@ -124,7 +151,7 @@ class UtilsTest(DBTestCase):
|
|
|
124
151
|
)],
|
|
125
152
|
username='editor2',
|
|
126
153
|
)
|
|
127
|
-
access = user.get_access(
|
|
154
|
+
access = user.get_access(Permission.Entity.ANY)
|
|
128
155
|
self.assertEqual(12, access)
|
|
129
156
|
|
|
130
157
|
access = user.get_access(Permission.Entity.GLOBAL, None)
|
|
@@ -36,6 +36,7 @@ class PipelineTest(DBTestCase):
|
|
|
36
36
|
executor_count=1,
|
|
37
37
|
executor_type=None,
|
|
38
38
|
name='test pipeline 2',
|
|
39
|
+
notification_config=dict(),
|
|
39
40
|
uuid='test_pipeline_2',
|
|
40
41
|
spark_config=dict(),
|
|
41
42
|
type='python',
|
|
@@ -173,6 +174,7 @@ class PipelineTest(DBTestCase):
|
|
|
173
174
|
executor_count=1,
|
|
174
175
|
executor_type=None,
|
|
175
176
|
name='test pipeline 3',
|
|
177
|
+
notification_config=dict(),
|
|
176
178
|
uuid='test_pipeline_3',
|
|
177
179
|
spark_config=dict(),
|
|
178
180
|
type='python',
|
|
@@ -253,6 +255,7 @@ class PipelineTest(DBTestCase):
|
|
|
253
255
|
executor_count=1,
|
|
254
256
|
executor_type=None,
|
|
255
257
|
name='test pipeline 4',
|
|
258
|
+
notification_config=dict(),
|
|
256
259
|
uuid='test_pipeline_4',
|
|
257
260
|
spark_config=dict(),
|
|
258
261
|
type='python',
|
|
@@ -355,6 +358,7 @@ class PipelineTest(DBTestCase):
|
|
|
355
358
|
executor_count=1,
|
|
356
359
|
executor_type=None,
|
|
357
360
|
name='test pipeline 5',
|
|
361
|
+
notification_config=dict(),
|
|
358
362
|
uuid='test_pipeline_5',
|
|
359
363
|
spark_config=dict(),
|
|
360
364
|
type='python',
|
|
@@ -586,6 +590,7 @@ class PipelineTest(DBTestCase):
|
|
|
586
590
|
"executor_type": None,
|
|
587
591
|
"extensions": {},
|
|
588
592
|
"name": "test_pipeline_9",
|
|
593
|
+
"notification_config": {},
|
|
589
594
|
"spark_config": {},
|
|
590
595
|
"type": "integration",
|
|
591
596
|
"updated_at": None,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mage-ai
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.99
|
|
4
4
|
Summary: Mage is a tool for building and deploying data pipelines.
|
|
5
5
|
Home-page: https://github.com/mage-ai/mage-ai
|
|
6
6
|
Author: Mage
|
|
@@ -14,6 +14,7 @@ License-File: LICENSE
|
|
|
14
14
|
Requires-Dist: Faker (==4.14.0)
|
|
15
15
|
Requires-Dist: GitPython (==3.1.31)
|
|
16
16
|
Requires-Dist: Jinja2 (==3.1.2)
|
|
17
|
+
Requires-Dist: PyGithub (==1.59.0)
|
|
17
18
|
Requires-Dist: PyJWT (==2.6.0)
|
|
18
19
|
Requires-Dist: aiofiles (==22.1.0)
|
|
19
20
|
Requires-Dist: alembic (>=1.7.5)
|
|
@@ -34,6 +35,7 @@ Requires-Dist: jupyter-server-proxy (==3.2.1)
|
|
|
34
35
|
Requires-Dist: jupyter-server (==1.23.5)
|
|
35
36
|
Requires-Dist: jupyter-client (==7.3.4)
|
|
36
37
|
Requires-Dist: ldap3 (==2.9.1)
|
|
38
|
+
Requires-Dist: newrelic (==8.8.0)
|
|
37
39
|
Requires-Dist: numpy (>=1.21.0)
|
|
38
40
|
Requires-Dist: pandas (>=1.3.0)
|
|
39
41
|
Requires-Dist: polars
|
|
@@ -54,11 +56,12 @@ Requires-Dist: tornado (==6.1)
|
|
|
54
56
|
Requires-Dist: typer[all] (==0.7.0)
|
|
55
57
|
Requires-Dist: typing-extensions (==4.5.0)
|
|
56
58
|
Provides-Extra: all
|
|
59
|
+
Requires-Dist: PyGithub (==1.59.0) ; extra == 'all'
|
|
57
60
|
Requires-Dist: aws-secretsmanager-caching (==1.1.1.5) ; extra == 'all'
|
|
58
61
|
Requires-Dist: azure-eventhub (==5.11.2) ; extra == 'all'
|
|
59
62
|
Requires-Dist: azure-identity (==1.11.0) ; extra == 'all'
|
|
60
|
-
Requires-Dist: azure-keyvault-secrets (==4.6.0) ; extra == 'all'
|
|
61
63
|
Requires-Dist: azure-keyvault-certificates (==4.6.0) ; extra == 'all'
|
|
64
|
+
Requires-Dist: azure-keyvault-secrets (==4.6.0) ; extra == 'all'
|
|
62
65
|
Requires-Dist: azure-storage-blob (==12.14.1) ; extra == 'all'
|
|
63
66
|
Requires-Dist: boto3 (==1.26.60) ; extra == 'all'
|
|
64
67
|
Requires-Dist: botocore (==1.29.60) ; extra == 'all'
|
|
@@ -73,6 +76,7 @@ Requires-Dist: dbt-snowflake (==1.4.0) ; extra == 'all'
|
|
|
73
76
|
Requires-Dist: dbt-spark (==1.4.0) ; extra == 'all'
|
|
74
77
|
Requires-Dist: dbt-sqlserver (==1.3.1) ; extra == 'all'
|
|
75
78
|
Requires-Dist: dbt-trino (==1.4.0) ; extra == 'all'
|
|
79
|
+
Requires-Dist: dbt-clickhouse (==1.4.0) ; extra == 'all'
|
|
76
80
|
Requires-Dist: google-api-core (==2.11.0) ; extra == 'all'
|
|
77
81
|
Requires-Dist: google-api-python-client (==2.70.0) ; extra == 'all'
|
|
78
82
|
Requires-Dist: google-cloud-bigquery (~=3.0) ; extra == 'all'
|
|
@@ -86,8 +90,8 @@ Requires-Dist: kubernetes (==25.3.0) ; extra == 'all'
|
|
|
86
90
|
Requires-Dist: ldap3 (==2.9.1) ; extra == 'all'
|
|
87
91
|
Requires-Dist: opensearch-py (==2.0.0) ; extra == 'all'
|
|
88
92
|
Requires-Dist: pika (==1.3.1) ; extra == 'all'
|
|
89
|
-
Requires-Dist: psycopg2 (==2.9.3) ; extra == 'all'
|
|
90
93
|
Requires-Dist: psycopg2-binary (==2.9.3) ; extra == 'all'
|
|
94
|
+
Requires-Dist: psycopg2 (==2.9.3) ; extra == 'all'
|
|
91
95
|
Requires-Dist: pydruid (==0.6.5) ; extra == 'all'
|
|
92
96
|
Requires-Dist: pymongo (==4.3.3) ; extra == 'all'
|
|
93
97
|
Requires-Dist: pyodbc (==4.0.35) ; extra == 'all'
|
|
@@ -115,6 +119,7 @@ Requires-Dist: dbt-snowflake (==1.4.0) ; extra == 'dbt'
|
|
|
115
119
|
Requires-Dist: dbt-spark (==1.4.0) ; extra == 'dbt'
|
|
116
120
|
Requires-Dist: dbt-sqlserver (==1.3.1) ; extra == 'dbt'
|
|
117
121
|
Requires-Dist: dbt-trino (==1.4.0) ; extra == 'dbt'
|
|
122
|
+
Requires-Dist: dbt-clickhouse (==1.4.0) ; extra == 'dbt'
|
|
118
123
|
Provides-Extra: google-cloud-storage
|
|
119
124
|
Requires-Dist: google-cloud-storage (==2.5.0) ; extra == 'google-cloud-storage'
|
|
120
125
|
Provides-Extra: hdf5
|