zenml-nightly 0.73.0.dev20250124__py3-none-any.whl → 0.73.0.dev20250125__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.
- zenml/VERSION +1 -1
- zenml/analytics/context.py +2 -6
- zenml/cli/annotator.py +1 -1
- zenml/cli/login.py +15 -6
- zenml/cli/service_connectors.py +5 -5
- zenml/cli/stack.py +2 -2
- zenml/cli/utils.py +2 -54
- zenml/config/pipeline_configurations.py +3 -2
- zenml/config/schedule.py +0 -24
- zenml/event_hub/base_event_hub.py +3 -4
- zenml/integrations/airflow/orchestrators/airflow_orchestrator.py +3 -4
- zenml/integrations/aws/orchestrators/sagemaker_orchestrator.py +11 -9
- zenml/integrations/aws/service_connectors/aws_service_connector.py +8 -13
- zenml/integrations/azure/service_connectors/azure_service_connector.py +4 -10
- zenml/integrations/gcp/service_connectors/gcp_service_connector.py +3 -3
- zenml/integrations/kubernetes/orchestrators/kube_utils.py +3 -3
- zenml/integrations/kubernetes/service_connectors/kubernetes_service_connector.py +6 -2
- zenml/integrations/whylogs/data_validators/whylogs_data_validator.py +2 -3
- zenml/logging/step_logging.py +7 -7
- zenml/login/credentials.py +6 -5
- zenml/login/credentials_store.py +4 -3
- zenml/models/v2/core/api_key.py +5 -2
- zenml/models/v2/core/schedule.py +3 -2
- zenml/orchestrators/publish_utils.py +4 -4
- zenml/orchestrators/step_launcher.py +3 -3
- zenml/orchestrators/step_run_utils.py +2 -2
- zenml/pipelines/run_utils.py +2 -2
- zenml/service_connectors/service_connector.py +7 -4
- zenml/stack/stack.py +5 -4
- zenml/stack_deployments/stack_deployment.py +2 -3
- zenml/utils/string_utils.py +2 -2
- zenml/utils/time_utils.py +138 -0
- zenml/zen_server/auth.py +8 -9
- zenml/zen_server/cloud_utils.py +4 -6
- zenml/zen_server/routers/devices_endpoints.py +2 -4
- zenml/zen_server/zen_server_api.py +9 -8
- zenml/zen_stores/migrations/versions/25155145c545_separate_actions_and_triggers.py +3 -2
- zenml/zen_stores/migrations/versions/3dcc5d20e82f_add_last_user_activity.py +3 -3
- zenml/zen_stores/migrations/versions/46506f72f0ed_add_server_settings.py +3 -2
- zenml/zen_stores/migrations/versions/5994f9ad0489_introduce_role_permissions.py +10 -7
- zenml/zen_stores/migrations/versions/7500f434b71c_remove_shared_columns.py +3 -2
- zenml/zen_stores/migrations/versions/a91762e6be36_artifact_version_table.py +5 -3
- zenml/zen_stores/schemas/action_schemas.py +2 -2
- zenml/zen_stores/schemas/api_key_schemas.py +5 -4
- zenml/zen_stores/schemas/artifact_schemas.py +3 -3
- zenml/zen_stores/schemas/base_schemas.py +5 -7
- zenml/zen_stores/schemas/code_repository_schemas.py +2 -2
- zenml/zen_stores/schemas/component_schemas.py +2 -2
- zenml/zen_stores/schemas/device_schemas.py +5 -4
- zenml/zen_stores/schemas/event_source_schemas.py +2 -2
- zenml/zen_stores/schemas/flavor_schemas.py +2 -2
- zenml/zen_stores/schemas/model_schemas.py +3 -3
- zenml/zen_stores/schemas/pipeline_run_schemas.py +4 -3
- zenml/zen_stores/schemas/pipeline_schemas.py +2 -2
- zenml/zen_stores/schemas/run_template_schemas.py +2 -2
- zenml/zen_stores/schemas/schedule_schema.py +3 -2
- zenml/zen_stores/schemas/secret_schemas.py +2 -2
- zenml/zen_stores/schemas/server_settings_schemas.py +6 -9
- zenml/zen_stores/schemas/service_connector_schemas.py +3 -2
- zenml/zen_stores/schemas/service_schemas.py +2 -2
- zenml/zen_stores/schemas/stack_schemas.py +2 -2
- zenml/zen_stores/schemas/step_run_schemas.py +3 -2
- zenml/zen_stores/schemas/tag_schemas.py +2 -2
- zenml/zen_stores/schemas/trigger_schemas.py +2 -2
- zenml/zen_stores/schemas/user_schemas.py +3 -3
- zenml/zen_stores/schemas/workspace_schemas.py +2 -2
- zenml/zen_stores/sql_zen_store.py +6 -14
- {zenml_nightly-0.73.0.dev20250124.dist-info → zenml_nightly-0.73.0.dev20250125.dist-info}/METADATA +1 -1
- {zenml_nightly-0.73.0.dev20250124.dist-info → zenml_nightly-0.73.0.dev20250125.dist-info}/RECORD +72 -71
- {zenml_nightly-0.73.0.dev20250124.dist-info → zenml_nightly-0.73.0.dev20250125.dist-info}/LICENSE +0 -0
- {zenml_nightly-0.73.0.dev20250124.dist-info → zenml_nightly-0.73.0.dev20250125.dist-info}/WHEEL +0 -0
- {zenml_nightly-0.73.0.dev20250124.dist-info → zenml_nightly-0.73.0.dev20250125.dist-info}/entry_points.txt +0 -0
@@ -15,7 +15,6 @@
|
|
15
15
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
|
-
from datetime import datetime, timezone
|
19
18
|
from typing import Any, Dict, Optional, cast
|
20
19
|
from uuid import UUID
|
21
20
|
|
@@ -35,6 +34,7 @@ from zenml.models import (
|
|
35
34
|
SecretResponseMetadata,
|
36
35
|
SecretUpdate,
|
37
36
|
)
|
37
|
+
from zenml.utils.time_utils import utc_now
|
38
38
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
39
39
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
40
40
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -209,7 +209,7 @@ class SecretSchema(NamedSchema, table=True):
|
|
209
209
|
else:
|
210
210
|
setattr(self, field, value)
|
211
211
|
|
212
|
-
self.updated =
|
212
|
+
self.updated = utc_now()
|
213
213
|
return self
|
214
214
|
|
215
215
|
def to_model(
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"""SQLModel implementation for the server settings table."""
|
15
15
|
|
16
16
|
import json
|
17
|
-
from datetime import datetime
|
17
|
+
from datetime import datetime
|
18
18
|
from typing import Any, Optional, Set
|
19
19
|
from uuid import UUID
|
20
20
|
|
@@ -27,6 +27,7 @@ from zenml.models import (
|
|
27
27
|
ServerSettingsResponseResources,
|
28
28
|
ServerSettingsUpdate,
|
29
29
|
)
|
30
|
+
from zenml.utils.time_utils import utc_now
|
30
31
|
|
31
32
|
|
32
33
|
class ServerSettingsSchema(SQLModel, table=True):
|
@@ -42,12 +43,8 @@ class ServerSettingsSchema(SQLModel, table=True):
|
|
42
43
|
display_announcements: Optional[bool] = Field(nullable=True)
|
43
44
|
display_updates: Optional[bool] = Field(nullable=True)
|
44
45
|
onboarding_state: Optional[str] = Field(nullable=True)
|
45
|
-
last_user_activity: datetime = Field(
|
46
|
-
|
47
|
-
)
|
48
|
-
updated: datetime = Field(
|
49
|
-
default_factory=lambda: datetime.now(timezone.utc)
|
50
|
-
)
|
46
|
+
last_user_activity: datetime = Field(default_factory=utc_now)
|
47
|
+
updated: datetime = Field(default_factory=utc_now)
|
51
48
|
|
52
49
|
def update(
|
53
50
|
self, settings_update: ServerSettingsUpdate
|
@@ -67,7 +64,7 @@ class ServerSettingsSchema(SQLModel, table=True):
|
|
67
64
|
if hasattr(self, field):
|
68
65
|
setattr(self, field, value)
|
69
66
|
|
70
|
-
self.updated =
|
67
|
+
self.updated = utc_now()
|
71
68
|
|
72
69
|
return self
|
73
70
|
|
@@ -87,7 +84,7 @@ class ServerSettingsSchema(SQLModel, table=True):
|
|
87
84
|
)
|
88
85
|
new_state = old_state.union(completed_steps)
|
89
86
|
self.onboarding_state = json.dumps(list(new_state))
|
90
|
-
self.updated =
|
87
|
+
self.updated = utc_now()
|
91
88
|
|
92
89
|
return self
|
93
90
|
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
|
-
from datetime import datetime
|
18
|
+
from datetime import datetime
|
19
19
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, cast
|
20
20
|
from uuid import UUID
|
21
21
|
|
@@ -29,6 +29,7 @@ from zenml.models import (
|
|
29
29
|
ServiceConnectorResponseMetadata,
|
30
30
|
ServiceConnectorUpdate,
|
31
31
|
)
|
32
|
+
from zenml.utils.time_utils import utc_now
|
32
33
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
33
34
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
34
35
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -227,7 +228,7 @@ class ServiceConnectorSchema(NamedSchema, table=True):
|
|
227
228
|
else:
|
228
229
|
setattr(self, field, value)
|
229
230
|
self.secret_id = secret_id
|
230
|
-
self.updated =
|
231
|
+
self.updated = utc_now()
|
231
232
|
return self
|
232
233
|
|
233
234
|
def to_model(
|
@@ -15,7 +15,6 @@
|
|
15
15
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
|
-
from datetime import datetime, timezone
|
19
18
|
from typing import Any, Optional
|
20
19
|
from uuid import UUID
|
21
20
|
|
@@ -32,6 +31,7 @@ from zenml.models.v2.core.service import (
|
|
32
31
|
ServiceUpdate,
|
33
32
|
)
|
34
33
|
from zenml.utils.dict_utils import dict_to_bytes
|
34
|
+
from zenml.utils.time_utils import utc_now
|
35
35
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
36
36
|
from zenml.zen_stores.schemas.model_schemas import ModelVersionSchema
|
37
37
|
from zenml.zen_stores.schemas.pipeline_run_schemas import PipelineRunSchema
|
@@ -210,7 +210,7 @@ class ServiceSchema(NamedSchema, table=True):
|
|
210
210
|
)
|
211
211
|
else:
|
212
212
|
setattr(self, field, value)
|
213
|
-
self.updated =
|
213
|
+
self.updated = utc_now()
|
214
214
|
return self
|
215
215
|
|
216
216
|
@classmethod
|
@@ -15,7 +15,6 @@
|
|
15
15
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
|
-
from datetime import datetime, timezone
|
19
18
|
from typing import TYPE_CHECKING, Any, List, Optional
|
20
19
|
from uuid import UUID
|
21
20
|
|
@@ -27,6 +26,7 @@ from zenml.models import (
|
|
27
26
|
StackResponseMetadata,
|
28
27
|
StackUpdate,
|
29
28
|
)
|
29
|
+
from zenml.utils.time_utils import utc_now
|
30
30
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
31
31
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
32
32
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -134,7 +134,7 @@ class StackSchema(NamedSchema, table=True):
|
|
134
134
|
else:
|
135
135
|
setattr(self, field, value)
|
136
136
|
|
137
|
-
self.updated =
|
137
|
+
self.updated = utc_now()
|
138
138
|
return self
|
139
139
|
|
140
140
|
def to_model(
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"""SQLModel implementation of step run tables."""
|
15
15
|
|
16
16
|
import json
|
17
|
-
from datetime import datetime
|
17
|
+
from datetime import datetime
|
18
18
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
19
19
|
from uuid import UUID
|
20
20
|
|
@@ -43,6 +43,7 @@ from zenml.models.v2.core.step_run import (
|
|
43
43
|
StepRunInputResponse,
|
44
44
|
StepRunResponseResources,
|
45
45
|
)
|
46
|
+
from zenml.utils.time_utils import utc_now
|
46
47
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
47
48
|
from zenml.zen_stores.schemas.constants import MODEL_VERSION_TABLENAME
|
48
49
|
from zenml.zen_stores.schemas.pipeline_deployment_schemas import (
|
@@ -358,7 +359,7 @@ class StepRunSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
358
359
|
if value and self.model_version_id is None:
|
359
360
|
self.model_version_id = value
|
360
361
|
|
361
|
-
self.updated =
|
362
|
+
self.updated = utc_now()
|
362
363
|
|
363
364
|
return self
|
364
365
|
|
@@ -13,7 +13,6 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQLModel implementation of tag tables."""
|
15
15
|
|
16
|
-
from datetime import datetime, timezone
|
17
16
|
from typing import Any, List
|
18
17
|
from uuid import UUID
|
19
18
|
|
@@ -30,6 +29,7 @@ from zenml.models import (
|
|
30
29
|
TagResponseBody,
|
31
30
|
TagUpdate,
|
32
31
|
)
|
32
|
+
from zenml.utils.time_utils import utc_now
|
33
33
|
from zenml.zen_stores.schemas.base_schemas import BaseSchema, NamedSchema
|
34
34
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
35
35
|
|
@@ -103,7 +103,7 @@ class TagSchema(NamedSchema, table=True):
|
|
103
103
|
else:
|
104
104
|
setattr(self, field, value)
|
105
105
|
|
106
|
-
self.updated =
|
106
|
+
self.updated = utc_now()
|
107
107
|
return self
|
108
108
|
|
109
109
|
|
@@ -15,7 +15,6 @@
|
|
15
15
|
|
16
16
|
import base64
|
17
17
|
import json
|
18
|
-
from datetime import datetime, timezone
|
19
18
|
from typing import Any, List, Optional, cast
|
20
19
|
from uuid import UUID
|
21
20
|
|
@@ -38,6 +37,7 @@ from zenml.models import (
|
|
38
37
|
TriggerUpdate,
|
39
38
|
)
|
40
39
|
from zenml.utils.json_utils import pydantic_encoder
|
40
|
+
from zenml.utils.time_utils import utc_now
|
41
41
|
from zenml.zen_stores.schemas.action_schemas import ActionSchema
|
42
42
|
from zenml.zen_stores.schemas.base_schemas import BaseSchema, NamedSchema
|
43
43
|
from zenml.zen_stores.schemas.event_source_schemas import EventSourceSchema
|
@@ -133,7 +133,7 @@ class TriggerSchema(NamedSchema, table=True):
|
|
133
133
|
else:
|
134
134
|
setattr(self, field, value)
|
135
135
|
|
136
|
-
self.updated =
|
136
|
+
self.updated = utc_now()
|
137
137
|
return self
|
138
138
|
|
139
139
|
@classmethod
|
@@ -14,7 +14,6 @@
|
|
14
14
|
"""SQLModel implementation of user tables."""
|
15
15
|
|
16
16
|
import json
|
17
|
-
from datetime import datetime, timezone
|
18
17
|
from typing import TYPE_CHECKING, Any, List, Optional
|
19
18
|
from uuid import UUID
|
20
19
|
|
@@ -33,6 +32,7 @@ from zenml.models import (
|
|
33
32
|
UserResponseMetadata,
|
34
33
|
UserUpdate,
|
35
34
|
)
|
35
|
+
from zenml.utils.time_utils import utc_now
|
36
36
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
37
37
|
|
38
38
|
if TYPE_CHECKING:
|
@@ -225,7 +225,7 @@ class UserSchema(NamedSchema, table=True):
|
|
225
225
|
else:
|
226
226
|
setattr(self, field, value)
|
227
227
|
|
228
|
-
self.updated =
|
228
|
+
self.updated = utc_now()
|
229
229
|
return self
|
230
230
|
|
231
231
|
def update_service_account(
|
@@ -245,7 +245,7 @@ class UserSchema(NamedSchema, table=True):
|
|
245
245
|
).items():
|
246
246
|
setattr(self, field, value)
|
247
247
|
|
248
|
-
self.updated =
|
248
|
+
self.updated = utc_now()
|
249
249
|
return self
|
250
250
|
|
251
251
|
def to_model(
|
@@ -13,7 +13,6 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQL Model Implementations for Workspaces."""
|
15
15
|
|
16
|
-
from datetime import datetime, timezone
|
17
16
|
from typing import TYPE_CHECKING, Any, List
|
18
17
|
|
19
18
|
from sqlmodel import Relationship
|
@@ -25,6 +24,7 @@ from zenml.models import (
|
|
25
24
|
WorkspaceResponseMetadata,
|
26
25
|
WorkspaceUpdate,
|
27
26
|
)
|
27
|
+
from zenml.utils.time_utils import utc_now
|
28
28
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
29
29
|
|
30
30
|
if TYPE_CHECKING:
|
@@ -168,7 +168,7 @@ class WorkspaceSchema(NamedSchema, table=True):
|
|
168
168
|
).items():
|
169
169
|
setattr(self, field, value)
|
170
170
|
|
171
|
-
self.updated =
|
171
|
+
self.updated = utc_now()
|
172
172
|
return self
|
173
173
|
|
174
174
|
def to_model(
|
@@ -22,7 +22,7 @@ import random
|
|
22
22
|
import re
|
23
23
|
import sys
|
24
24
|
import time
|
25
|
-
from datetime import datetime
|
25
|
+
from datetime import datetime
|
26
26
|
from functools import lru_cache
|
27
27
|
from pathlib import Path
|
28
28
|
from typing import (
|
@@ -309,6 +309,7 @@ from zenml.utils.string_utils import (
|
|
309
309
|
random_str,
|
310
310
|
validate_name,
|
311
311
|
)
|
312
|
+
from zenml.utils.time_utils import utc_now
|
312
313
|
from zenml.zen_stores import template_utils
|
313
314
|
from zenml.zen_stores.base_zen_store import (
|
314
315
|
BaseZenStore,
|
@@ -795,7 +796,7 @@ class SqlZenStoreConfiguration(StoreConfiguration):
|
|
795
796
|
logger.warning(
|
796
797
|
f"Database SSL setting `{key}` is not a file. "
|
797
798
|
)
|
798
|
-
sqlalchemy_ssl_args[key.
|
799
|
+
sqlalchemy_ssl_args[key.removeprefix("ssl_")] = ssl_setting
|
799
800
|
if len(sqlalchemy_ssl_args) > 0:
|
800
801
|
sqlalchemy_ssl_args["check_hostname"] = (
|
801
802
|
self.ssl_verify_server_cert
|
@@ -1743,7 +1744,7 @@ class SqlZenStore(BaseZenStore):
|
|
1743
1744
|
settings = self._get_server_settings(session=session)
|
1744
1745
|
|
1745
1746
|
if last_user_activity < settings.last_user_activity.replace(
|
1746
|
-
tzinfo=
|
1747
|
+
tzinfo=None
|
1747
1748
|
):
|
1748
1749
|
return
|
1749
1750
|
|
@@ -4048,7 +4049,7 @@ class SqlZenStore(BaseZenStore):
|
|
4048
4049
|
# Delete devices that have expired
|
4049
4050
|
if (
|
4050
4051
|
device.expires is not None
|
4051
|
-
and device.expires <
|
4052
|
+
and device.expires < utc_now()
|
4052
4053
|
and device.user_id is None
|
4053
4054
|
):
|
4054
4055
|
session.delete(device)
|
@@ -8634,19 +8635,10 @@ class SqlZenStore(BaseZenStore):
|
|
8634
8635
|
ExecutionStatus.COMPLETED,
|
8635
8636
|
ExecutionStatus.FAILED,
|
8636
8637
|
}:
|
8637
|
-
run_update.end_time =
|
8638
|
+
run_update.end_time = utc_now()
|
8638
8639
|
if pipeline_run.start_time and isinstance(
|
8639
8640
|
pipeline_run.start_time, datetime
|
8640
8641
|
):
|
8641
|
-
# We need to ensure both datetimes are timezone-aware to avoid TypeError when subtracting
|
8642
|
-
# Now calculate the duration time
|
8643
|
-
if pipeline_run.start_time.tzinfo is None:
|
8644
|
-
pipeline_run.start_time = (
|
8645
|
-
pipeline_run.start_time.replace(
|
8646
|
-
tzinfo=timezone.utc
|
8647
|
-
)
|
8648
|
-
)
|
8649
|
-
|
8650
8642
|
duration_time = (
|
8651
8643
|
run_update.end_time - pipeline_run.start_time
|
8652
8644
|
)
|