flowyml 1.3.0__py3-none-any.whl → 1.4.0__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.
- flowyml/core/observability.py +7 -7
- flowyml/core/resources.py +12 -12
- flowyml/core/retry_policy.py +2 -2
- flowyml/core/scheduler.py +9 -9
- flowyml/core/scheduler_config.py +2 -3
- flowyml/core/submission_result.py +4 -4
- flowyml/stacks/bridge.py +9 -9
- flowyml/stacks/plugins.py +2 -2
- flowyml/stacks/registry.py +21 -0
- flowyml/storage/materializers/base.py +33 -0
- flowyml/storage/metadata.py +3 -1042
- flowyml/storage/remote.py +590 -0
- flowyml/storage/sql.py +911 -0
- flowyml/ui/backend/dependencies.py +28 -0
- flowyml/ui/backend/main.py +2 -79
- flowyml/ui/backend/routers/assets.py +134 -9
- flowyml/ui/backend/routers/client.py +6 -6
- flowyml/ui/backend/routers/experiments.py +53 -6
- flowyml/ui/backend/routers/metrics.py +23 -68
- flowyml/ui/backend/routers/pipelines.py +19 -10
- flowyml/ui/backend/routers/runs.py +76 -9
- flowyml/ui/backend/routers/schedules.py +5 -21
- flowyml/ui/backend/routers/stats.py +14 -0
- flowyml/ui/backend/routers/traces.py +37 -53
- {flowyml-1.3.0.dist-info → flowyml-1.4.0.dist-info}/METADATA +3 -1
- {flowyml-1.3.0.dist-info → flowyml-1.4.0.dist-info}/RECORD +29 -25
- {flowyml-1.3.0.dist-info → flowyml-1.4.0.dist-info}/WHEEL +0 -0
- {flowyml-1.3.0.dist-info → flowyml-1.4.0.dist-info}/entry_points.txt +0 -0
- {flowyml-1.3.0.dist-info → flowyml-1.4.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -71,16 +71,13 @@ async def create_schedule(schedule: ScheduleRequest):
|
|
|
71
71
|
else:
|
|
72
72
|
# Check if it's a historical pipeline (in metadata but not registry)
|
|
73
73
|
# This means we can't run it because we don't have the code loaded
|
|
74
|
-
from flowyml.
|
|
74
|
+
from flowyml.ui.backend.dependencies import get_store
|
|
75
75
|
|
|
76
|
-
store =
|
|
76
|
+
store = get_store()
|
|
77
77
|
pipelines = store.list_pipelines()
|
|
78
78
|
|
|
79
79
|
if schedule.pipeline_name in pipelines:
|
|
80
80
|
# Try to load pipeline definition
|
|
81
|
-
from flowyml.storage.metadata import SQLiteMetadataStore
|
|
82
|
-
|
|
83
|
-
store = SQLiteMetadataStore()
|
|
84
81
|
pipeline_def = store.get_pipeline_definition(schedule.pipeline_name)
|
|
85
82
|
|
|
86
83
|
if pipeline_def:
|
|
@@ -188,7 +185,6 @@ async def get_schedule_history(schedule_name: str, limit: int = 50):
|
|
|
188
185
|
async def list_registered_pipelines(project: str = None):
|
|
189
186
|
"""List all pipelines available for scheduling."""
|
|
190
187
|
from flowyml.core.templates import list_templates
|
|
191
|
-
from flowyml.storage.metadata import SQLiteMetadataStore
|
|
192
188
|
|
|
193
189
|
registered = pipeline_registry.list_pipelines()
|
|
194
190
|
templates = list_templates()
|
|
@@ -196,22 +192,10 @@ async def list_registered_pipelines(project: str = None):
|
|
|
196
192
|
# Also get pipelines from metadata store (historical runs)
|
|
197
193
|
metadata_pipelines = []
|
|
198
194
|
try:
|
|
199
|
-
|
|
200
|
-
import sqlite3
|
|
201
|
-
|
|
202
|
-
conn = sqlite3.connect(store.db_path)
|
|
203
|
-
cursor = conn.cursor()
|
|
204
|
-
|
|
205
|
-
if project:
|
|
206
|
-
cursor.execute(
|
|
207
|
-
"SELECT DISTINCT pipeline_name FROM runs WHERE project = ? ORDER BY pipeline_name",
|
|
208
|
-
(project,),
|
|
209
|
-
)
|
|
210
|
-
else:
|
|
211
|
-
cursor.execute("SELECT DISTINCT pipeline_name FROM runs ORDER BY pipeline_name")
|
|
195
|
+
from flowyml.ui.backend.dependencies import get_store
|
|
212
196
|
|
|
213
|
-
|
|
214
|
-
|
|
197
|
+
store = get_store()
|
|
198
|
+
metadata_pipelines = store.list_pipelines(project=project)
|
|
215
199
|
except Exception as e:
|
|
216
200
|
print(f"Failed to fetch pipelines from metadata store: {e}")
|
|
217
201
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from fastapi import APIRouter, HTTPException
|
|
2
|
+
from flowyml.ui.backend.dependencies import get_store
|
|
3
|
+
|
|
4
|
+
router = APIRouter()
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@router.get("/")
|
|
8
|
+
async def get_global_stats():
|
|
9
|
+
"""Get global statistics."""
|
|
10
|
+
try:
|
|
11
|
+
store = get_store()
|
|
12
|
+
return store.get_statistics()
|
|
13
|
+
except Exception as e:
|
|
14
|
+
raise HTTPException(status_code=500, detail=str(e))
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from fastapi import APIRouter, HTTPException
|
|
2
|
-
from
|
|
3
|
-
import
|
|
4
|
-
import builtins
|
|
2
|
+
from pydantic import BaseModel
|
|
3
|
+
from flowyml.ui.backend.dependencies import get_store
|
|
5
4
|
|
|
6
5
|
router = APIRouter()
|
|
7
6
|
|
|
@@ -14,61 +13,14 @@ async def list_traces(
|
|
|
14
13
|
project: str | None = None,
|
|
15
14
|
):
|
|
16
15
|
"""List traces, optionally filtered by project."""
|
|
17
|
-
store =
|
|
18
|
-
|
|
19
|
-
# We need to implement list_traces in metadata store or query manually
|
|
20
|
-
# For now, let's query manually via sqlite
|
|
21
|
-
import sqlite3
|
|
22
|
-
|
|
23
|
-
conn = sqlite3.connect(store.db_path)
|
|
24
|
-
cursor = conn.cursor()
|
|
25
|
-
|
|
26
|
-
query = "SELECT * FROM traces"
|
|
27
|
-
params = []
|
|
28
|
-
conditions = []
|
|
29
|
-
|
|
30
|
-
if trace_id:
|
|
31
|
-
conditions.append("trace_id = ?")
|
|
32
|
-
params.append(trace_id)
|
|
33
|
-
|
|
34
|
-
if event_type:
|
|
35
|
-
conditions.append("event_type = ?")
|
|
36
|
-
params.append(event_type)
|
|
37
|
-
|
|
38
|
-
if project:
|
|
39
|
-
conditions.append("project = ?")
|
|
40
|
-
params.append(project)
|
|
41
|
-
|
|
42
|
-
if conditions:
|
|
43
|
-
query += " WHERE " + " AND ".join(conditions)
|
|
44
|
-
|
|
45
|
-
query += " ORDER BY start_time DESC LIMIT ?"
|
|
46
|
-
params.append(limit)
|
|
47
|
-
|
|
48
|
-
cursor.execute(query, params)
|
|
49
|
-
columns = [description[0] for description in cursor.description]
|
|
50
|
-
rows = cursor.fetchall()
|
|
51
|
-
|
|
52
|
-
traces = []
|
|
53
|
-
import json
|
|
54
|
-
|
|
55
|
-
for row in rows:
|
|
56
|
-
trace = dict(zip(columns, row, strict=False))
|
|
57
|
-
# Parse JSON fields
|
|
58
|
-
for field in ["inputs", "outputs", "metadata"]:
|
|
59
|
-
if trace[field]:
|
|
60
|
-
with contextlib.suppress(builtins.BaseException):
|
|
61
|
-
trace[field] = json.loads(trace[field])
|
|
62
|
-
traces.append(trace)
|
|
63
|
-
|
|
64
|
-
conn.close()
|
|
65
|
-
return traces
|
|
16
|
+
store = get_store()
|
|
17
|
+
return store.list_traces(limit=limit, trace_id=trace_id, event_type=event_type, project=project)
|
|
66
18
|
|
|
67
19
|
|
|
68
20
|
@router.get("/{trace_id}")
|
|
69
21
|
async def get_trace(trace_id: str):
|
|
70
22
|
"""Get a specific trace tree."""
|
|
71
|
-
store =
|
|
23
|
+
store = get_store()
|
|
72
24
|
events = store.get_trace(trace_id)
|
|
73
25
|
if not events:
|
|
74
26
|
raise HTTPException(status_code=404, detail="Trace not found")
|
|
@@ -82,3 +34,35 @@ async def get_trace(trace_id: str):
|
|
|
82
34
|
return event
|
|
83
35
|
|
|
84
36
|
return [build_tree(root) for root in root_events]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class TraceEventCreate(BaseModel):
|
|
40
|
+
event_id: str
|
|
41
|
+
trace_id: str
|
|
42
|
+
parent_id: str | None = None
|
|
43
|
+
event_type: str
|
|
44
|
+
name: str
|
|
45
|
+
inputs: dict | None = None
|
|
46
|
+
outputs: dict | None = None
|
|
47
|
+
start_time: float | None = None
|
|
48
|
+
end_time: float | None = None
|
|
49
|
+
duration: float | None = None
|
|
50
|
+
status: str | None = None
|
|
51
|
+
error: str | None = None
|
|
52
|
+
metadata: dict | None = None
|
|
53
|
+
prompt_tokens: int | None = None
|
|
54
|
+
completion_tokens: int | None = None
|
|
55
|
+
total_tokens: int | None = None
|
|
56
|
+
cost: float | None = None
|
|
57
|
+
model: str | None = None
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@router.post("/")
|
|
61
|
+
async def create_trace_event(event: TraceEventCreate):
|
|
62
|
+
"""Create or update a trace event."""
|
|
63
|
+
try:
|
|
64
|
+
store = get_store()
|
|
65
|
+
store.save_trace_event(event.dict())
|
|
66
|
+
return {"status": "success", "event_id": event.event_id}
|
|
67
|
+
except Exception as e:
|
|
68
|
+
raise HTTPException(status_code=500, detail=str(e))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flowyml
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Next-Generation ML Pipeline Framework
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -36,11 +36,13 @@ Requires-Dist: httpx (>=0.24,<0.28)
|
|
|
36
36
|
Requires-Dist: loguru (>=0.7.3,<0.8.0)
|
|
37
37
|
Requires-Dist: numpy (>=1.20.0)
|
|
38
38
|
Requires-Dist: pandas (>=1.3.0)
|
|
39
|
+
Requires-Dist: psycopg2-binary (>=2.9.0)
|
|
39
40
|
Requires-Dist: pydantic (>=2.0.0)
|
|
40
41
|
Requires-Dist: python-multipart (>=0.0.6) ; extra == "ui" or extra == "all"
|
|
41
42
|
Requires-Dist: pytz (>=2024.1,<2025.0)
|
|
42
43
|
Requires-Dist: pyyaml (>=6.0)
|
|
43
44
|
Requires-Dist: scikit-learn (>=1.0.0) ; extra == "sklearn" or extra == "all"
|
|
45
|
+
Requires-Dist: sqlalchemy (>=2.0.0)
|
|
44
46
|
Requires-Dist: tensorflow (>=2.12.0) ; extra == "tensorflow" or extra == "all"
|
|
45
47
|
Requires-Dist: toml (>=0.10.2)
|
|
46
48
|
Requires-Dist: torch (>=2.0.0) ; extra == "pytorch" or extra == "all"
|
|
@@ -27,19 +27,19 @@ flowyml/core/execution_status.py,sha256=gKLyWbJHo2mfjcsAhORCRqu14E2XEO0NaqTE9wfM
|
|
|
27
27
|
flowyml/core/executor.py,sha256=oXVUsh-W1oC357usZvU6qrlYx1NhIN03Ux5FTMQonf4,12328
|
|
28
28
|
flowyml/core/graph.py,sha256=drVezsgYwva-b8X5FsjExtaW-7NsjYMkchTIPYyb5HQ,6065
|
|
29
29
|
flowyml/core/hooks.py,sha256=UOqrNY1m3lmVql1FRls6AXDNAV3dxxZl-zO6ijEeRW8,4022
|
|
30
|
-
flowyml/core/observability.py,sha256=
|
|
30
|
+
flowyml/core/observability.py,sha256=NW05m8zki1TwKeRBBCtAP1UwguMcJasGz8HHgMVbjAU,7011
|
|
31
31
|
flowyml/core/orchestrator.py,sha256=S3dwRykDAOoqBMsHCrgJcNmTemKCWN20Ohp_eWHm-NA,10807
|
|
32
32
|
flowyml/core/parallel.py,sha256=KGstDu32i9FFKZV0bBRrm1kl3bKjcHmL2js48dVjWlk,12492
|
|
33
33
|
flowyml/core/pipeline.py,sha256=ZA1WrdYAJXyBajntDoy-2lf0OQTTQjFME4CfHiJNoMw,27417
|
|
34
34
|
flowyml/core/project.py,sha256=e6DVQYvNpOy0zfWVYzzUOQM60LH6rh-bui5Xpf5mqqA,8879
|
|
35
35
|
flowyml/core/remote_orchestrator.py,sha256=LpHlNQslq14OliNZogBGf0fpu6c5n9T7f3BpftahM8Q,3527
|
|
36
|
-
flowyml/core/resources.py,sha256=
|
|
37
|
-
flowyml/core/retry_policy.py,sha256=
|
|
38
|
-
flowyml/core/scheduler.py,sha256=
|
|
39
|
-
flowyml/core/scheduler_config.py,sha256=
|
|
36
|
+
flowyml/core/resources.py,sha256=5TimjjSOEedALgNVVjRrvU-cHujKebyFjU4YxImvqZE,14402
|
|
37
|
+
flowyml/core/retry_policy.py,sha256=OKiazbSfGm01BMAhVrjYrGbGZdceTgckGZjbcDeKK1c,2358
|
|
38
|
+
flowyml/core/scheduler.py,sha256=EPMBzHacVCCslVJ7azlHr0MyfGAjQKyRFZad0Guk_7A,22081
|
|
39
|
+
flowyml/core/scheduler_config.py,sha256=bMlt9a7ap_-kKImiRbEAhuGkzvvpJiQPu8NXIfdwhEA,1203
|
|
40
40
|
flowyml/core/step.py,sha256=h_y4Yx_uJSL6D8jaL1vhAjtYFUjt-64RGsJHapJxCss,7871
|
|
41
41
|
flowyml/core/step_grouping.py,sha256=wBMZbOLZW5ghN8n8J3CmzKFKTaytRzrLkHJ-AwCuP5E,9941
|
|
42
|
-
flowyml/core/submission_result.py,sha256=
|
|
42
|
+
flowyml/core/submission_result.py,sha256=bPPCC9pxqCZTTV0CdK1znJi4Rhw8QRCqQVwuVFr0b20,1692
|
|
43
43
|
flowyml/core/templates.py,sha256=r7WbxZv8-BV3_3oX27ACGSitIsmNbNd4VeitpI2uJeg,6359
|
|
44
44
|
flowyml/core/versioning.py,sha256=kpYLJ7YBTfGduZmy45-qcnJLOIFqsIcc6WIisObVKYE,7080
|
|
45
45
|
flowyml/integrations/__init__.py,sha256=SQWPFwFs_1gLGlJ6TDo2bcFKwBrv1PkwhZvEiELV1ok,28
|
|
@@ -57,18 +57,18 @@ flowyml/stacks/__init__.py,sha256=5FOapdb-qoXtZz0wa1_I1OZT5SBITarJjNy4WT_OyPU,12
|
|
|
57
57
|
flowyml/stacks/aws.py,sha256=8u2TcKT-Z-PFfgaswjW87UrFi_VpA7JmK4Ev3NEYtHY,20958
|
|
58
58
|
flowyml/stacks/azure.py,sha256=UdEoA0bhAF3g3zbiTaNi5ldptVAm_CRYWovC3w8tsEA,10587
|
|
59
59
|
flowyml/stacks/base.py,sha256=0C0s9um6mstRUfkOEYXlunn9F3H4u9XPRp8lnGSj-G4,2537
|
|
60
|
-
flowyml/stacks/bridge.py,sha256=
|
|
60
|
+
flowyml/stacks/bridge.py,sha256=spDWDqAiph6TedPavS-_HhLns0wCMz2R59IchLfUWh4,10885
|
|
61
61
|
flowyml/stacks/components.py,sha256=fxTSJLqyH1--hyF1Nqx4HG4fGbMmPJIOfZ6az0WCggY,4929
|
|
62
62
|
flowyml/stacks/gcp.py,sha256=u8b4rddca1pPSHYTiZ0riK4vdCHyv160o5Oi4B_NZrw,20436
|
|
63
63
|
flowyml/stacks/local.py,sha256=FjxmCdH9gd3Qq8tbwW4WSsA3QwsgWCJrZJwtDmcKRsg,3858
|
|
64
64
|
flowyml/stacks/migration.py,sha256=dWSOVkDWY6Y-yobmTNS0JZ1aKJw6xkRXndRN5vH8aFM,3523
|
|
65
65
|
flowyml/stacks/plugin_config.py,sha256=16ggYUj7w1qYM-cwDRrpf9ydpj7C5CZytIgNDZbVdSY,2483
|
|
66
|
-
flowyml/stacks/plugins.py,sha256=
|
|
67
|
-
flowyml/stacks/registry.py,sha256=
|
|
66
|
+
flowyml/stacks/plugins.py,sha256=tR1wcKlhgguKhqrQpIlqqNBMiRbys6A_59ItS9fNhBo,15260
|
|
67
|
+
flowyml/stacks/registry.py,sha256=_n7EtI7s4BXMbF_tRT7KDC_FNntyb1146mtE0dNT3mw,7152
|
|
68
68
|
flowyml/storage/__init__.py,sha256=d03pJ5Q-iTMRRQNJi5dI9vYqwY3QMlUDiEIZ4AZ0o8Y,984
|
|
69
69
|
flowyml/storage/artifacts.py,sha256=JCLLkDSglPdDsr-YluX70N3T61noob9-BKCbEnjcf-4,7498
|
|
70
70
|
flowyml/storage/materializers/__init__.py,sha256=_uqy_2lf5eHKxjjEMWaluqAHi3KLPf11cV6FYbHRAk8,899
|
|
71
|
-
flowyml/storage/materializers/base.py,sha256=
|
|
71
|
+
flowyml/storage/materializers/base.py,sha256=r_ZoNXenTxGOoWgCXqMj0r5He4-vUNHuSwKue_-rdWY,4917
|
|
72
72
|
flowyml/storage/materializers/cloudpickle.py,sha256=lQ5IT-TYTi93cQ46SWJ9uNvJZKWmuHHDVZsvWTFeqwE,2285
|
|
73
73
|
flowyml/storage/materializers/keras.py,sha256=PnNVWO_VoUJRJfWyugBYdNMeuzQQT94-AAdHEvEigmc,6682
|
|
74
74
|
flowyml/storage/materializers/numpy.py,sha256=lsBvouvoXuNSvqyFaHEAQldMP9G_82D1gKSJEe4EfQE,2815
|
|
@@ -76,7 +76,9 @@ flowyml/storage/materializers/pandas.py,sha256=MTqvWNbDSvmVkXlz5cAisC790c-xiu7rg
|
|
|
76
76
|
flowyml/storage/materializers/pytorch.py,sha256=MeP14hP-2Kb2ZTVKxwQCJvJtOddXzfGxm4BKhrmUUac,4382
|
|
77
77
|
flowyml/storage/materializers/sklearn.py,sha256=JuszJrCQJW2CXJsO6b0ZMZyoKknM5XPMUoQDQ75X990,3672
|
|
78
78
|
flowyml/storage/materializers/tensorflow.py,sha256=YvKFVCTl75tnUysdhj6TzqZEzlpNMB-8XDnXh6-ewmI,5087
|
|
79
|
-
flowyml/storage/metadata.py,sha256=
|
|
79
|
+
flowyml/storage/metadata.py,sha256=MfWdKCHOu3gShOMinhmSvOXzNS5fF89-GRqQlTo2mJw,1357
|
|
80
|
+
flowyml/storage/remote.py,sha256=0Iyi6BqESe52mONVvGZ9EidqoooSnEl-QyOYfO7GOqU,22209
|
|
81
|
+
flowyml/storage/sql.py,sha256=CJ5fZMZh65swZpdpd5Q626CYA3c4fmIHQdg6j9uSl8c,34532
|
|
80
82
|
flowyml/tracking/__init__.py,sha256=H-ESGjwPN9fq1R4ptj0U1iVM5nXIYrMk9gPMRmY6Xh8,46
|
|
81
83
|
flowyml/tracking/experiment.py,sha256=Q9VDoCg7yRhgO2O6TLr4L2Jbyr3J_2JecR6lkqgJRE8,6004
|
|
82
84
|
flowyml/tracking/leaderboard.py,sha256=s6gXxvws4hIZLiLO5V_nO7iokpCq4czZGIO3MhW23do,5404
|
|
@@ -85,21 +87,23 @@ flowyml/ui/__init__.py,sha256=heh1-LhRO3qCEzPZZL4ezt4eT219y6OQbsyq7qB2mVs,269
|
|
|
85
87
|
flowyml/ui/backend/Dockerfile,sha256=hO2GU_PvbzbcIhxJ2TWI8UZwBzK_MHrCyKRk_CzqAUE,700
|
|
86
88
|
flowyml/ui/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
89
|
flowyml/ui/backend/auth.py,sha256=ivM0tKR1KUm9AZg1iht9rKpndrtjf4ojLLaTw_-HHyE,4616
|
|
88
|
-
flowyml/ui/backend/
|
|
90
|
+
flowyml/ui/backend/dependencies.py,sha256=ENGqEKEJuQvaZhRS6Ta47v-Q59TD9jsCT-a9p-OJGgE,772
|
|
91
|
+
flowyml/ui/backend/main.py,sha256=Hw_gnLNqDe7uqKtZ3KNI1QtXFNZR08M9zc5myjAIb2U,5251
|
|
89
92
|
flowyml/ui/backend/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
|
-
flowyml/ui/backend/routers/assets.py,sha256=
|
|
91
|
-
flowyml/ui/backend/routers/client.py,sha256=
|
|
93
|
+
flowyml/ui/backend/routers/assets.py,sha256=l_61CC7K0oLLqwt49mEbCarsDZsuNCQil1y9aUHTzC8,18037
|
|
94
|
+
flowyml/ui/backend/routers/client.py,sha256=66TsMk8dCczgyLVhQryNQ3ahE2xtksPXJOMB3HlR-G4,1342
|
|
92
95
|
flowyml/ui/backend/routers/execution.py,sha256=65TQIxCDtMnsBqNRzcm7f0NeQoKTF6k-axmT7r9wIRI,5909
|
|
93
|
-
flowyml/ui/backend/routers/experiments.py,sha256=
|
|
96
|
+
flowyml/ui/backend/routers/experiments.py,sha256=e-Q3PPuCULobYKb45PbS5SOY-CCX3GYjiDUimJ-NL-c,4277
|
|
94
97
|
flowyml/ui/backend/routers/leaderboard.py,sha256=T5mhZwjBusF6JGjaRO5tSmsDTles1Dkn99ki-pRzhEU,4111
|
|
95
|
-
flowyml/ui/backend/routers/metrics.py,sha256=
|
|
98
|
+
flowyml/ui/backend/routers/metrics.py,sha256=NbLQKUqBMywl1cZrdopW29Y1J9oSnT4OleBTczZftTo,5643
|
|
96
99
|
flowyml/ui/backend/routers/notifications.py,sha256=IQhRlaBM8kdqxbe_U_Kw9f1qXGDBOjYk8GCR5MAIWHA,2068
|
|
97
|
-
flowyml/ui/backend/routers/pipelines.py,sha256=
|
|
100
|
+
flowyml/ui/backend/routers/pipelines.py,sha256=wQjNX4L8oNTpagws8_lvgiMo-P_aMnqO89JrU65oNZo,6282
|
|
98
101
|
flowyml/ui/backend/routers/plugins.py,sha256=OT2rAstPMRDlU5wdz_Jy3v5C8IjXTPMz7lDC0ZOWUbg,5894
|
|
99
102
|
flowyml/ui/backend/routers/projects.py,sha256=1EMbh8ts_Dh_mgr1xMxvsj9nQuNtu409tgnFPSy7ojg,3446
|
|
100
|
-
flowyml/ui/backend/routers/runs.py,sha256=
|
|
101
|
-
flowyml/ui/backend/routers/schedules.py,sha256=
|
|
102
|
-
flowyml/ui/backend/routers/
|
|
103
|
+
flowyml/ui/backend/routers/runs.py,sha256=6I6XhytehFTRbkSNt4equArAOvqVfwO2qUGDVRoWk1A,8756
|
|
104
|
+
flowyml/ui/backend/routers/schedules.py,sha256=U0NFNt1sXWsGxWRjh8FzblM15QMXjfU-Q1CQQ5JZjmE,7516
|
|
105
|
+
flowyml/ui/backend/routers/stats.py,sha256=AF2NsM6TQmG2f-G2w6jMqjSqCNbkxoQmfu31KK4BLgo,365
|
|
106
|
+
flowyml/ui/backend/routers/traces.py,sha256=xWxEuOe6TKDrZwWkZG5D3LuHEj_pmGnhJZ-563R2H_E,2012
|
|
103
107
|
flowyml/ui/frontend/Dockerfile,sha256=BJWOdU5mnk4e2H6rARiGOO6TF-YCRxN7mOIWPv0EIAM,314
|
|
104
108
|
flowyml/ui/frontend/README.md,sha256=M5il2PEdNVCSm1zo1rZAXqQ0nTj5frCNXmi5-d1ZKIM,7099
|
|
105
109
|
flowyml/ui/frontend/dist/assets/index-DcYwrn2j.css,sha256=Ihl8TsPEyvhaBkwLySefUWbzKjdM45h99Jr6b1embmQ,72382
|
|
@@ -189,8 +193,8 @@ flowyml/utils/logging.py,sha256=PBJDFlGdp1mePS6A3g08dnGAB-v8jTlcNxEsYs9WSBo,1371
|
|
|
189
193
|
flowyml/utils/performance.py,sha256=-ne9v9ddEltiKRPk-AerM1R3Gwwd_oCRKtNyHARWd4k,8655
|
|
190
194
|
flowyml/utils/stack_config.py,sha256=STX1niArJzvu0YsqUQmrNJ0WTeMVW_setYNH36BlbVI,10826
|
|
191
195
|
flowyml/utils/validation.py,sha256=mClumVro0bl_XXxT1zWPlRI6M_iZa3z2SZ0QUdmTOqs,10199
|
|
192
|
-
flowyml-1.
|
|
193
|
-
flowyml-1.
|
|
194
|
-
flowyml-1.
|
|
195
|
-
flowyml-1.
|
|
196
|
-
flowyml-1.
|
|
196
|
+
flowyml-1.4.0.dist-info/METADATA,sha256=pq8jIVwG2gEzg6UuoCh0D5HVbfxsJLL-xu52Zn_wfNg,15453
|
|
197
|
+
flowyml-1.4.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
198
|
+
flowyml-1.4.0.dist-info/entry_points.txt,sha256=yuF-dOC4rbyJ2Aqi4CMRBxFhqIRoKO6Mhh6jfiQEVjI,48
|
|
199
|
+
flowyml-1.4.0.dist-info/licenses/LICENSE,sha256=DRBRWOEjKZQBvy1WZwxyvp2NmnC1whW9Ef7v0Oo-p_g,626
|
|
200
|
+
flowyml-1.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|