flowyml 1.1.0__py3-none-any.whl → 1.3.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.
Files changed (92) hide show
  1. flowyml/__init__.py +3 -0
  2. flowyml/assets/base.py +10 -0
  3. flowyml/assets/metrics.py +6 -0
  4. flowyml/cli/main.py +108 -2
  5. flowyml/cli/run.py +9 -2
  6. flowyml/core/execution_status.py +52 -0
  7. flowyml/core/hooks.py +106 -0
  8. flowyml/core/observability.py +210 -0
  9. flowyml/core/orchestrator.py +274 -0
  10. flowyml/core/pipeline.py +193 -231
  11. flowyml/core/project.py +34 -2
  12. flowyml/core/remote_orchestrator.py +109 -0
  13. flowyml/core/resources.py +22 -5
  14. flowyml/core/retry_policy.py +80 -0
  15. flowyml/core/step.py +18 -1
  16. flowyml/core/submission_result.py +53 -0
  17. flowyml/core/versioning.py +2 -2
  18. flowyml/integrations/keras.py +95 -22
  19. flowyml/monitoring/alerts.py +2 -2
  20. flowyml/stacks/__init__.py +15 -0
  21. flowyml/stacks/aws.py +599 -0
  22. flowyml/stacks/azure.py +295 -0
  23. flowyml/stacks/components.py +24 -2
  24. flowyml/stacks/gcp.py +158 -11
  25. flowyml/stacks/local.py +5 -0
  26. flowyml/storage/artifacts.py +15 -5
  27. flowyml/storage/materializers/__init__.py +2 -0
  28. flowyml/storage/materializers/cloudpickle.py +74 -0
  29. flowyml/storage/metadata.py +166 -5
  30. flowyml/ui/backend/main.py +41 -1
  31. flowyml/ui/backend/routers/assets.py +356 -15
  32. flowyml/ui/backend/routers/client.py +46 -0
  33. flowyml/ui/backend/routers/execution.py +13 -2
  34. flowyml/ui/backend/routers/experiments.py +48 -12
  35. flowyml/ui/backend/routers/metrics.py +213 -0
  36. flowyml/ui/backend/routers/pipelines.py +63 -7
  37. flowyml/ui/backend/routers/projects.py +33 -7
  38. flowyml/ui/backend/routers/runs.py +150 -8
  39. flowyml/ui/frontend/dist/assets/index-DcYwrn2j.css +1 -0
  40. flowyml/ui/frontend/dist/assets/index-Dlz_ygOL.js +592 -0
  41. flowyml/ui/frontend/dist/index.html +2 -2
  42. flowyml/ui/frontend/src/App.jsx +4 -1
  43. flowyml/ui/frontend/src/app/assets/page.jsx +260 -230
  44. flowyml/ui/frontend/src/app/dashboard/page.jsx +38 -7
  45. flowyml/ui/frontend/src/app/experiments/page.jsx +61 -314
  46. flowyml/ui/frontend/src/app/observability/page.jsx +277 -0
  47. flowyml/ui/frontend/src/app/pipelines/page.jsx +79 -402
  48. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectArtifactsList.jsx +151 -0
  49. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectExperimentsList.jsx +145 -0
  50. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectHeader.jsx +45 -0
  51. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectHierarchy.jsx +467 -0
  52. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectMetricsPanel.jsx +253 -0
  53. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectPipelinesList.jsx +105 -0
  54. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRelations.jsx +189 -0
  55. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRunsList.jsx +136 -0
  56. flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectTabs.jsx +95 -0
  57. flowyml/ui/frontend/src/app/projects/[projectId]/page.jsx +326 -0
  58. flowyml/ui/frontend/src/app/projects/page.jsx +13 -3
  59. flowyml/ui/frontend/src/app/runs/[runId]/page.jsx +79 -10
  60. flowyml/ui/frontend/src/app/runs/page.jsx +82 -424
  61. flowyml/ui/frontend/src/app/settings/page.jsx +1 -0
  62. flowyml/ui/frontend/src/app/tokens/page.jsx +62 -16
  63. flowyml/ui/frontend/src/components/AssetDetailsPanel.jsx +373 -0
  64. flowyml/ui/frontend/src/components/AssetLineageGraph.jsx +291 -0
  65. flowyml/ui/frontend/src/components/AssetStatsDashboard.jsx +302 -0
  66. flowyml/ui/frontend/src/components/AssetTreeHierarchy.jsx +477 -0
  67. flowyml/ui/frontend/src/components/ExperimentDetailsPanel.jsx +227 -0
  68. flowyml/ui/frontend/src/components/NavigationTree.jsx +401 -0
  69. flowyml/ui/frontend/src/components/PipelineDetailsPanel.jsx +239 -0
  70. flowyml/ui/frontend/src/components/PipelineGraph.jsx +67 -3
  71. flowyml/ui/frontend/src/components/ProjectSelector.jsx +115 -0
  72. flowyml/ui/frontend/src/components/RunDetailsPanel.jsx +298 -0
  73. flowyml/ui/frontend/src/components/header/Header.jsx +48 -1
  74. flowyml/ui/frontend/src/components/plugins/ZenMLIntegration.jsx +106 -0
  75. flowyml/ui/frontend/src/components/sidebar/Sidebar.jsx +52 -26
  76. flowyml/ui/frontend/src/components/ui/DataView.jsx +35 -17
  77. flowyml/ui/frontend/src/components/ui/ErrorBoundary.jsx +118 -0
  78. flowyml/ui/frontend/src/contexts/ProjectContext.jsx +2 -2
  79. flowyml/ui/frontend/src/contexts/ToastContext.jsx +116 -0
  80. flowyml/ui/frontend/src/layouts/MainLayout.jsx +5 -1
  81. flowyml/ui/frontend/src/router/index.jsx +4 -0
  82. flowyml/ui/frontend/src/utils/date.js +10 -0
  83. flowyml/ui/frontend/src/utils/downloads.js +11 -0
  84. flowyml/utils/config.py +6 -0
  85. flowyml/utils/stack_config.py +45 -3
  86. {flowyml-1.1.0.dist-info → flowyml-1.3.0.dist-info}/METADATA +113 -12
  87. {flowyml-1.1.0.dist-info → flowyml-1.3.0.dist-info}/RECORD +90 -53
  88. {flowyml-1.1.0.dist-info → flowyml-1.3.0.dist-info}/licenses/LICENSE +1 -1
  89. flowyml/ui/frontend/dist/assets/index-DFNQnrUj.js +0 -448
  90. flowyml/ui/frontend/dist/assets/index-pWI271rZ.css +0 -1
  91. {flowyml-1.1.0.dist-info → flowyml-1.3.0.dist-info}/WHEEL +0 -0
  92. {flowyml-1.1.0.dist-info → flowyml-1.3.0.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowyml
3
- Version: 1.1.0
3
+ Version: 1.3.0
4
4
  Summary: Next-Generation ML Pipeline Framework
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -19,16 +19,20 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Programming Language :: Python :: 3.14
20
20
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
21
  Provides-Extra: all
22
+ Provides-Extra: aws
23
+ Provides-Extra: azure
22
24
  Provides-Extra: gcp
23
25
  Provides-Extra: pytorch
24
26
  Provides-Extra: sklearn
25
27
  Provides-Extra: tensorflow
26
28
  Provides-Extra: ui
27
29
  Requires-Dist: click (>=8.0.0)
30
+ Requires-Dist: cloudpickle (>=2.0.0)
28
31
  Requires-Dist: croniter (>=2.0.1,<3.0.0)
29
32
  Requires-Dist: fastapi (>=0.122.0,<0.123.0) ; extra == "ui"
30
33
  Requires-Dist: google-cloud-aiplatform (>=1.35.0) ; extra == "gcp" or extra == "all"
31
34
  Requires-Dist: google-cloud-storage (>=2.10.0) ; extra == "gcp" or extra == "all"
35
+ Requires-Dist: httpx (>=0.24,<0.28)
32
36
  Requires-Dist: loguru (>=0.7.3,<0.8.0)
33
37
  Requires-Dist: numpy (>=1.20.0)
34
38
  Requires-Dist: pandas (>=1.3.0)
@@ -66,21 +70,25 @@ Description-Content-Type: text/markdown
66
70
 
67
71
  ---
68
72
 
69
- **flowyml** is the comprehensive ML pipeline framework that combines the **simplicity of a Python script** with the **power of an enterprise MLOps platform**.
73
+ **FlowyML** is the comprehensive ML pipeline framework that combines the **simplicity of a Python script** with the **power of an enterprise MLOps platform**.
70
74
 
71
- ## 🚀 Why flowyml?
75
+ ## 🚀 Why FlowyML?
72
76
 
73
- | Feature | flowyml | Traditional Orchestrators |
77
+ | Feature | FlowyML | Traditional Orchestrators |
74
78
  |---------|---------|---------------------------|
75
79
  | **Developer Experience** | 🐍 **Native Python** - No DSLs, no YAML hell. | 📜 Complex YAML or rigid DSLs. |
76
80
  | **Context Awareness** | 🧠 **Auto-Injection** - Params are just function args. | 🔌 Manual wiring of every parameter. |
77
81
  | **Caching** | ⚡ **Multi-Level** - Smart content-hashing & memoization. | 🐢 Basic file-timestamp checking. |
78
82
  | **Asset Management** | 📦 **First-Class Assets** - Models & Datasets with lineage. | 📁 Generic file paths only. |
79
83
  | **Architecture** | 🏗️ **Modular Stacks** - Local, Cloud, Hybrid. | 🔒 Vendor lock-in or complex setup. |
84
+ | **Deployment** | 🏢 **Local or Centralized** - Run locally or deploy as a company-wide hub. | 🧩 Fragmented or cloud-only. |
85
+ | **Flexibility** | 🔌 **Extensive Plugin Ecosystem** | Fixed integration with specific orchestrators or custom tools to be developed. |
86
+ | **Separation of Concerns** | 🪾 **Steps Grouping, branching and conditions** | Handling only orchestrator logic and task execution oriented. |
87
+ | **Features Rich** | 🌟 **Built-in experiment tracking, model leaderboard, human-in-the-loop, notifications, scheduling** | Very limited or none extra features. |
80
88
 
81
89
  ## 🚀 Feature Showcase
82
90
 
83
- flowyml is a complete toolkit for building, debugging, and deploying ML applications.
91
+ FlowyML is a complete toolkit for building, debugging, and deploying ML applications.
84
92
 
85
93
  ### 1. Zero-Boilerplate Orchestration
86
94
  Write pipelines as standard Python functions. No YAML, no DSLs.
@@ -110,18 +118,21 @@ def expensive_processing(data):
110
118
  ```
111
119
 
112
120
  ### 3. 🤖 LLM & GenAI Ready
113
- Trace token usage, latency, and costs automatically.
121
+ Trace token usage, latency, and costs automatically with built-in observability.
114
122
 
115
123
  ```python
116
124
  @step
117
125
  @trace_llm(model="gpt-4", tags=["production"])
118
126
  def generate_summary(text: str):
119
- # flowyml automatically tracks tokens, cost, and latency
127
+ # flowyml automatically tracks:
128
+ # - Token usage (prompt/completion)
129
+ # - Cost estimation
130
+ # - Latency & Success/Failure rates
120
131
  return openai.ChatCompletion.create(...)
121
132
  ```
122
133
 
123
- ### 4. ⚡ Efficient Step Grouping
124
- Group related steps to run in the same container - reduce overhead, maintain clarity.
134
+ ### 4. ⚡ Efficient Step Grouping & Separation of Concerns
135
+ Group related steps to run in the same container - reduce overhead, maintain clarity, and keep logic separate from configuration.
125
136
 
126
137
  ```python
127
138
  # Run preprocessing steps in same container (shares resources)
@@ -238,12 +249,13 @@ pipeline.run(debug=True) # Pauses at breakpoint
238
249
  ```
239
250
 
240
251
  ### 13. 📦 First-Class Assets
241
- Specialized types for ML workflows.
252
+ Assets are not just files; they are first-class citizens with lineage, metadata, and versioning.
242
253
 
243
254
  ```python
244
255
  from flowyml.core import Dataset, Model, Metrics, FeatureSet
245
256
 
246
- dataset = Dataset.create(data=df, name="training_data")
257
+ # Assets track their producer, lineage, and metadata automatically
258
+ dataset = Dataset.create(data=df, name="training_data", metadata={"source": "s3"})
247
259
  model = Model.create(artifact=trained_model, score=0.95)
248
260
  metrics = Metrics.create(values={"accuracy": 0.95})
249
261
  ```
@@ -285,11 +297,80 @@ if drift['drift_detected']:
285
297
  - **🔔 Notifications**: Slack/Email alerts.
286
298
  - **🛡️ Circuit Breakers**: Stop cascading failures.
287
299
 
288
- ### 18. 🔌 Universal Integrations
300
+ ### 18. 🏢 Centralized Hub & Docker
301
+ Ready for the enterprise. Run locally per project or deploy as a centralized entity for the company.
302
+ - **Docker Ready**: Backend and Frontend are fully dockerized.
303
+ - **Centralized Hub**: Share pipelines, artifacts, and experiments across the team.
304
+ - **Remote Execution**: Configure local clients to execute on the remote hub.
305
+
306
+ ### 19. 🔌 Universal Integrations
289
307
  - **ML Frameworks**: PyTorch, TensorFlow, Keras, Scikit-learn, HuggingFace.
290
308
  - **Cloud Providers**: AWS, GCP, Azure (via plugins).
291
309
  - **Tools**: MLflow, Weights & Biases, Great Expectations.
292
310
 
311
+ ### 20. 📊 Automatic Training History Tracking
312
+ FlowyML automatically captures and visualizes your model training progress with zero manual intervention.
313
+
314
+ ```python
315
+ from flowyml.integrations.keras import FlowymlKerasCallback
316
+
317
+ # Just add the callback - that's it!
318
+ callback = FlowymlKerasCallback(
319
+ experiment_name="my-experiment",
320
+ project="my-project"
321
+ )
322
+
323
+ model.fit(
324
+ x_train, y_train,
325
+ validation_data=(x_val, y_val),
326
+ epochs=50,
327
+ callbacks=[callback] # Auto-tracks all metrics!
328
+ )
329
+ ```
330
+
331
+ **What gets captured automatically:**
332
+ - ✅ Loss (train & validation) per epoch
333
+ - ✅ Accuracy (train & validation) per epoch
334
+ - ✅ All custom metrics (F1, precision, recall, etc.)
335
+ - ✅ Model architecture and parameters
336
+ - ✅ Interactive charts in the UI
337
+
338
+ **View beautiful training graphs in the UI:**
339
+ 1. Navigate to your project's Structure tab
340
+ 2. Click on any model artifact
341
+ 3. See interactive loss/accuracy charts over epochs!
342
+
343
+ No external tools needed - all visualization built into FlowyML.
344
+
345
+ ### 21. 📂 Project-Based Organization
346
+ Built-in multi-tenancy for managing multiple teams and initiatives.
347
+
348
+ ```python
349
+ from flowyml import Project
350
+
351
+ project = Project("recommendation_system")
352
+ pipeline = project.create_pipeline("training")
353
+
354
+ # All runs, artifacts, and metadata are automatically scoped to the project
355
+ runs = project.list_runs()
356
+ stats = project.get_stats()
357
+ ```
358
+
359
+ ### 22. 📝 Pipeline Templates
360
+ Stop reinventing the wheel. Use pre-built templates for common ML patterns.
361
+
362
+ ```python
363
+ from flowyml.core.templates import create_from_template
364
+
365
+ # Create a standard training pipeline in one line
366
+ pipeline = create_from_template(
367
+ "ml_training",
368
+ data_loader=my_loader,
369
+ trainer=my_trainer,
370
+ evaluator=my_evaluator
371
+ )
372
+ ```
373
+
293
374
  ## 📦 Installation
294
375
 
295
376
  ```bash
@@ -339,6 +420,26 @@ print(f"Run ID: {result.run_id}")
339
420
  print(f"Model Score: {result.outputs['model'].score}")
340
421
  ```
341
422
 
423
+ ### 23. 🌐 Pipeline Versioning
424
+ Git-like versioning for pipelines. Track changes, compare, rollback.
425
+
426
+ ```python
427
+ from flowyml import VersionedPipeline
428
+
429
+ pipeline = VersionedPipeline("training", version="v1.0.0")
430
+ pipeline.add_step(load_data)
431
+ pipeline.save_version()
432
+
433
+ # ... make changes ...
434
+ pipeline.version = "v1.1.0"
435
+ pipeline.save_version()
436
+
437
+ # Compare versions to see exactly what changed (steps, code, context)
438
+ diff = pipeline.compare_with("v1.0.0")
439
+ print(diff["modified_steps"]) # ['train_model']
440
+ print(diff["context_changes"]) # {'learning_rate': {'old': 0.01, 'new': 0.001}}
441
+ ```
442
+
342
443
  ## 🖥️ The flowyml UI
343
444
 
344
445
  Visualize your workflows, inspect artifacts, and monitor runs in real-time.
@@ -1,18 +1,18 @@
1
- flowyml/__init__.py,sha256=Pm6obA4XJwDQ-GZTZN_K8kf2PJ0BqTxOivdw8NwDj7A,5238
1
+ flowyml/__init__.py,sha256=9Fvv_LTjzqhoZ5js-fLsHgLcSknRqXdXViUliAKImpc,5347
2
2
  flowyml/assets/__init__.py,sha256=bbuzbW_PckrdekZEhcbJAwxhx0VWt8V4UeLLIute244,570
3
3
  flowyml/assets/artifact.py,sha256=UTcNhjCvA7AmOlIVeMAo7kkKDZUbn5meUXz7CzWRy0c,1171
4
- flowyml/assets/base.py,sha256=i88liUlHA1JuaGmPx81DC9mR0Sj0bxY0z1Mn_XtD7wU,6135
4
+ flowyml/assets/base.py,sha256=MGZiwbnwx551r_mxZXusrjAo_BvhhdNJkLlPgs7BE4M,6435
5
5
  flowyml/assets/dataset.py,sha256=tjxcT0FGmC_0vajOWAKJCIRm1O77AeALIELHHuiyTjA,3003
6
6
  flowyml/assets/featureset.py,sha256=idp0FrdlVIJwTmk5PqEYUYgIlbZ_wjVIiz1thhodHV4,10314
7
- flowyml/assets/metrics.py,sha256=YpoUj7-bET_65DpJVDD0HP4B7dsjBw9FtPbfSHW9WPM,3060
7
+ flowyml/assets/metrics.py,sha256=fwuk6j0qg0euwb9n-keSn_au_Nep8Cxr_xnrkMQqlMg,3277
8
8
  flowyml/assets/model.py,sha256=Fa7Lw5AfrkLM_L16tNPCy7vSButMWE_W3wixC-pVANk,2649
9
9
  flowyml/assets/registry.py,sha256=aYZOeRFGERgLCtUyVAtW7MbFlSofAN1sBSfO2FNj4ls,4830
10
10
  flowyml/assets/report.py,sha256=CR1aI_08GereO-qsVwvy4JdG5_Du5rMcTfoqJ_1jmu8,9207
11
11
  flowyml/cli/__init__.py,sha256=bMA7grr-wiy3LeAjGFSeSG2WQwlXDnQKIeFP7X4-HhM,83
12
12
  flowyml/cli/experiment.py,sha256=ryPzfOlPKtCksjW9E7umJEVmE_5lNjAZqacbYX-azos,6284
13
13
  flowyml/cli/init.py,sha256=FAlk_xhiCYYI_HoiVBqPfiZVC4mGJmDWxqY7R77E7UY,6204
14
- flowyml/cli/main.py,sha256=S7Uo6PgSvPQYsfISHVMcjd2lcrNtIfDipa5068KhegE,10542
15
- flowyml/cli/run.py,sha256=O70runTFPNyO9T2rpOboSI9Ay5Fw5DGXgy4BrCb_LwI,2188
14
+ flowyml/cli/main.py,sha256=zXQ2tFAurWNMGSZNXTBkqs4NqRBdljAKvsVn7LcIx3o,14528
15
+ flowyml/cli/run.py,sha256=bkpEhE9LOqP3baNE0_inDGw29eYfToyb-8pCUS8084A,2293
16
16
  flowyml/cli/stack_cli.py,sha256=XrJnOVq9_p6gjurxIV1a-20kAFZutEN58Vdzi2hpm74,16822
17
17
  flowyml/cli/ui.py,sha256=0_R6-YdmtSTWPVZJWjdYV-4FEjSzuOqtlHwz4RmirkA,874
18
18
  flowyml/core/__init__.py,sha256=zvRAQQ8ySPrDXfjLb2wmg9kibbCfGPs69Fi86xkuv2A,1494
@@ -23,22 +23,29 @@ flowyml/core/checkpoint.py,sha256=aR9iFqKq0kQxanfT9D4nZrBMfdpD1dSlS2E53S18muM,46
23
23
  flowyml/core/conditional.py,sha256=m9ekYqLwVfB8WjAiS7Y4a3AcWSBFzTJh2lx-ZWFyumU,9168
24
24
  flowyml/core/context.py,sha256=M0_K_REzIByJlF-2INCgHqDWFDKXmNQb-2HSmPt_WIY,4816
25
25
  flowyml/core/error_handling.py,sha256=TovzbOFzQYBHMMM8NjsR8WcbmbdtVjXuW8_fsdbgsPA,11952
26
+ flowyml/core/execution_status.py,sha256=gKLyWbJHo2mfjcsAhORCRqu14E2XEO0NaqTE9wfMC-M,1329
26
27
  flowyml/core/executor.py,sha256=oXVUsh-W1oC357usZvU6qrlYx1NhIN03Ux5FTMQonf4,12328
27
28
  flowyml/core/graph.py,sha256=drVezsgYwva-b8X5FsjExtaW-7NsjYMkchTIPYyb5HQ,6065
29
+ flowyml/core/hooks.py,sha256=UOqrNY1m3lmVql1FRls6AXDNAV3dxxZl-zO6ijEeRW8,4022
30
+ flowyml/core/observability.py,sha256=vu327Qi0hCuwOY_S_bqRM6oRV9rDlqDnxGbKJYb0Y2E,7039
31
+ flowyml/core/orchestrator.py,sha256=S3dwRykDAOoqBMsHCrgJcNmTemKCWN20Ohp_eWHm-NA,10807
28
32
  flowyml/core/parallel.py,sha256=KGstDu32i9FFKZV0bBRrm1kl3bKjcHmL2js48dVjWlk,12492
29
- flowyml/core/pipeline.py,sha256=Ahv4If8oTq893Z2D2zVB3PKeaQ5o_NGFbiMSvthDcuc,30277
30
- flowyml/core/project.py,sha256=F5_SAzw82EUE1PsqdeDEgnlh8g15IbjPGy8Y_OjRtIA,7923
31
- flowyml/core/resources.py,sha256=vfF07jJdrIvei0G3LJVuSYzyTPPquY12Xt-ltKpwl1s,13822
33
+ flowyml/core/pipeline.py,sha256=ZA1WrdYAJXyBajntDoy-2lf0OQTTQjFME4CfHiJNoMw,27417
34
+ flowyml/core/project.py,sha256=e6DVQYvNpOy0zfWVYzzUOQM60LH6rh-bui5Xpf5mqqA,8879
35
+ flowyml/core/remote_orchestrator.py,sha256=LpHlNQslq14OliNZogBGf0fpu6c5n9T7f3BpftahM8Q,3527
36
+ flowyml/core/resources.py,sha256=CE1XrAMf6hzV_AO0CRAaq0rZqL84LdMXsIXDBnTclGs,14445
37
+ flowyml/core/retry_policy.py,sha256=yNvFlrIypXAObN2zH3eCnVq50wtk-Bq4eHDi2ZvE690,2371
32
38
  flowyml/core/scheduler.py,sha256=af3xKs48uX8SjJItjbfINZc3Cv8U711KTgSRTmZhRQI,22115
33
39
  flowyml/core/scheduler_config.py,sha256=4VF_AKKU_AcHXURZjE77ff8Uhm2eO7v_nWbs1bq7Z38,1237
34
- flowyml/core/step.py,sha256=LOec72XuuHpMuRcz9gc_3JjWlcfYBWz-fVEuLXBiHqA,6822
40
+ flowyml/core/step.py,sha256=h_y4Yx_uJSL6D8jaL1vhAjtYFUjt-64RGsJHapJxCss,7871
35
41
  flowyml/core/step_grouping.py,sha256=wBMZbOLZW5ghN8n8J3CmzKFKTaytRzrLkHJ-AwCuP5E,9941
42
+ flowyml/core/submission_result.py,sha256=P-Gxm1OoY6cJs0rtaX6vhgTcWV8jecU4KeUmOCHBVHI,1711
36
43
  flowyml/core/templates.py,sha256=r7WbxZv8-BV3_3oX27ACGSitIsmNbNd4VeitpI2uJeg,6359
37
- flowyml/core/versioning.py,sha256=DvN3teqPR6N2h1nGX3fmfxv9Q62Mh9JpGES39gmnGlw,7074
44
+ flowyml/core/versioning.py,sha256=kpYLJ7YBTfGduZmy45-qcnJLOIFqsIcc6WIisObVKYE,7080
38
45
  flowyml/integrations/__init__.py,sha256=SQWPFwFs_1gLGlJ6TDo2bcFKwBrv1PkwhZvEiELV1ok,28
39
- flowyml/integrations/keras.py,sha256=k8U77ti44lGVx5GbTp0bmS_3Ex-8bSRqZQYIJyBDe6M,4507
46
+ flowyml/integrations/keras.py,sha256=L-qX5Luhah_XfLMsfx7BMXTYs2b_hg2fMJWf78ydAJg,8216
40
47
  flowyml/monitoring/__init__.py,sha256=nkqmfdvLGMd44NfrIvH2vwVZBJGDVUn-qpei192WJp4,33
41
- flowyml/monitoring/alerts.py,sha256=gVYOGtPt1FUJU_9yDmcEUvsFF7z8i0RqVDOrapLwLS4,1571
48
+ flowyml/monitoring/alerts.py,sha256=P0ZYYTQGTKB8-kgbqOIv-kbfdAbdP0NO8o7NU8FRgtg,1577
42
49
  flowyml/monitoring/data.py,sha256=wCMXftt-MSgY2uYWiJzcHcn9jMXl8PkRwn7RD5Umeeg,2863
43
50
  flowyml/monitoring/llm.py,sha256=ULq4rmsQ_BY_QoekztG-NwqMuj4UkQnP1AuzhRfjmq4,4801
44
51
  flowyml/monitoring/monitor.py,sha256=rdhUUVYUSyGNm3fQPRc3qS8Z7fr3S_d-lOxJQdwNA8o,1448
@@ -46,27 +53,30 @@ flowyml/monitoring/notifications.py,sha256=Z0pzuUL5cI_9oKy3mEcyYFsv5GgK7HHXtYy_d
46
53
  flowyml/registry/__init__.py,sha256=fClcK1W1hxBvjaHvXZYK9-VIW7R7Oc1hWf_rqnpnzPw,196
47
54
  flowyml/registry/model_registry.py,sha256=-P4DpYikuk92NSFBvFIHrjv09U70f1zLh9GR6VONSU4,14230
48
55
  flowyml/registry/pipeline_registry.py,sha256=fEJvN5sQW-Nt-lZg5LfjMyRSKNskiOBlpPxfFq30--s,1552
49
- flowyml/stacks/__init__.py,sha256=uSDmL0oFikDQhsyr8p2OJcBwVMBzGgUzz8Y2ngNuh5w,634
56
+ flowyml/stacks/__init__.py,sha256=5FOapdb-qoXtZz0wa1_I1OZT5SBITarJjNy4WT_OyPU,1246
57
+ flowyml/stacks/aws.py,sha256=8u2TcKT-Z-PFfgaswjW87UrFi_VpA7JmK4Ev3NEYtHY,20958
58
+ flowyml/stacks/azure.py,sha256=UdEoA0bhAF3g3zbiTaNi5ldptVAm_CRYWovC3w8tsEA,10587
50
59
  flowyml/stacks/base.py,sha256=0C0s9um6mstRUfkOEYXlunn9F3H4u9XPRp8lnGSj-G4,2537
51
60
  flowyml/stacks/bridge.py,sha256=EA1ABE9mOvpZsOcH_zJwEifQCttjv3G6v9yrvhtqp-0,10919
52
- flowyml/stacks/components.py,sha256=1iTiwhRLJezJWetZN9xrzdgwsMBqfOMlTUJOFQzptRw,4298
53
- flowyml/stacks/gcp.py,sha256=H6Nm4SiPc8J2FBq2n3dqdxNzIiJFBuuDVtMWTuRhMsM,15282
54
- flowyml/stacks/local.py,sha256=BlH7HC5AG7dCNL2g6iTm4Mru--Qbu_VzoZq8FVTSwuU,3710
61
+ flowyml/stacks/components.py,sha256=fxTSJLqyH1--hyF1Nqx4HG4fGbMmPJIOfZ6az0WCggY,4929
62
+ flowyml/stacks/gcp.py,sha256=u8b4rddca1pPSHYTiZ0riK4vdCHyv160o5Oi4B_NZrw,20436
63
+ flowyml/stacks/local.py,sha256=FjxmCdH9gd3Qq8tbwW4WSsA3QwsgWCJrZJwtDmcKRsg,3858
55
64
  flowyml/stacks/migration.py,sha256=dWSOVkDWY6Y-yobmTNS0JZ1aKJw6xkRXndRN5vH8aFM,3523
56
65
  flowyml/stacks/plugin_config.py,sha256=16ggYUj7w1qYM-cwDRrpf9ydpj7C5CZytIgNDZbVdSY,2483
57
66
  flowyml/stacks/plugins.py,sha256=PRrIo_6waYyT6l73bKlfbI6_zWzGkR3I7m_5W0-GDpU,15273
58
67
  flowyml/stacks/registry.py,sha256=mAH88cuDSZ9PGNSdp8dTd_uwWJm8u2yNM4b4_n6QvK4,6329
59
68
  flowyml/storage/__init__.py,sha256=d03pJ5Q-iTMRRQNJi5dI9vYqwY3QMlUDiEIZ4AZ0o8Y,984
60
- flowyml/storage/artifacts.py,sha256=jYtFrDBoY90W1Jzzx2Hok30a0xFgqVrez5qMb6661E4,7150
61
- flowyml/storage/materializers/__init__.py,sha256=l1LQzHgWx06nQJTIfQyC4owd4eT0-2GZXVyVG7kX96k,790
69
+ flowyml/storage/artifacts.py,sha256=JCLLkDSglPdDsr-YluX70N3T61noob9-BKCbEnjcf-4,7498
70
+ flowyml/storage/materializers/__init__.py,sha256=_uqy_2lf5eHKxjjEMWaluqAHi3KLPf11cV6FYbHRAk8,899
62
71
  flowyml/storage/materializers/base.py,sha256=cY6Rd5r5nvOGM2AkGmREf77d0WvYtTN4HpIJsEDPTMs,3791
72
+ flowyml/storage/materializers/cloudpickle.py,sha256=lQ5IT-TYTi93cQ46SWJ9uNvJZKWmuHHDVZsvWTFeqwE,2285
63
73
  flowyml/storage/materializers/keras.py,sha256=PnNVWO_VoUJRJfWyugBYdNMeuzQQT94-AAdHEvEigmc,6682
64
74
  flowyml/storage/materializers/numpy.py,sha256=lsBvouvoXuNSvqyFaHEAQldMP9G_82D1gKSJEe4EfQE,2815
65
75
  flowyml/storage/materializers/pandas.py,sha256=MTqvWNbDSvmVkXlz5cAisC790c-xiu7rgW3GGPR5fsQ,5002
66
76
  flowyml/storage/materializers/pytorch.py,sha256=MeP14hP-2Kb2ZTVKxwQCJvJtOddXzfGxm4BKhrmUUac,4382
67
77
  flowyml/storage/materializers/sklearn.py,sha256=JuszJrCQJW2CXJsO6b0ZMZyoKknM5XPMUoQDQ75X990,3672
68
78
  flowyml/storage/materializers/tensorflow.py,sha256=YvKFVCTl75tnUysdhj6TzqZEzlpNMB-8XDnXh6-ewmI,5087
69
- flowyml/storage/metadata.py,sha256=uECjMvp7FKdHPZVczrZZ-pMrYG776kUrw1-xXmHp69s,28885
79
+ flowyml/storage/metadata.py,sha256=FeL16ANxt_3zUMJ3LXwPX641Ertef3RoMt1KMPt8-gU,35240
70
80
  flowyml/tracking/__init__.py,sha256=H-ESGjwPN9fq1R4ptj0U1iVM5nXIYrMk9gPMRmY6Xh8,46
71
81
  flowyml/tracking/experiment.py,sha256=Q9VDoCg7yRhgO2O6TLr4L2Jbyr3J_2JecR6lkqgJRE8,6004
72
82
  flowyml/tracking/leaderboard.py,sha256=s6gXxvws4hIZLiLO5V_nO7iokpCq4czZGIO3MhW23do,5404
@@ -75,85 +85,112 @@ flowyml/ui/__init__.py,sha256=heh1-LhRO3qCEzPZZL4ezt4eT219y6OQbsyq7qB2mVs,269
75
85
  flowyml/ui/backend/Dockerfile,sha256=hO2GU_PvbzbcIhxJ2TWI8UZwBzK_MHrCyKRk_CzqAUE,700
76
86
  flowyml/ui/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
87
  flowyml/ui/backend/auth.py,sha256=ivM0tKR1KUm9AZg1iht9rKpndrtjf4ojLLaTw_-HHyE,4616
78
- flowyml/ui/backend/main.py,sha256=We3BFkO8sa_GmqUUeIsCjyL-mzVa1FPheERv8HPZJ68,6513
88
+ flowyml/ui/backend/main.py,sha256=1jF3sDxp0mjmD0a10zaW1XnYBWO3c1et6KgASHwn080,7854
79
89
  flowyml/ui/backend/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- flowyml/ui/backend/routers/assets.py,sha256=-wXLOrcHZ4CssBLu7oBZzqVOmphphdjh6NhGrJV37CY,1356
81
- flowyml/ui/backend/routers/execution.py,sha256=r9K0xj3BScah0-wofqB_0dGe6WyOnhQC0dJxjYaTRPU,5473
82
- flowyml/ui/backend/routers/experiments.py,sha256=j9AWZKzxKzl6kvlGtT_KXWKRmyUadoDFnkM3dkGcAfA,1530
90
+ flowyml/ui/backend/routers/assets.py,sha256=4j0aq73dUSX2uGXNw172SDyc1Hm0v4JHMlwHB-V8Clc,13835
91
+ flowyml/ui/backend/routers/client.py,sha256=oVGPJiX0s8P6UeohDQFxY_X_LbTnKI0bf_hOGRq0BCg,1367
92
+ flowyml/ui/backend/routers/execution.py,sha256=65TQIxCDtMnsBqNRzcm7f0NeQoKTF6k-axmT7r9wIRI,5909
93
+ flowyml/ui/backend/routers/experiments.py,sha256=d5_wYhVnIAbyLE5mg1pe3MmbtVZYHPj41bJwbfn55uc,2856
83
94
  flowyml/ui/backend/routers/leaderboard.py,sha256=T5mhZwjBusF6JGjaRO5tSmsDTles1Dkn99ki-pRzhEU,4111
95
+ flowyml/ui/backend/routers/metrics.py,sha256=4kA1sqmfjozzejzXUKDtHA3BfoC1i9a8C0PcHKQOTCA,7107
84
96
  flowyml/ui/backend/routers/notifications.py,sha256=IQhRlaBM8kdqxbe_U_Kw9f1qXGDBOjYk8GCR5MAIWHA,2068
85
- flowyml/ui/backend/routers/pipelines.py,sha256=I2PTW5ixH-yvtfQaAuLxpRzcVuZ5PVgQeYh9f_Mu1P4,3830
97
+ flowyml/ui/backend/routers/pipelines.py,sha256=xvsRMReXDIzbY2remRfO1u7ohe90rEOe2WFn4M2uE90,5950
86
98
  flowyml/ui/backend/routers/plugins.py,sha256=OT2rAstPMRDlU5wdz_Jy3v5C8IjXTPMz7lDC0ZOWUbg,5894
87
- flowyml/ui/backend/routers/projects.py,sha256=ZDRCM7jylfUunhq6BQccR2cQKY33wSIiT3uEBBy65vQ,2316
88
- flowyml/ui/backend/routers/runs.py,sha256=Ev24rkJxBWKIfPVaxqWcZsHZzlHE9Fr2LFwbsGfvqDs,1807
99
+ flowyml/ui/backend/routers/projects.py,sha256=1EMbh8ts_Dh_mgr1xMxvsj9nQuNtu409tgnFPSy7ojg,3446
100
+ flowyml/ui/backend/routers/runs.py,sha256=vxMwGCP8yuwgMGFPt5td8IN20rbWg5EEklzjo0qwZBE,6579
89
101
  flowyml/ui/backend/routers/schedules.py,sha256=hrtpfp4NXQLGtV1jxiEuB61LDC1Y3MgikU_QCu5lWAg,8078
90
102
  flowyml/ui/backend/routers/traces.py,sha256=kFY5L_Z3kw9qrIfXp0_rHMG8DPxlqB5uUQTGjdJRhbA,2272
91
103
  flowyml/ui/frontend/Dockerfile,sha256=BJWOdU5mnk4e2H6rARiGOO6TF-YCRxN7mOIWPv0EIAM,314
92
104
  flowyml/ui/frontend/README.md,sha256=M5il2PEdNVCSm1zo1rZAXqQ0nTj5frCNXmi5-d1ZKIM,7099
93
- flowyml/ui/frontend/dist/assets/index-DFNQnrUj.js,sha256=qeQxNaQdoEykRhJKdM6fHr1yym6Xbd_Ru5xpeMGZkAg,795216
94
- flowyml/ui/frontend/dist/assets/index-pWI271rZ.css,sha256=X44fCErMyT9IJsj9T95NcFq-vhgCpYFHspEF6r55ebw,61073
95
- flowyml/ui/frontend/dist/index.html,sha256=CD7nVbQbJXLcSnI9M0HJvmvD1GmaerT6zwm97HqZN6g,375
105
+ flowyml/ui/frontend/dist/assets/index-DcYwrn2j.css,sha256=Ihl8TsPEyvhaBkwLySefUWbzKjdM45h99Jr6b1embmQ,72382
106
+ flowyml/ui/frontend/dist/assets/index-Dlz_ygOL.js,sha256=qBbzn7d6VY5CJvTRKiMqKhNOe1WkX95mdQXkz58IQxs,1227286
107
+ flowyml/ui/frontend/dist/index.html,sha256=zgisvm8eJ5xerTDK0QSaMM76zPvMtjH2PqgE3sPRrzE,375
96
108
  flowyml/ui/frontend/index.html,sha256=Y_Xm2LhORPIkzwz4VADHCmfDSuTkuT_gGVLRWpDOtis,279
97
109
  flowyml/ui/frontend/nginx.conf,sha256=MdOpD7y2SJzpxwlHgjMVadTvlXTtZaRXfWO-WHmtuls,637
98
110
  flowyml/ui/frontend/package-lock.json,sha256=jjMc3PyfVRly36IUuAex5IknFctCnj40jblvAqbkJQQ,123800
99
111
  flowyml/ui/frontend/package.json,sha256=5ZRw0GLqkApO2a1dxV32BoBD_Ro5mcFf4T9q5IABaAg,760
100
112
  flowyml/ui/frontend/postcss.config.js,sha256=YyT4lFBNiH_kipziy5I2ifedcoyTEY-7jAPL9chAzzM,92
101
- flowyml/ui/frontend/src/App.jsx,sha256=KXmNs86JZGFmIFxvtGyGaxHI-8p2LonOB00mZXnwlyE,456
102
- flowyml/ui/frontend/src/app/assets/page.jsx,sha256=O5jDNOm3544RUeXL4cEm0Oe_ppoZxyUteKDYCYYlP6c,18126
103
- flowyml/ui/frontend/src/app/dashboard/page.jsx,sha256=BtspIYeDXxSc3d4MBlzLtsWC5xcsajdmbBAHhtkvMxA,12682
113
+ flowyml/ui/frontend/src/App.jsx,sha256=FKM1y-i5uSLQK9QS5cvBVLb7m6VB6D1EXmbxDluyvEo,582
114
+ flowyml/ui/frontend/src/app/assets/page.jsx,sha256=7CgKROsk1YuPqwTXxeFgBXAnDCEuhFP0Ba5raLz6Xtw,20712
115
+ flowyml/ui/frontend/src/app/dashboard/page.jsx,sha256=ICFBg4wINIVItJ4JF6CV3SietNJrWF4THmVEuBG_lJY,14359
104
116
  flowyml/ui/frontend/src/app/experiments/[experimentId]/page.jsx,sha256=dnZ6OgiB-3T7n96JkAO_Z-iulm4yD2taXDkjRQlJRg8,12112
105
- flowyml/ui/frontend/src/app/experiments/page.jsx,sha256=YhLYIKlzbaD6vqOptT-s6CjkcxgZQYg2NETDCiTN-oc,16423
117
+ flowyml/ui/frontend/src/app/experiments/page.jsx,sha256=uqy4wNwR5lN4T7LsLgZ4heTFYqo0x7i5DiCyg1_QcpY,5623
106
118
  flowyml/ui/frontend/src/app/leaderboard/page.jsx,sha256=dQNOLrsgZ-JGrp74BRkMQIH1YBduzFo7JkC89PMoYZo,7630
107
- flowyml/ui/frontend/src/app/pipelines/page.jsx,sha256=rYLFLXTyUGHw_8n19L5LgKUSHi0Uo1Az5CmFC7A373g,20201
119
+ flowyml/ui/frontend/src/app/observability/page.jsx,sha256=RP3w7SH3HGvwW5SQnToZNxWlhYRRvfnXUQ80SFDf4CE,14494
120
+ flowyml/ui/frontend/src/app/pipelines/page.jsx,sha256=_kDIE4aoVJPg8wGSPMGG2HI7lNVse4PO9W03jjIo8Ek,6704
108
121
  flowyml/ui/frontend/src/app/plugins/page.jsx,sha256=eQR_uW2Imt4HldDb8eVvu4rkQ6SLMv5FCbr-gc6bYIg,1577
109
- flowyml/ui/frontend/src/app/projects/page.jsx,sha256=g6erCEC0vCxU2yNhmmyaljNqO1TkWwShkCosVd99owE,13956
110
- flowyml/ui/frontend/src/app/runs/[runId]/page.jsx,sha256=dpUKICkmUhae-DTjFiVmgE48jEvC5nNTRzldvQoNNPE,34966
111
- flowyml/ui/frontend/src/app/runs/page.jsx,sha256=WAa96D_m6itc8G782CNoHFFwWloYcqXoT9MGEuJ0K2Q,19102
122
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectArtifactsList.jsx,sha256=kF3UMlhywbEANvUhk26W0ij767zY2NgRqYjtSbS_y-s,6201
123
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectExperimentsList.jsx,sha256=7yvNHAzvQzT-e0tcG1VM-2UkIluO8mojZrVWr8NkQB8,6100
124
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectHeader.jsx,sha256=hPdVt-1L2bg9YqMvPcF0wWT8N6Ka0bvvdu4zWP3KEvk,2172
125
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectHierarchy.jsx,sha256=HtYhp7-RxT7a1bbbEuF_ZDdr_Ta90ua-FXYsQXRNTqQ,25882
126
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectMetricsPanel.jsx,sha256=S7WVB36zrLNG4Lz_tNzCSLl4eR1xwlr6yhfCz1VrVJU,11404
127
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectPipelinesList.jsx,sha256=3VLSBtbHcElXHcAk9zcSp069r8efPFNOlO28vRv2X2o,4635
128
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRelations.jsx,sha256=pfkCk9NJyNnUtk4Ibqnd18_MlGZgmrnmmHV831wo9nw,8308
129
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRunsList.jsx,sha256=I_DlvfdkEfqvUSkVFzY1-lwPrIuW0VNfy5YwDUN-biA,6106
130
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectTabs.jsx,sha256=oUN2TlazuhA8FWQmjVUA5IVSsnmWpsQBMpVzK-0jL-M,4768
131
+ flowyml/ui/frontend/src/app/projects/[projectId]/page.jsx,sha256=zcQ8xdkZ12zuTLBLyxSXX-_llUec_hWId5tzpAqevwI,16294
132
+ flowyml/ui/frontend/src/app/projects/page.jsx,sha256=MCZXKMijJc4nkFFpW7lwKuvOxal6j_17rXANvbPuy1I,14223
133
+ flowyml/ui/frontend/src/app/runs/[runId]/page.jsx,sha256=8rWw7H99lSV1AW5coGb1I4LZ4CEgNe26mpWxFW50Csw,38246
134
+ flowyml/ui/frontend/src/app/runs/page.jsx,sha256=St1j8fuvaUmUS_B_Ubz7OjZIgmj-QbDPXqK-wd3YhlQ,6374
112
135
  flowyml/ui/frontend/src/app/schedules/page.jsx,sha256=Ka_AmrgdVTA0AMbTdi5fc7U6XZESrFB9q2RRmCFGHBs,31347
113
- flowyml/ui/frontend/src/app/settings/page.jsx,sha256=yLWF54go6t7J_FH8GPovbx4Qzki_DMZnH-eI4nMqKA0,16342
114
- flowyml/ui/frontend/src/app/tokens/page.jsx,sha256=yZAdzliGmZqpCwv9V1z72q06jtUAgU9EX3U1c_UKaBk,20477
136
+ flowyml/ui/frontend/src/app/settings/page.jsx,sha256=bmp5UXvBNAUhBfBsZXwmraI5lleOSJzczewBdbsn0zk,16546
137
+ flowyml/ui/frontend/src/app/tokens/page.jsx,sha256=fCXTrfg5QMc5H5shf8RG3p8D4mHC8nLzu9EbeKW-ucY,21490
115
138
  flowyml/ui/frontend/src/app/traces/page.jsx,sha256=j4WdFVvmaJ-5IwufbnPJEavQISse-8iwDnBIkeMKyFM,8767
139
+ flowyml/ui/frontend/src/components/AssetDetailsPanel.jsx,sha256=P90_SHuPLcnpLMRnIhM5TUOcAZ0d920boPNO0wyQu2E,16829
140
+ flowyml/ui/frontend/src/components/AssetLineageGraph.jsx,sha256=gnqUyJfp_2eJ-00LqHwSj76GKWk3GmvlclyrEarPK9Y,11266
141
+ flowyml/ui/frontend/src/components/AssetStatsDashboard.jsx,sha256=ok6Gyw_B2UfeQDtrJySmqABOHym3lgZ2NcZr8e_I8Qg,14567
142
+ flowyml/ui/frontend/src/components/AssetTreeHierarchy.jsx,sha256=LFxgpSN8VLJ5weNuobCWB6DZIUOMcYXaaa8Sh5uC_-k,21382
143
+ flowyml/ui/frontend/src/components/ExperimentDetailsPanel.jsx,sha256=mV5PuWzNRaOdukA51sU5Imh7iD_kDMHgThdU8zt2nWY,10714
116
144
  flowyml/ui/frontend/src/components/Layout.jsx,sha256=CsoaFrWe-5iRyAsVyu2rmJqhoC2ltckEzhVscsXlmsI,5423
117
- flowyml/ui/frontend/src/components/PipelineGraph.jsx,sha256=6I9FwT0PjbPnhVN2yVE2KP4skODxgmGajJvALly7COA,10779
118
- flowyml/ui/frontend/src/components/header/Header.jsx,sha256=p9IUWTsCZMrUZPCgZJmVXeYoqSr7VA1KXxB3WaQA5ls,3366
145
+ flowyml/ui/frontend/src/components/NavigationTree.jsx,sha256=jBJdyxBE_YZvLtmGSeV7Bn0bbAMw2Y3ewCSDMbd9UTs,14775
146
+ flowyml/ui/frontend/src/components/PipelineDetailsPanel.jsx,sha256=pNM8oy-hWXQmCZJtyr_kEzgIcdJMdqdPN6Vjxwc3YQ4,10932
147
+ flowyml/ui/frontend/src/components/PipelineGraph.jsx,sha256=Bp2Gv3QteFEh1UzIOpWQLLnjUlnDH3faV3ohaXRI068,13601
148
+ flowyml/ui/frontend/src/components/ProjectSelector.jsx,sha256=L-nmTUMwy-5wD-mFizztybqnw-wd97y6mCD2Q9kh4B8,5580
149
+ flowyml/ui/frontend/src/components/RunDetailsPanel.jsx,sha256=XI4XhdZzIbohoe0nKMBrvFa5275yCT-nS-3h-l_yjZ8,14390
150
+ flowyml/ui/frontend/src/components/header/Header.jsx,sha256=9KrdWTglIg0lVu68a1fm_wnDGW7lurEhbcq3Nby6VBk,6278
119
151
  flowyml/ui/frontend/src/components/plugins/AddPluginDialog.jsx,sha256=bazhcAEgqdGGpuz8_VWmEN0BLbcAvC9rDyB9iJdQHbM,5837
120
152
  flowyml/ui/frontend/src/components/plugins/InstalledPlugins.jsx,sha256=v9IWCRT6951X26cgybZpsBLpfMbkz12TIVYjQJrvRtM,4719
121
153
  flowyml/ui/frontend/src/components/plugins/PluginBrowser.jsx,sha256=ZwP2klJlrd7gv8me-zCaKCLQyH3OT47ugW0In2y3oLE,7420
122
154
  flowyml/ui/frontend/src/components/plugins/PluginManager.jsx,sha256=q5abQ6_tw0lYxt4Nw6WFSaR6qOWfZVR2EFd_401zWrY,2795
123
- flowyml/ui/frontend/src/components/sidebar/Sidebar.jsx,sha256=7yE19S3B97XTPqwTG20w9g9sQhYZ1AMIk6YtYBE0Kcw,6626
155
+ flowyml/ui/frontend/src/components/plugins/ZenMLIntegration.jsx,sha256=7Fww6Ckte4PWta3-KRsoAiYcRL8ao-H8MmiNyDWH2i0,4864
156
+ flowyml/ui/frontend/src/components/sidebar/Sidebar.jsx,sha256=QMZ-_FN68KC-NhaKj4Z5UtWxFRC2P3aw-dYwJ3-nV18,7344
124
157
  flowyml/ui/frontend/src/components/ui/Badge.jsx,sha256=Wpx1A7-9tatujKmhHIMJtD-qno9HzPmVijUVg6okqXg,885
125
158
  flowyml/ui/frontend/src/components/ui/Button.jsx,sha256=Gcg89JegyvJThTm0Kuf4enYBpzUEInHQDB9Az8qUNpo,1200
126
159
  flowyml/ui/frontend/src/components/ui/Card.jsx,sha256=zFEHL0CK-GfxJCK1OVHmEICKP5X46WDIj3Yot0mPn9s,1311
127
160
  flowyml/ui/frontend/src/components/ui/CodeSnippet.jsx,sha256=dXGWC5vnPPLOhNMWzNUQfd1srCISTDUMjOrayF8SpCg,1739
128
161
  flowyml/ui/frontend/src/components/ui/CollapsibleCard.jsx,sha256=61AsWla3bT3Ia9bYBlRJiQEf0ykCYI9k1ykkRNbDicI,2097
129
- flowyml/ui/frontend/src/components/ui/DataView.jsx,sha256=ZamkHvc5BPbXfsS2Rcvy5EzjO1udvJ90-oY0HTfb_5s,9065
162
+ flowyml/ui/frontend/src/components/ui/DataView.jsx,sha256=xYqpczBg4HfDxaZ_6x75hXi1yQgAklQXnfY6jtIlM7E,9612
130
163
  flowyml/ui/frontend/src/components/ui/EmptyState.jsx,sha256=e300lieHAZa_lft0T42UdNQL0p0ivMTZclZ-8m-qCnM,1525
164
+ flowyml/ui/frontend/src/components/ui/ErrorBoundary.jsx,sha256=I6kIOaB1H4wgfVwGXNyHGvZVFuaOm_chpwY0KiZs_sQ,5343
131
165
  flowyml/ui/frontend/src/components/ui/ExecutionStatus.jsx,sha256=F3JiDwM43n8G359vtcEbK7B0VVPgz0ypealM_TEXiRI,3840
132
166
  flowyml/ui/frontend/src/components/ui/KeyValue.jsx,sha256=Va0V3EMXcIL9E-px5YzTStyMwJKN3UDMrf7U3UHAOig,1042
133
167
  flowyml/ui/frontend/src/components/ui/ProjectSelector.jsx,sha256=5kaptfAApb1p06G2zEHk32DLVA7bJXat0ZsD4t2PcMk,7287
134
- flowyml/ui/frontend/src/contexts/ProjectContext.jsx,sha256=2lHzXajxt48RbnqaW9uxU3NuNZ9T4MtvX6JuUc40GbU,2232
168
+ flowyml/ui/frontend/src/contexts/ProjectContext.jsx,sha256=eqZ6fqvi0ri0sRtjhOb43P0R7V3zzefrW1TVNsjpfXw,2250
135
169
  flowyml/ui/frontend/src/contexts/ThemeContext.jsx,sha256=SEm0u8B0Fl3j_rDrY1V9nn9ewPFWa_RGDhGGFE4UThE,1746
170
+ flowyml/ui/frontend/src/contexts/ToastContext.jsx,sha256=FPh0iTcXLPWTXdeyxYoxmFqAJpEz7UdpBCjORoNNqAI,4343
136
171
  flowyml/ui/frontend/src/index.css,sha256=qlzwgNU6rMFcV76mGt0sirFlTn0UcuZLCOQsSG4j8xU,188
137
- flowyml/ui/frontend/src/layouts/MainLayout.jsx,sha256=umGlzkBamVIvH7XQQfdEpCFmRPuqvZs4iJfumya59yc,869
172
+ flowyml/ui/frontend/src/layouts/MainLayout.jsx,sha256=I8z93IPeZtSBnVg-1TaSSg66SuY2OacL1p9baOMhPkE,1019
138
173
  flowyml/ui/frontend/src/main.jsx,sha256=En69d1okPsU0j6X-IBBMG-dQpZhzjVOjfJTC_WJXoFk,243
139
- flowyml/ui/frontend/src/router/index.jsx,sha256=7K--JJpp8wmSHB6XGNds_rY4QrUZhtqbD2a7Txugnlc,1805
174
+ flowyml/ui/frontend/src/router/index.jsx,sha256=1MjOxkHwPDLEofbhW3PBQzZhqfVh-6hZQ16phssMETk,2072
140
175
  flowyml/ui/frontend/src/services/pluginService.js,sha256=RnHn1-Y1OIzdHaxqVcs8P9XnkuOPQXji3g2iX2K_yoc,2837
141
176
  flowyml/ui/frontend/src/utils/api.js,sha256=IKCxa9lOkuVpYiLreCL7A8ci7m2us6UjZLsgvoiKbuU,1153
142
177
  flowyml/ui/frontend/src/utils/cn.js,sha256=yCQ-NYzf5FaTdChAmCMsYDZnRat5G1pWQLZbVxJWaaw,137
178
+ flowyml/ui/frontend/src/utils/date.js,sha256=8tYLT-TspihDCbziiYCNaBjvMa5ez155kBxVD_Z7bVE,261
179
+ flowyml/ui/frontend/src/utils/downloads.js,sha256=2w3uSOiAktiCWAj56bTSZUx3eNA9QZt1qkVCzX3YrdY,305
143
180
  flowyml/ui/frontend/tailwind.config.js,sha256=__nxDJC93bzcg8Ro9uxt4c2DiErpUCJfi4B-zNRooYg,813
144
181
  flowyml/ui/frontend/vite.config.js,sha256=b4JAsNo2yU4wRdTKf7ppBKsaw6WW447LrS0V4AbXkbk,401
145
182
  flowyml/ui/utils.py,sha256=8wePhBrcak-7DXxRIIIHSfiyY4zghf-ziRkD20tXesE,2328
146
183
  flowyml/utils/__init__.py,sha256=eA_YZEZCnCvWRdcqH8IzwWIO-LSUI5-8sbA9mU6xBto,1490
147
- flowyml/utils/config.py,sha256=MpQ5vSowkFumZFZzSnK89O37wmRg9eseAOkkr60ISPc,9464
184
+ flowyml/utils/config.py,sha256=urvWrFWwaXBkGvl5oINLenYnNnjr-EzFX3le5OQKVQ4,9812
148
185
  flowyml/utils/debug.py,sha256=zcHZxGLbuSImLdcfn1V7CwfaDzc3SunXdV-pWR_UW90,6536
149
186
  flowyml/utils/environment.py,sha256=3vqyHBldrCdENrMYtYH0rsE7bPJ2IkLulzWWwWzMCmE,9166
150
187
  flowyml/utils/git.py,sha256=TFbHPgt8xpwHE5qg8bhq369IM4yQFU53MfvsZs0auNw,7745
151
188
  flowyml/utils/logging.py,sha256=PBJDFlGdp1mePS6A3g08dnGAB-v8jTlcNxEsYs9WSBo,1371
152
189
  flowyml/utils/performance.py,sha256=-ne9v9ddEltiKRPk-AerM1R3Gwwd_oCRKtNyHARWd4k,8655
153
- flowyml/utils/stack_config.py,sha256=54vN_Ipa4ZUNIWt-D1j1Qeh85VHjfBE5fkaQMRj7-cI,9147
190
+ flowyml/utils/stack_config.py,sha256=STX1niArJzvu0YsqUQmrNJ0WTeMVW_setYNH36BlbVI,10826
154
191
  flowyml/utils/validation.py,sha256=mClumVro0bl_XXxT1zWPlRI6M_iZa3z2SZ0QUdmTOqs,10199
155
- flowyml-1.1.0.dist-info/METADATA,sha256=UBMkojleimegVvusrrtF85DklSRO6jLnMZKN5JuFJ9c,11656
156
- flowyml-1.1.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
157
- flowyml-1.1.0.dist-info/entry_points.txt,sha256=yuF-dOC4rbyJ2Aqi4CMRBxFhqIRoKO6Mhh6jfiQEVjI,48
158
- flowyml-1.1.0.dist-info/licenses/LICENSE,sha256=5mUUSQiCx-qiHXxla6s0tL-b1ZbDPNQ1Cw13oUPANsU,625
159
- flowyml-1.1.0.dist-info/RECORD,,
192
+ flowyml-1.3.0.dist-info/METADATA,sha256=k-HjDHgGiSM3OaGLvJhH_8HEbeSGcJ7v3W7qfBBWrGU,15376
193
+ flowyml-1.3.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
194
+ flowyml-1.3.0.dist-info/entry_points.txt,sha256=yuF-dOC4rbyJ2Aqi4CMRBxFhqIRoKO6Mhh6jfiQEVjI,48
195
+ flowyml-1.3.0.dist-info/licenses/LICENSE,sha256=DRBRWOEjKZQBvy1WZwxyvp2NmnC1whW9Ef7v0Oo-p_g,626
196
+ flowyml-1.3.0.dist-info/RECORD,,
@@ -2,7 +2,7 @@ Apache License
2
2
  Version 2.0, January 2004
3
3
  http://www.apache.org/licenses/
4
4
 
5
- Copyright 2024 Flowy Team
5
+ Copyright 2024 UnicoLab.ai
6
6
 
7
7
  Licensed under the Apache License, Version 2.0 (the "License");
8
8
  you may not use this file except in compliance with the License.