genesis-flow 1.0.3__py3-none-any.whl → 1.0.5__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.
- {genesis_flow-1.0.3.dist-info → genesis_flow-1.0.5.dist-info}/METADATA +1 -1
- {genesis_flow-1.0.3.dist-info → genesis_flow-1.0.5.dist-info}/RECORD +10 -10
- mlflow/azure/config.py +13 -7
- mlflow/azure/connection_factory.py +15 -2
- mlflow/azure/stores.py +23 -16
- mlflow/tracking/_tracking_service/utils.py +17 -5
- {genesis_flow-1.0.3.dist-info → genesis_flow-1.0.5.dist-info}/WHEEL +0 -0
- {genesis_flow-1.0.3.dist-info → genesis_flow-1.0.5.dist-info}/entry_points.txt +0 -0
- {genesis_flow-1.0.3.dist-info → genesis_flow-1.0.5.dist-info}/licenses/LICENSE.txt +0 -0
- {genesis_flow-1.0.3.dist-info → genesis_flow-1.0.5.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: genesis-flow
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.5
|
4
4
|
Summary: Genesis-Flow: MLflow v3.1.4 compatible fork for Genesis platform
|
5
5
|
Maintainer-email: Databricks <mlflow-oss-maintainers@googlegroups.com>
|
6
6
|
License: Copyright 2018 Databricks, Inc. All rights reserved.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
genesis_flow-1.0.
|
1
|
+
genesis_flow-1.0.5.dist-info/licenses/LICENSE.txt,sha256=Y5U1Xebzka__NZlqMPtBsYm0mRpMtUmTrONatpoL-ig,11382
|
2
2
|
mlflow/__init__.py,sha256=-_r__N5Afed81pLVtr2wKbHQIA0aj9u9n_7kWGxLWi4,11194
|
3
3
|
mlflow/__main__.py,sha256=_PcdoxKehR_a2MI6GqBfzYzRCXZhVyDCSdbxDWVlWd4,39
|
4
4
|
mlflow/cli.py,sha256=f1ObrWZ03HgRiRoVEE1Gffe-dGcSY7CxJyEFgb5VUMM,26137
|
@@ -23,10 +23,10 @@ mlflow/autogen/chat.py,sha256=UwuhppwnlSs4fuv5D2uaugrl5lPpyvTkaHzWMnqR5E0,4497
|
|
23
23
|
mlflow/azure/__init__.py,sha256=3B0PXyQj_3CAhvvMU-siUSDr9Qpf5q6s2PMIlyAwzVQ,737
|
24
24
|
mlflow/azure/auth_handler.py,sha256=oIlzPdhuZcyg-sKowGLpinP0KJOFfsKrUnEKe0Mj5j8,9171
|
25
25
|
mlflow/azure/client.py,sha256=dUaMFj04OLrlyvYSRTHXF4CaLHCGUdSzhjM5u8ucv8g,11509
|
26
|
-
mlflow/azure/config.py,sha256=
|
27
|
-
mlflow/azure/connection_factory.py,sha256=
|
26
|
+
mlflow/azure/config.py,sha256=0DwiEYN3TefmdaGO9KogNNflX_-0wOeHwKt2hMxKEdU,4491
|
27
|
+
mlflow/azure/connection_factory.py,sha256=1hcwPmc5xpP_MS1t3CIlzYfJ_mzEn2GBxnz5TJ1sHOY,12391
|
28
28
|
mlflow/azure/exceptions.py,sha256=3jQo_kimK4g94LmSCtzfRQqEOl6bDBtwAQ6utXbgw8k,494
|
29
|
-
mlflow/azure/stores.py,sha256=
|
29
|
+
mlflow/azure/stores.py,sha256=MnZaPU2eOAerzGfcwSoyuMCkd9ad1cOmsb6fclgxF4Q,12890
|
30
30
|
mlflow/azure/utils.py,sha256=uU4OWU9ffz3KhLf0IgGqabZTTiAskLrNGVH5bIcwKUU,5563
|
31
31
|
mlflow/bedrock/__init__.py,sha256=LNOczTpqmgbdek-anWMNisPGDcnn-VbWQm5VVxQ7FdA,1846
|
32
32
|
mlflow/bedrock/_autolog.py,sha256=7c2mj9pK1aj-IKCySl74g6gGxze2Bldo8bHSIZAQj5M,7800
|
@@ -527,7 +527,7 @@ mlflow/tracking/_model_registry/utils.py,sha256=0oyWU_iKleLVeEaWLb-glhkJlArKX0U3
|
|
527
527
|
mlflow/tracking/_tracking_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
528
528
|
mlflow/tracking/_tracking_service/client.py,sha256=wkFfP8r8vDA0YPGdE8q8DHn0LY-BeeWgxqWBnAqi_ug,36067
|
529
529
|
mlflow/tracking/_tracking_service/registry.py,sha256=o_mi4_MN8Cp3WSnqVThZwABAsJJVBneZmxyqqQEQAeI,2419
|
530
|
-
mlflow/tracking/_tracking_service/utils.py,sha256=
|
530
|
+
mlflow/tracking/_tracking_service/utils.py,sha256=yHUYcsPoVz2tz0OYeFJ2aKaGw66PTnLh48Yz4voXF0o,10256
|
531
531
|
mlflow/tracking/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
532
532
|
mlflow/tracking/context/abstract_context.py,sha256=OrlpO7gd_y2UP4pEpvwMKtfHI8XjtmPxO_2SujthUnI,1060
|
533
533
|
mlflow/tracking/context/databricks_cluster_context.py,sha256=EORKG7JPBCnFv2Dupqd7FYgsTtwh4ZHB05T9W704IFI,520
|
@@ -641,8 +641,8 @@ mlflow/utils/autologging_utils/metrics_queue.py,sha256=bwpMX7Go6xFxrpYROi6rDBdVt
|
|
641
641
|
mlflow/utils/autologging_utils/safety.py,sha256=IwbTbusyE87Hc4qkhhvMikoaZqX9kpr972FWS2B8goc,51465
|
642
642
|
mlflow/utils/autologging_utils/versioning.py,sha256=2hSN4KXFWEJCcopDdLG6BiPeqSoqjETeNMuUBsCCwlI,3762
|
643
643
|
mlflow/utils/import_hooks/__init__.py,sha256=werje98Woelkbwrhtlb8wmRdt3RtiL--LqGru7Xh3YU,13589
|
644
|
-
genesis_flow-1.0.
|
645
|
-
genesis_flow-1.0.
|
646
|
-
genesis_flow-1.0.
|
647
|
-
genesis_flow-1.0.
|
648
|
-
genesis_flow-1.0.
|
644
|
+
genesis_flow-1.0.5.dist-info/METADATA,sha256=c2PrO48hnz6iVieC5srClmgBx4MN_61P3W_NvJvFsQE,33401
|
645
|
+
genesis_flow-1.0.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
646
|
+
genesis_flow-1.0.5.dist-info/entry_points.txt,sha256=fwlE6mYWea9uCNIsmXdT5qMIOZ8rYbTvO6XcZR8fBbE,495
|
647
|
+
genesis_flow-1.0.5.dist-info/top_level.txt,sha256=wm8UqYyUHI21EvrTDHb3eYICy0dOVDLBhAL-jp5zbuI,7
|
648
|
+
genesis_flow-1.0.5.dist-info/RECORD,,
|
mlflow/azure/config.py
CHANGED
@@ -84,13 +84,19 @@ class AzureAuthConfig:
|
|
84
84
|
or os.getenv("MLFLOW_AZURE_DEBUG", "false").lower() == "true"
|
85
85
|
)
|
86
86
|
|
87
|
-
#
|
88
|
-
#
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
87
|
+
# IMPORTANT: Do not automatically enable Managed Identity based on other env vars
|
88
|
+
# The auth_enabled flag should be the single source of truth
|
89
|
+
# This prevents unintended authentication attempts when Helm hasn't enabled it
|
90
|
+
|
91
|
+
# Log configuration decision for debugging
|
92
|
+
import logging
|
93
|
+
logger = logging.getLogger(__name__)
|
94
|
+
logger.debug(
|
95
|
+
"AzureAuthConfig initialized: auth_enabled=%s, auth_method=%s, source=%s",
|
96
|
+
self.auth_enabled,
|
97
|
+
self.auth_method.value,
|
98
|
+
"explicit" if auth_enabled is not None else "env_var"
|
99
|
+
)
|
94
100
|
|
95
101
|
# Validate configuration
|
96
102
|
self._validate()
|
@@ -33,9 +33,10 @@ class ConnectionFactory:
|
|
33
33
|
)
|
34
34
|
|
35
35
|
logger.info(
|
36
|
-
"Initialized connection factory: azure_auth_enabled=%s, auth_method=%s",
|
36
|
+
"Initialized connection factory: azure_auth_enabled=%s, auth_method=%s, auth_flag=%s",
|
37
37
|
self.config.should_use_azure_auth,
|
38
38
|
self.config.auth_method.value if self.config.should_use_azure_auth else "sql_auth",
|
39
|
+
self.config.auth_enabled,
|
39
40
|
)
|
40
41
|
|
41
42
|
def create_engine(
|
@@ -56,11 +57,23 @@ class ConnectionFactory:
|
|
56
57
|
ConnectionError: If connection configuration fails
|
57
58
|
ConfigurationError: If the URI is invalid
|
58
59
|
"""
|
60
|
+
# Check if auth_method is in URI
|
61
|
+
has_auth_method_param = "auth_method=" in database_uri
|
62
|
+
|
59
63
|
logger.info(
|
60
|
-
"Creating database engine: connection_info=%s, azure_auth=%s",
|
64
|
+
"Creating database engine: connection_info=%s, azure_auth=%s, has_auth_param=%s, auth_enabled_env=%s",
|
61
65
|
sanitize_connection_string_for_logging(database_uri),
|
62
66
|
self.config.should_use_azure_auth,
|
67
|
+
has_auth_method_param,
|
68
|
+
self.config.auth_enabled,
|
63
69
|
)
|
70
|
+
|
71
|
+
# Warn if there's a mismatch between URI parameter and configuration
|
72
|
+
if has_auth_method_param and not self.config.should_use_azure_auth:
|
73
|
+
logger.warning(
|
74
|
+
"Database URI contains auth_method parameter but Azure authentication is not enabled. "
|
75
|
+
"The auth_method parameter will be ignored. Enable Azure authentication in Helm values to use Managed Identity."
|
76
|
+
)
|
64
77
|
|
65
78
|
try:
|
66
79
|
# Parse and validate the URI
|
mlflow/azure/stores.py
CHANGED
@@ -8,7 +8,7 @@ from typing import Optional, Any, Dict
|
|
8
8
|
|
9
9
|
from sqlalchemy import Engine
|
10
10
|
|
11
|
-
from mlflow.azure.config import AzureAuthConfig
|
11
|
+
from mlflow.azure.config import AzureAuthConfig, AuthMethod
|
12
12
|
from mlflow.azure.connection_factory import ConnectionFactory
|
13
13
|
from mlflow.azure.exceptions import ConnectionError, ConfigurationError
|
14
14
|
|
@@ -162,25 +162,32 @@ def create_store(store_uri: str, artifact_uri: Optional[str] = None):
|
|
162
162
|
# Check if Azure authentication should be used
|
163
163
|
config = AzureAuthConfig()
|
164
164
|
|
165
|
-
#
|
166
|
-
|
165
|
+
# IMPORTANT: Do NOT auto-detect Azure PostgreSQL based on hostname
|
166
|
+
# Only use Azure auth if explicitly enabled through configuration
|
167
|
+
# The MLFLOW_AZURE_AUTH_ENABLED flag should be the single source of truth
|
168
|
+
|
169
|
+
# Check if URI explicitly requests Azure auth (via scheme or parameter)
|
170
|
+
explicit_azure_request = (
|
167
171
|
store_uri.startswith("azure-postgres://") or
|
168
|
-
".postgres.database.azure.com" in store_uri or
|
169
172
|
"auth_method=managed_identity" in store_uri
|
170
173
|
)
|
171
174
|
|
172
|
-
#
|
173
|
-
if
|
174
|
-
#
|
175
|
-
|
176
|
-
config.auth_enabled
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
175
|
+
# If auth is not enabled via config and not explicitly requested in URI, skip Azure auth
|
176
|
+
if not config.auth_enabled and not explicit_azure_request:
|
177
|
+
# Log for debugging
|
178
|
+
logger.debug(
|
179
|
+
"Azure auth not enabled: config.auth_enabled=%s, explicit_request=%s",
|
180
|
+
config.auth_enabled,
|
181
|
+
explicit_azure_request
|
182
|
+
)
|
183
|
+
return None
|
184
|
+
|
185
|
+
# If we reach here, Azure auth is either enabled or explicitly requested
|
186
|
+
# Make sure config reflects this
|
187
|
+
if explicit_azure_request and not config.auth_enabled:
|
188
|
+
config.auth_enabled = True
|
189
|
+
if not config.auth_method or config.auth_method == AuthMethod.SQL_AUTH:
|
190
|
+
config.auth_method = AuthMethod.MANAGED_IDENTITY
|
184
191
|
|
185
192
|
if config.should_use_azure_auth:
|
186
193
|
logger.info("Creating Azure-enabled tracking store via plugin: auth_method=%s", config.auth_method.value)
|
@@ -138,15 +138,27 @@ def _get_file_store(store_uri, **_):
|
|
138
138
|
def _get_sqlalchemy_store(store_uri, artifact_uri):
|
139
139
|
from mlflow.store.tracking.sqlalchemy_store import SqlAlchemyStore
|
140
140
|
|
141
|
-
# Check if
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
141
|
+
# Check if Azure authentication is explicitly enabled
|
142
|
+
azure_auth_enabled = os.getenv("MLFLOW_AZURE_AUTH_ENABLED", "false").lower() == "true"
|
143
|
+
|
144
|
+
# Only use Managed Identity if explicitly enabled through configuration
|
145
|
+
# This prevents automatic authentication attempts based on URI parameters alone
|
146
|
+
if store_uri.startswith("postgresql://") and azure_auth_enabled:
|
147
|
+
_logger.info(
|
148
|
+
"Azure authentication is enabled for PostgreSQL. Using Managed Identity store."
|
149
|
+
)
|
146
150
|
from mlflow.store.tracking.postgres_managed_identity import get_postgres_store_with_managed_identity
|
147
151
|
if artifact_uri is None:
|
148
152
|
artifact_uri = DEFAULT_LOCAL_FILE_AND_ARTIFACT_PATH
|
149
153
|
return get_postgres_store_with_managed_identity(store_uri, artifact_uri)
|
154
|
+
|
155
|
+
# Log if auth_method is in URI but Azure auth is not enabled
|
156
|
+
if store_uri.startswith("postgresql://") and "auth_method=managed_identity" in store_uri:
|
157
|
+
if not azure_auth_enabled:
|
158
|
+
_logger.warning(
|
159
|
+
"URI contains 'auth_method=managed_identity' but MLFLOW_AZURE_AUTH_ENABLED is not 'true'. "
|
160
|
+
"Using standard SQL authentication. To use Managed Identity, enable it in your Helm configuration."
|
161
|
+
)
|
150
162
|
|
151
163
|
if artifact_uri is None:
|
152
164
|
artifact_uri = DEFAULT_LOCAL_FILE_AND_ARTIFACT_PATH
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|