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
@@ -22,7 +22,7 @@ To run this file locally, execute:
|
|
22
22
|
|
23
23
|
import os
|
24
24
|
from asyncio.log import logger
|
25
|
-
from datetime import datetime, timedelta
|
25
|
+
from datetime import datetime, timedelta
|
26
26
|
from genericpath import isfile
|
27
27
|
from typing import Any, List, Set
|
28
28
|
|
@@ -54,6 +54,7 @@ from zenml.constants import (
|
|
54
54
|
)
|
55
55
|
from zenml.enums import AuthScheme, SourceContextTypes
|
56
56
|
from zenml.models import ServerDeploymentType
|
57
|
+
from zenml.utils.time_utils import utc_now
|
57
58
|
from zenml.zen_server.cloud_utils import send_pro_tenant_status_update
|
58
59
|
from zenml.zen_server.exceptions import error_detail
|
59
60
|
from zenml.zen_server.routers import (
|
@@ -129,8 +130,8 @@ app = FastAPI(
|
|
129
130
|
)
|
130
131
|
|
131
132
|
# Initialize last_user_activity
|
132
|
-
last_user_activity: datetime =
|
133
|
-
last_user_activity_reported: datetime =
|
133
|
+
last_user_activity: datetime = utc_now()
|
134
|
+
last_user_activity_reported: datetime = last_user_activity + timedelta(
|
134
135
|
seconds=-DEFAULT_ZENML_SERVER_REPORT_USER_ACTIVITY_TO_DB_SECONDS
|
135
136
|
)
|
136
137
|
|
@@ -306,20 +307,20 @@ async def track_last_user_activity(request: Request, call_next: Any) -> Any:
|
|
306
307
|
global last_user_activity
|
307
308
|
global last_user_activity_reported
|
308
309
|
|
310
|
+
now = utc_now()
|
311
|
+
|
309
312
|
try:
|
310
313
|
if is_user_request(request):
|
311
|
-
last_user_activity =
|
314
|
+
last_user_activity = now
|
312
315
|
except Exception as e:
|
313
316
|
logger.debug(
|
314
317
|
f"An unexpected error occurred while checking user activity: {e}"
|
315
318
|
)
|
316
319
|
if (
|
317
|
-
(
|
318
|
-
datetime.now(timezone.utc) - last_user_activity_reported
|
319
|
-
).total_seconds()
|
320
|
+
(now - last_user_activity_reported).total_seconds()
|
320
321
|
> DEFAULT_ZENML_SERVER_REPORT_USER_ACTIVITY_TO_DB_SECONDS
|
321
322
|
):
|
322
|
-
last_user_activity_reported =
|
323
|
+
last_user_activity_reported = now
|
323
324
|
zen_store()._update_last_user_activity_timestamp(
|
324
325
|
last_user_activity=last_user_activity
|
325
326
|
)
|
@@ -6,13 +6,14 @@ Create Date: 2024-05-16 11:29:53.341275
|
|
6
6
|
|
7
7
|
"""
|
8
8
|
|
9
|
-
from datetime import datetime, timezone
|
10
9
|
from uuid import uuid4
|
11
10
|
|
12
11
|
import sqlalchemy as sa
|
13
12
|
import sqlmodel
|
14
13
|
from alembic import op
|
15
14
|
|
15
|
+
from zenml.utils.time_utils import utc_now
|
16
|
+
|
16
17
|
# revision identifiers, used by Alembic.
|
17
18
|
revision = "25155145c545"
|
18
19
|
down_revision = "0.58.2"
|
@@ -42,7 +43,7 @@ def migrate_actions() -> None:
|
|
42
43
|
)
|
43
44
|
).fetchall()
|
44
45
|
|
45
|
-
now =
|
46
|
+
now = utc_now()
|
46
47
|
|
47
48
|
actions_to_insert = []
|
48
49
|
trigger_updates = {}
|
@@ -6,12 +6,12 @@ Create Date: 2024-08-07 14:49:07.623500
|
|
6
6
|
|
7
7
|
"""
|
8
8
|
|
9
|
-
from datetime import datetime, timezone
|
10
|
-
|
11
9
|
import sqlalchemy as sa
|
12
10
|
import sqlmodel
|
13
11
|
from alembic import op
|
14
12
|
|
13
|
+
from zenml.utils.time_utils import utc_now
|
14
|
+
|
15
15
|
# revision identifiers, used by Alembic.
|
16
16
|
revision = "3dcc5d20e82f"
|
17
17
|
down_revision = "026d4577b6a0"
|
@@ -36,7 +36,7 @@ def upgrade() -> None:
|
|
36
36
|
SET last_user_activity = :last_user_activity
|
37
37
|
"""
|
38
38
|
),
|
39
|
-
params=(dict(last_user_activity=
|
39
|
+
params=(dict(last_user_activity=utc_now())),
|
40
40
|
)
|
41
41
|
|
42
42
|
with op.batch_alter_table("server_settings", schema=None) as batch_op:
|
@@ -6,13 +6,14 @@ Create Date: 2024-04-17 14:17:08.142652
|
|
6
6
|
|
7
7
|
"""
|
8
8
|
|
9
|
-
from datetime import datetime, timezone
|
10
9
|
from uuid import UUID
|
11
10
|
|
12
11
|
import sqlalchemy as sa
|
13
12
|
import sqlmodel
|
14
13
|
from alembic import op
|
15
14
|
|
15
|
+
from zenml.utils.time_utils import utc_now
|
16
|
+
|
16
17
|
# revision identifiers, used by Alembic.
|
17
18
|
revision = "46506f72f0ed"
|
18
19
|
down_revision = "cc9894cb58aa"
|
@@ -76,7 +77,7 @@ def upgrade() -> None:
|
|
76
77
|
"display_announcements": True,
|
77
78
|
"display_updates": True,
|
78
79
|
# Set the updated timestamp to the current time
|
79
|
-
"updated":
|
80
|
+
"updated": utc_now(),
|
80
81
|
},
|
81
82
|
],
|
82
83
|
)
|
@@ -6,7 +6,6 @@ Create Date: 2022-10-25 23:52:25.935344
|
|
6
6
|
|
7
7
|
"""
|
8
8
|
|
9
|
-
import datetime
|
10
9
|
import uuid
|
11
10
|
|
12
11
|
import sqlalchemy as sa
|
@@ -14,6 +13,8 @@ import sqlmodel
|
|
14
13
|
from alembic import op
|
15
14
|
from sqlalchemy import or_, select
|
16
15
|
|
16
|
+
from zenml.utils.time_utils import utc_now
|
17
|
+
|
17
18
|
# revision identifiers, used by Alembic.
|
18
19
|
revision = "5994f9ad0489"
|
19
20
|
down_revision = "0.21.1"
|
@@ -100,6 +101,7 @@ def upgrade() -> None:
|
|
100
101
|
guest_id = str(uuid.uuid4()).replace("-", "")
|
101
102
|
|
102
103
|
# Prefill the roles table with the admin and guest role
|
104
|
+
now = utc_now()
|
103
105
|
op.bulk_insert(
|
104
106
|
sa.Table(
|
105
107
|
"roleschema",
|
@@ -109,14 +111,14 @@ def upgrade() -> None:
|
|
109
111
|
{
|
110
112
|
"id": admin_id,
|
111
113
|
"name": "admin",
|
112
|
-
"created":
|
113
|
-
"updated":
|
114
|
+
"created": now,
|
115
|
+
"updated": now,
|
114
116
|
},
|
115
117
|
{
|
116
118
|
"id": guest_id,
|
117
119
|
"name": "guest",
|
118
|
-
"created":
|
119
|
-
"updated":
|
120
|
+
"created": now,
|
121
|
+
"updated": now,
|
120
122
|
},
|
121
123
|
],
|
122
124
|
)
|
@@ -148,6 +150,7 @@ def upgrade() -> None:
|
|
148
150
|
res = conn.execute(select(userschema.c.id)).fetchall()
|
149
151
|
user_ids = [i[0] for i in res]
|
150
152
|
|
153
|
+
now = utc_now()
|
151
154
|
for user_id in user_ids:
|
152
155
|
op.bulk_insert(
|
153
156
|
sa.Table(
|
@@ -159,8 +162,8 @@ def upgrade() -> None:
|
|
159
162
|
"id": str(uuid.uuid4()).replace("-", ""),
|
160
163
|
"role_id": admin_id,
|
161
164
|
"user_id": user_id,
|
162
|
-
"created":
|
163
|
-
"updated":
|
165
|
+
"created": now,
|
166
|
+
"updated": now,
|
164
167
|
}
|
165
168
|
],
|
166
169
|
)
|
@@ -8,13 +8,14 @@ Create Date: 2023-10-16 15:15:34.865337
|
|
8
8
|
|
9
9
|
import base64
|
10
10
|
from collections import defaultdict
|
11
|
-
from datetime import datetime, timezone
|
12
11
|
from typing import Dict, Optional, Set
|
13
12
|
from uuid import uuid4
|
14
13
|
|
15
14
|
import sqlalchemy as sa
|
16
15
|
from alembic import op
|
17
16
|
|
17
|
+
from zenml.utils.time_utils import utc_now
|
18
|
+
|
18
19
|
# revision identifiers, used by Alembic.
|
19
20
|
revision = "7500f434b71c"
|
20
21
|
down_revision = "14d687c8fa1c"
|
@@ -123,7 +124,7 @@ def resolve_duplicate_names() -> None:
|
|
123
124
|
_rename_duplicate_entities(service_connector_table)
|
124
125
|
|
125
126
|
workspace_query = sa.select(workspace_table.c.id)
|
126
|
-
utcnow =
|
127
|
+
utcnow = utc_now()
|
127
128
|
|
128
129
|
stack_components = []
|
129
130
|
stacks = []
|
@@ -6,13 +6,14 @@ Create Date: 2023-11-25 11:01:09.217299
|
|
6
6
|
|
7
7
|
"""
|
8
8
|
|
9
|
-
from datetime import datetime, timezone
|
10
9
|
from uuid import uuid4
|
11
10
|
|
12
11
|
import sqlalchemy as sa
|
13
12
|
import sqlmodel
|
14
13
|
from alembic import op
|
15
14
|
|
15
|
+
from zenml.utils.time_utils import utc_now
|
16
|
+
|
16
17
|
# revision identifiers, used by Alembic.
|
17
18
|
revision = "a91762e6be36"
|
18
19
|
down_revision = "0.50.0"
|
@@ -58,12 +59,13 @@ def upgrade() -> None:
|
|
58
59
|
unique_artifact_names = {
|
59
60
|
name: has_custom_name for name, has_custom_name in artifact_names
|
60
61
|
}
|
62
|
+
now = utc_now()
|
61
63
|
for name, has_custom_name in unique_artifact_names.items():
|
62
64
|
conn.execute(
|
63
65
|
artifacts.insert().values(
|
64
66
|
id=uuid4().hex,
|
65
|
-
created=
|
66
|
-
updated=
|
67
|
+
created=now,
|
68
|
+
updated=now,
|
67
69
|
name=name,
|
68
70
|
has_custom_name=has_custom_name,
|
69
71
|
)
|
@@ -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
|
|
@@ -31,6 +30,7 @@ from zenml.models import (
|
|
31
30
|
ActionResponseResources,
|
32
31
|
ActionUpdate,
|
33
32
|
)
|
33
|
+
from zenml.utils.time_utils import utc_now
|
34
34
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
35
35
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
36
36
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -140,7 +140,7 @@ class ActionSchema(NamedSchema, table=True):
|
|
140
140
|
else:
|
141
141
|
setattr(self, field, value)
|
142
142
|
|
143
|
-
self.updated =
|
143
|
+
self.updated = utc_now()
|
144
144
|
return self
|
145
145
|
|
146
146
|
def to_model(
|
@@ -13,7 +13,7 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQLModel implementation of user tables."""
|
15
15
|
|
16
|
-
from datetime import datetime
|
16
|
+
from datetime import datetime
|
17
17
|
from secrets import token_hex
|
18
18
|
from typing import Any, Optional, Tuple
|
19
19
|
from uuid import UUID
|
@@ -32,6 +32,7 @@ from zenml.models import (
|
|
32
32
|
APIKeyRotateRequest,
|
33
33
|
APIKeyUpdate,
|
34
34
|
)
|
35
|
+
from zenml.utils.time_utils import utc_now
|
35
36
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
36
37
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
37
38
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -100,7 +101,7 @@ class APIKeySchema(NamedSchema, table=True):
|
|
100
101
|
"""
|
101
102
|
key = cls._generate_jwt_secret_key()
|
102
103
|
hashed_key = cls._get_hashed_key(key)
|
103
|
-
now =
|
104
|
+
now = utc_now()
|
104
105
|
return (
|
105
106
|
cls(
|
106
107
|
name=request.name,
|
@@ -197,7 +198,7 @@ class APIKeySchema(NamedSchema, table=True):
|
|
197
198
|
if hasattr(self, field):
|
198
199
|
setattr(self, field, value)
|
199
200
|
|
200
|
-
self.updated =
|
201
|
+
self.updated = utc_now()
|
201
202
|
return self
|
202
203
|
|
203
204
|
def internal_update(self, update: APIKeyInternalUpdate) -> "APIKeySchema":
|
@@ -230,7 +231,7 @@ class APIKeySchema(NamedSchema, table=True):
|
|
230
231
|
Returns:
|
231
232
|
The updated `APIKeySchema` and the new un-hashed key.
|
232
233
|
"""
|
233
|
-
self.updated =
|
234
|
+
self.updated = utc_now()
|
234
235
|
self.previous_key = self.key
|
235
236
|
self.retain_period = rotate_request.retain_period_minutes
|
236
237
|
new_key = self._generate_jwt_secret_key()
|
@@ -13,7 +13,6 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQLModel implementation of artifact table."""
|
15
15
|
|
16
|
-
from datetime import datetime, timezone
|
17
16
|
from typing import TYPE_CHECKING, Any, List, Optional
|
18
17
|
from uuid import UUID
|
19
18
|
|
@@ -41,6 +40,7 @@ from zenml.models import (
|
|
41
40
|
ArtifactVersionUpdate,
|
42
41
|
)
|
43
42
|
from zenml.models.v2.core.artifact import ArtifactRequest
|
43
|
+
from zenml.utils.time_utils import utc_now
|
44
44
|
from zenml.zen_stores.schemas.base_schemas import BaseSchema, NamedSchema
|
45
45
|
from zenml.zen_stores.schemas.component_schemas import StackComponentSchema
|
46
46
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
@@ -163,7 +163,7 @@ class ArtifactSchema(NamedSchema, table=True):
|
|
163
163
|
Returns:
|
164
164
|
The updated `ArtifactSchema`.
|
165
165
|
"""
|
166
|
-
self.updated =
|
166
|
+
self.updated = utc_now()
|
167
167
|
if artifact_update.name:
|
168
168
|
self.name = artifact_update.name
|
169
169
|
self.has_custom_name = True
|
@@ -401,5 +401,5 @@ class ArtifactVersionSchema(BaseSchema, RunMetadataInterface, table=True):
|
|
401
401
|
Returns:
|
402
402
|
The updated `ArtifactVersionSchema`.
|
403
403
|
"""
|
404
|
-
self.updated =
|
404
|
+
self.updated = utc_now()
|
405
405
|
return self
|
@@ -13,12 +13,14 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""Base classes for SQLModel schemas."""
|
15
15
|
|
16
|
-
from datetime import datetime
|
16
|
+
from datetime import datetime
|
17
17
|
from typing import TYPE_CHECKING, Any, TypeVar
|
18
18
|
from uuid import UUID, uuid4
|
19
19
|
|
20
20
|
from sqlmodel import Field, SQLModel
|
21
21
|
|
22
|
+
from zenml.utils.time_utils import utc_now
|
23
|
+
|
22
24
|
if TYPE_CHECKING:
|
23
25
|
from zenml.models.v2.base.base import BaseResponse
|
24
26
|
|
@@ -29,12 +31,8 @@ class BaseSchema(SQLModel):
|
|
29
31
|
"""Base SQL Model for ZenML entities."""
|
30
32
|
|
31
33
|
id: UUID = Field(default_factory=uuid4, primary_key=True)
|
32
|
-
created: datetime = Field(
|
33
|
-
|
34
|
-
)
|
35
|
-
updated: datetime = Field(
|
36
|
-
default_factory=lambda: datetime.now(timezone.utc)
|
37
|
-
)
|
34
|
+
created: datetime = Field(default_factory=utc_now)
|
35
|
+
updated: datetime = Field(default_factory=utc_now)
|
38
36
|
|
39
37
|
def to_model(
|
40
38
|
self,
|
@@ -14,7 +14,6 @@
|
|
14
14
|
"""SQL Model Implementations for code repositories."""
|
15
15
|
|
16
16
|
import json
|
17
|
-
from datetime import datetime, timezone
|
18
17
|
from typing import Any, Optional
|
19
18
|
from uuid import UUID
|
20
19
|
|
@@ -32,6 +31,7 @@ from zenml.models import (
|
|
32
31
|
CodeRepositoryResponseMetadata,
|
33
32
|
CodeRepositoryUpdate,
|
34
33
|
)
|
34
|
+
from zenml.utils.time_utils import utc_now
|
35
35
|
from zenml.zen_stores.schemas.base_schemas import BaseSchema, NamedSchema
|
36
36
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
37
37
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -151,7 +151,7 @@ class CodeRepositorySchema(NamedSchema, table=True):
|
|
151
151
|
if update.logo_url:
|
152
152
|
self.logo_url = update.logo_url
|
153
153
|
|
154
|
-
self.updated =
|
154
|
+
self.updated = utc_now()
|
155
155
|
return self
|
156
156
|
|
157
157
|
|
@@ -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
|
|
@@ -30,6 +29,7 @@ from zenml.models import (
|
|
30
29
|
ComponentResponseResources,
|
31
30
|
ComponentUpdate,
|
32
31
|
)
|
32
|
+
from zenml.utils.time_utils import utc_now
|
33
33
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
34
34
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
35
35
|
from zenml.zen_stores.schemas.service_connector_schemas import (
|
@@ -171,7 +171,7 @@ class StackComponentSchema(NamedSchema, table=True):
|
|
171
171
|
else:
|
172
172
|
setattr(self, field, value)
|
173
173
|
|
174
|
-
self.updated =
|
174
|
+
self.updated = utc_now()
|
175
175
|
return self
|
176
176
|
|
177
177
|
def to_model(
|
@@ -13,7 +13,7 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQLModel implementation for authorized OAuth2 devices."""
|
15
15
|
|
16
|
-
from datetime import datetime, timedelta
|
16
|
+
from datetime import datetime, timedelta
|
17
17
|
from secrets import token_hex
|
18
18
|
from typing import Any, Optional, Tuple
|
19
19
|
from uuid import UUID
|
@@ -31,6 +31,7 @@ from zenml.models import (
|
|
31
31
|
OAuthDeviceResponseMetadata,
|
32
32
|
OAuthDeviceUpdate,
|
33
33
|
)
|
34
|
+
from zenml.utils.time_utils import utc_now
|
34
35
|
from zenml.zen_stores.schemas.base_schemas import BaseSchema
|
35
36
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
36
37
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -115,7 +116,7 @@ class OAuthDeviceSchema(BaseSchema, table=True):
|
|
115
116
|
device_code = cls._generate_device_code()
|
116
117
|
hashed_user_code = cls._get_hashed_code(user_code)
|
117
118
|
hashed_device_code = cls._get_hashed_code(device_code)
|
118
|
-
now =
|
119
|
+
now = utc_now()
|
119
120
|
return (
|
120
121
|
cls(
|
121
122
|
client_id=request.client_id,
|
@@ -159,7 +160,7 @@ class OAuthDeviceSchema(BaseSchema, table=True):
|
|
159
160
|
elif device_update.locked is False:
|
160
161
|
self.status = OAuthDeviceStatus.ACTIVE.value
|
161
162
|
|
162
|
-
self.updated =
|
163
|
+
self.updated = utc_now()
|
163
164
|
return self
|
164
165
|
|
165
166
|
def internal_update(
|
@@ -174,7 +175,7 @@ class OAuthDeviceSchema(BaseSchema, table=True):
|
|
174
175
|
The updated `OAuthDeviceSchema` and the new user code and device
|
175
176
|
code, if they were generated.
|
176
177
|
"""
|
177
|
-
now =
|
178
|
+
now = utc_now()
|
178
179
|
user_code: Optional[str] = None
|
179
180
|
device_code: Optional[str] = None
|
180
181
|
|
@@ -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, cast
|
20
19
|
from uuid import UUID
|
21
20
|
|
@@ -32,6 +31,7 @@ from zenml.models import (
|
|
32
31
|
Page,
|
33
32
|
)
|
34
33
|
from zenml.utils.json_utils import pydantic_encoder
|
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.schema_utils import build_foreign_key_field
|
37
37
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -184,5 +184,5 @@ class EventSourceSchema(NamedSchema, table=True):
|
|
184
184
|
)
|
185
185
|
else:
|
186
186
|
setattr(self, field, value)
|
187
|
-
self.updated =
|
187
|
+
self.updated = utc_now()
|
188
188
|
return self
|
@@ -14,7 +14,6 @@
|
|
14
14
|
"""SQL Model Implementations for Flavors."""
|
15
15
|
|
16
16
|
import json
|
17
|
-
from datetime import datetime, timezone
|
18
17
|
from typing import Any, Optional
|
19
18
|
from uuid import UUID
|
20
19
|
|
@@ -28,6 +27,7 @@ from zenml.models import (
|
|
28
27
|
FlavorResponseMetadata,
|
29
28
|
FlavorUpdate,
|
30
29
|
)
|
30
|
+
from zenml.utils.time_utils import utc_now
|
31
31
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
32
32
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
33
33
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -103,7 +103,7 @@ class FlavorSchema(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
|
def to_model(
|
@@ -13,7 +13,6 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQLModel implementation of model tables."""
|
15
15
|
|
16
|
-
from datetime import datetime, timezone
|
17
16
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, cast
|
18
17
|
from uuid import UUID, uuid4
|
19
18
|
|
@@ -52,6 +51,7 @@ from zenml.models import (
|
|
52
51
|
ModelVersionResponseResources,
|
53
52
|
Page,
|
54
53
|
)
|
54
|
+
from zenml.utils.time_utils import utc_now
|
55
55
|
from zenml.zen_stores.schemas.artifact_schemas import ArtifactVersionSchema
|
56
56
|
from zenml.zen_stores.schemas.base_schemas import BaseSchema, NamedSchema
|
57
57
|
from zenml.zen_stores.schemas.constants import MODEL_VERSION_TABLENAME
|
@@ -224,7 +224,7 @@ class ModelSchema(NamedSchema, table=True):
|
|
224
224
|
exclude_unset=True, exclude_none=True
|
225
225
|
).items():
|
226
226
|
setattr(self, field, value)
|
227
|
-
self.updated =
|
227
|
+
self.updated = utc_now()
|
228
228
|
return self
|
229
229
|
|
230
230
|
|
@@ -504,7 +504,7 @@ class ModelVersionSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
504
504
|
self.name = target_name
|
505
505
|
if target_description is not None:
|
506
506
|
self.description = target_description
|
507
|
-
self.updated =
|
507
|
+
self.updated = utc_now()
|
508
508
|
return self
|
509
509
|
|
510
510
|
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"""SQLModel implementation of pipeline 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
|
|
@@ -37,6 +37,7 @@ from zenml.models import (
|
|
37
37
|
RunMetadataEntry,
|
38
38
|
)
|
39
39
|
from zenml.models.v2.core.pipeline_run import PipelineRunResponseResources
|
40
|
+
from zenml.utils.time_utils import utc_now
|
40
41
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
41
42
|
from zenml.zen_stores.schemas.constants import MODEL_VERSION_TABLENAME
|
42
43
|
from zenml.zen_stores.schemas.pipeline_build_schemas import PipelineBuildSchema
|
@@ -437,7 +438,7 @@ class PipelineRunSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
437
438
|
if run_update.model_version_id and self.model_version_id is None:
|
438
439
|
self.model_version_id = run_update.model_version_id
|
439
440
|
|
440
|
-
self.updated =
|
441
|
+
self.updated = utc_now()
|
441
442
|
return self
|
442
443
|
|
443
444
|
def update_placeholder(
|
@@ -478,7 +479,7 @@ class PipelineRunSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
478
479
|
self.orchestrator_environment = orchestrator_environment
|
479
480
|
self.status = request.status.value
|
480
481
|
|
481
|
-
self.updated =
|
482
|
+
self.updated = utc_now()
|
482
483
|
|
483
484
|
return self
|
484
485
|
|
@@ -13,7 +13,6 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQL Model Implementations for Pipelines and Pipeline Runs."""
|
15
15
|
|
16
|
-
from datetime import datetime, timezone
|
17
16
|
from typing import TYPE_CHECKING, Any, List, Optional
|
18
17
|
from uuid import UUID
|
19
18
|
|
@@ -29,6 +28,7 @@ from zenml.models import (
|
|
29
28
|
PipelineResponseResources,
|
30
29
|
PipelineUpdate,
|
31
30
|
)
|
31
|
+
from zenml.utils.time_utils import utc_now
|
32
32
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
33
33
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
34
34
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -185,5 +185,5 @@ class PipelineSchema(NamedSchema, table=True):
|
|
185
185
|
The updated `PipelineSchema`.
|
186
186
|
"""
|
187
187
|
self.description = pipeline_update.description
|
188
|
-
self.updated =
|
188
|
+
self.updated = utc_now()
|
189
189
|
return self
|
@@ -13,7 +13,6 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQLModel implementation of run template tables."""
|
15
15
|
|
16
|
-
from datetime import datetime, timezone
|
17
16
|
from typing import TYPE_CHECKING, Any, List, Optional
|
18
17
|
from uuid import UUID
|
19
18
|
|
@@ -31,6 +30,7 @@ from zenml.models import (
|
|
31
30
|
RunTemplateResponseResources,
|
32
31
|
RunTemplateUpdate,
|
33
32
|
)
|
33
|
+
from zenml.utils.time_utils import utc_now
|
34
34
|
from zenml.zen_stores.schemas.base_schemas import BaseSchema
|
35
35
|
from zenml.zen_stores.schemas.schema_utils import build_foreign_key_field
|
36
36
|
from zenml.zen_stores.schemas.user_schemas import UserSchema
|
@@ -156,7 +156,7 @@ class RunTemplateSchema(BaseSchema, table=True):
|
|
156
156
|
).items():
|
157
157
|
setattr(self, field, value)
|
158
158
|
|
159
|
-
self.updated =
|
159
|
+
self.updated = utc_now()
|
160
160
|
return self
|
161
161
|
|
162
162
|
def to_model(
|
@@ -13,7 +13,7 @@
|
|
13
13
|
# permissions and limitations under the License.
|
14
14
|
"""SQL Model Implementations for Pipeline Schedules."""
|
15
15
|
|
16
|
-
from datetime import datetime, timedelta
|
16
|
+
from datetime import datetime, timedelta
|
17
17
|
from typing import TYPE_CHECKING, Any, List, Optional
|
18
18
|
from uuid import UUID
|
19
19
|
|
@@ -27,6 +27,7 @@ from zenml.models import (
|
|
27
27
|
ScheduleResponseMetadata,
|
28
28
|
ScheduleUpdate,
|
29
29
|
)
|
30
|
+
from zenml.utils.time_utils import utc_now
|
30
31
|
from zenml.zen_stores.schemas.base_schemas import NamedSchema
|
31
32
|
from zenml.zen_stores.schemas.component_schemas import StackComponentSchema
|
32
33
|
from zenml.zen_stores.schemas.pipeline_schemas import PipelineSchema
|
@@ -167,7 +168,7 @@ class ScheduleSchema(NamedSchema, RunMetadataInterface, table=True):
|
|
167
168
|
)
|
168
169
|
if schedule_update.catchup is not None:
|
169
170
|
self.catchup = schedule_update.catchup
|
170
|
-
self.updated =
|
171
|
+
self.updated = utc_now()
|
171
172
|
return self
|
172
173
|
|
173
174
|
def to_model(
|