flowyml 1.5.0__tar.gz → 1.7.0__tar.gz

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 (210) hide show
  1. {flowyml-1.5.0 → flowyml-1.7.0}/PKG-INFO +5 -3
  2. {flowyml-1.5.0 → flowyml-1.7.0}/README.md +1 -1
  3. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/__init__.py +2 -1
  4. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/featureset.py +30 -5
  5. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/metrics.py +47 -4
  6. flowyml-1.7.0/flowyml/cli/main.py +830 -0
  7. flowyml-1.7.0/flowyml/cli/models.py +444 -0
  8. flowyml-1.7.0/flowyml/cli/rich_utils.py +95 -0
  9. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/checkpoint.py +6 -1
  10. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/conditional.py +104 -0
  11. flowyml-1.7.0/flowyml/core/display.py +595 -0
  12. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/executor.py +27 -6
  13. flowyml-1.7.0/flowyml/core/orchestrator.py +767 -0
  14. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/pipeline.py +447 -11
  15. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/project.py +4 -1
  16. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/scheduler.py +225 -81
  17. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/versioning.py +13 -4
  18. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/registry/model_registry.py +1 -1
  19. flowyml-1.7.0/flowyml/ui/frontend/dist/assets/index-By4trVyv.css +1 -0
  20. flowyml-1.5.0/flowyml/ui/frontend/dist/assets/index-DF8dJaFL.js → flowyml-1.7.0/flowyml/ui/frontend/dist/assets/index-CX5RV2C9.js +118 -117
  21. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/dist/index.html +2 -2
  22. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/PipelineGraph.jsx +43 -4
  23. flowyml-1.7.0/flowyml/ui/server_manager.py +189 -0
  24. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/utils.py +66 -2
  25. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/config.py +7 -0
  26. {flowyml-1.5.0 → flowyml-1.7.0}/pyproject.toml +21 -5
  27. flowyml-1.5.0/flowyml/cli/main.py +0 -433
  28. flowyml-1.5.0/flowyml/core/orchestrator.py +0 -274
  29. flowyml-1.5.0/flowyml/ui/frontend/dist/assets/index-CBUXOWze.css +0 -1
  30. {flowyml-1.5.0 → flowyml-1.7.0}/LICENSE +0 -0
  31. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/__init__.py +0 -0
  32. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/artifact.py +0 -0
  33. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/base.py +0 -0
  34. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/dataset.py +0 -0
  35. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/model.py +0 -0
  36. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/registry.py +0 -0
  37. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/assets/report.py +0 -0
  38. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/cli/__init__.py +0 -0
  39. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/cli/experiment.py +0 -0
  40. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/cli/init.py +0 -0
  41. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/cli/run.py +0 -0
  42. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/cli/stack_cli.py +0 -0
  43. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/cli/ui.py +0 -0
  44. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/__init__.py +0 -0
  45. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/advanced_cache.py +0 -0
  46. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/approval.py +0 -0
  47. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/cache.py +0 -0
  48. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/context.py +0 -0
  49. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/error_handling.py +0 -0
  50. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/execution_status.py +0 -0
  51. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/graph.py +0 -0
  52. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/hooks.py +0 -0
  53. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/observability.py +0 -0
  54. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/parallel.py +0 -0
  55. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/remote_orchestrator.py +0 -0
  56. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/resources.py +0 -0
  57. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/retry_policy.py +0 -0
  58. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/scheduler_config.py +0 -0
  59. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/step.py +0 -0
  60. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/step_grouping.py +0 -0
  61. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/submission_result.py +0 -0
  62. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/core/templates.py +0 -0
  63. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/integrations/__init__.py +0 -0
  64. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/integrations/keras.py +0 -0
  65. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/monitoring/__init__.py +0 -0
  66. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/monitoring/alerts.py +0 -0
  67. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/monitoring/data.py +0 -0
  68. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/monitoring/llm.py +0 -0
  69. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/monitoring/monitor.py +0 -0
  70. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/monitoring/notifications.py +0 -0
  71. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/registry/__init__.py +0 -0
  72. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/registry/pipeline_registry.py +0 -0
  73. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/__init__.py +0 -0
  74. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/aws.py +0 -0
  75. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/azure.py +0 -0
  76. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/base.py +0 -0
  77. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/bridge.py +0 -0
  78. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/components.py +0 -0
  79. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/gcp.py +0 -0
  80. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/local.py +0 -0
  81. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/migration.py +0 -0
  82. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/plugin_config.py +0 -0
  83. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/plugins.py +0 -0
  84. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/stacks/registry.py +0 -0
  85. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/__init__.py +0 -0
  86. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/artifacts.py +0 -0
  87. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/__init__.py +0 -0
  88. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/base.py +0 -0
  89. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/cloudpickle.py +0 -0
  90. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/keras.py +0 -0
  91. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/numpy.py +0 -0
  92. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/pandas.py +0 -0
  93. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/pytorch.py +0 -0
  94. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/sklearn.py +0 -0
  95. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/materializers/tensorflow.py +0 -0
  96. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/metadata.py +0 -0
  97. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/remote.py +0 -0
  98. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/storage/sql.py +0 -0
  99. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/tracking/__init__.py +0 -0
  100. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/tracking/experiment.py +0 -0
  101. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/tracking/leaderboard.py +0 -0
  102. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/tracking/runs.py +0 -0
  103. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/__init__.py +0 -0
  104. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/Dockerfile +0 -0
  105. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/__init__.py +0 -0
  106. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/auth.py +0 -0
  107. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/dependencies.py +0 -0
  108. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/main.py +0 -0
  109. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/__init__.py +0 -0
  110. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/assets.py +0 -0
  111. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/client.py +0 -0
  112. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/execution.py +0 -0
  113. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/experiments.py +0 -0
  114. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/leaderboard.py +0 -0
  115. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/metrics.py +0 -0
  116. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/notifications.py +0 -0
  117. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/pipelines.py +0 -0
  118. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/plugins.py +0 -0
  119. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/projects.py +0 -0
  120. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/runs.py +0 -0
  121. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/schedules.py +0 -0
  122. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/stats.py +0 -0
  123. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/traces.py +0 -0
  124. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/backend/routers/websocket.py +0 -0
  125. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/Dockerfile +0 -0
  126. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/README.md +0 -0
  127. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/index.html +0 -0
  128. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/nginx.conf +0 -0
  129. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/package-lock.json +0 -0
  130. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/package.json +0 -0
  131. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/postcss.config.js +0 -0
  132. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/App.jsx +0 -0
  133. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/assets/page.jsx +0 -0
  134. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/compare/page.jsx +0 -0
  135. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/dashboard/page.jsx +0 -0
  136. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/experiments/[experimentId]/page.jsx +0 -0
  137. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/experiments/compare/page.jsx +0 -0
  138. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/experiments/page.jsx +0 -0
  139. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/leaderboard/page.jsx +0 -0
  140. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/observability/page.jsx +0 -0
  141. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/pipelines/page.jsx +0 -0
  142. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/plugins/page.jsx +0 -0
  143. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectArtifactsList.jsx +0 -0
  144. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectExperimentsList.jsx +0 -0
  145. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectHeader.jsx +0 -0
  146. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectHierarchy.jsx +0 -0
  147. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectMetricsPanel.jsx +0 -0
  148. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectPipelinesList.jsx +0 -0
  149. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRelations.jsx +0 -0
  150. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRunsList.jsx +0 -0
  151. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectTabs.jsx +0 -0
  152. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/[projectId]/page.jsx +0 -0
  153. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/projects/page.jsx +0 -0
  154. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/runs/[runId]/page.jsx +0 -0
  155. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/runs/page.jsx +0 -0
  156. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/schedules/page.jsx +0 -0
  157. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/settings/page.jsx +0 -0
  158. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/tokens/page.jsx +0 -0
  159. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/app/traces/page.jsx +0 -0
  160. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ArtifactViewer.jsx +0 -0
  161. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/AssetDetailsPanel.jsx +0 -0
  162. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/AssetLineageGraph.jsx +0 -0
  163. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/AssetStatsDashboard.jsx +0 -0
  164. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/AssetTreeHierarchy.jsx +0 -0
  165. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ExperimentDetailsPanel.jsx +0 -0
  166. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/Layout.jsx +0 -0
  167. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/NavigationTree.jsx +0 -0
  168. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/PipelineDetailsPanel.jsx +0 -0
  169. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ProjectSelector.jsx +0 -0
  170. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/RunDetailsPanel.jsx +0 -0
  171. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/header/Header.jsx +0 -0
  172. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/plugins/AddPluginDialog.jsx +0 -0
  173. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/plugins/InstalledPlugins.jsx +0 -0
  174. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/plugins/PluginBrowser.jsx +0 -0
  175. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/plugins/PluginManager.jsx +0 -0
  176. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/plugins/ZenMLIntegration.jsx +0 -0
  177. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/sidebar/Sidebar.jsx +0 -0
  178. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/Badge.jsx +0 -0
  179. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/Button.jsx +0 -0
  180. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/Card.jsx +0 -0
  181. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/CodeSnippet.jsx +0 -0
  182. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/CollapsibleCard.jsx +0 -0
  183. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/DataView.jsx +0 -0
  184. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/EmptyState.jsx +0 -0
  185. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/ErrorBoundary.jsx +0 -0
  186. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/ExecutionStatus.jsx +0 -0
  187. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/KeyValue.jsx +0 -0
  188. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/components/ui/ProjectSelector.jsx +0 -0
  189. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/contexts/ProjectContext.jsx +0 -0
  190. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/contexts/ThemeContext.jsx +0 -0
  191. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/contexts/ToastContext.jsx +0 -0
  192. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/index.css +0 -0
  193. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/layouts/MainLayout.jsx +0 -0
  194. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/main.jsx +0 -0
  195. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/router/index.jsx +0 -0
  196. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/services/pluginService.js +0 -0
  197. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/utils/api.js +0 -0
  198. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/utils/cn.js +0 -0
  199. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/utils/date.js +0 -0
  200. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/src/utils/downloads.js +0 -0
  201. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/tailwind.config.js +0 -0
  202. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/ui/frontend/vite.config.js +0 -0
  203. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/__init__.py +0 -0
  204. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/debug.py +0 -0
  205. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/environment.py +0 -0
  206. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/git.py +0 -0
  207. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/logging.py +0 -0
  208. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/performance.py +0 -0
  209. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/stack_config.py +0 -0
  210. {flowyml-1.5.0 → flowyml-1.7.0}/flowyml/utils/validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowyml
3
- Version: 1.5.0
3
+ Version: 1.7.0
4
4
  Summary: Next-Generation ML Pipeline Framework
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -23,13 +23,14 @@ Provides-Extra: aws
23
23
  Provides-Extra: azure
24
24
  Provides-Extra: gcp
25
25
  Provides-Extra: pytorch
26
+ Provides-Extra: rich
26
27
  Provides-Extra: sklearn
27
28
  Provides-Extra: tensorflow
28
29
  Provides-Extra: ui
29
30
  Requires-Dist: click (>=8.0.0)
30
31
  Requires-Dist: cloudpickle (>=2.0.0)
31
32
  Requires-Dist: croniter (>=2.0.1,<3.0.0)
32
- Requires-Dist: fastapi (>=0.122.0,<0.123.0) ; extra == "ui"
33
+ Requires-Dist: fastapi (>=0.122.0,<0.123.0) ; extra == "ui" or extra == "all"
33
34
  Requires-Dist: google-cloud-aiplatform (>=1.35.0) ; extra == "gcp" or extra == "all"
34
35
  Requires-Dist: google-cloud-storage (>=2.10.0) ; extra == "gcp" or extra == "all"
35
36
  Requires-Dist: httpx (>=0.24,<0.28)
@@ -41,6 +42,7 @@ Requires-Dist: pydantic (>=2.0.0)
41
42
  Requires-Dist: python-multipart (>=0.0.6) ; extra == "ui" or extra == "all"
42
43
  Requires-Dist: pytz (>=2024.1,<2025.0)
43
44
  Requires-Dist: pyyaml (>=6.0)
45
+ Requires-Dist: rich (>=13.0.0) ; extra == "rich"
44
46
  Requires-Dist: scikit-learn (>=1.0.0) ; extra == "sklearn" or extra == "all"
45
47
  Requires-Dist: sqlalchemy (>=2.0.0)
46
48
  Requires-Dist: tensorflow (>=2.12.0) ; extra == "tensorflow" or extra == "all"
@@ -254,7 +256,7 @@ pipeline.run(debug=True) # Pauses at breakpoint
254
256
  Assets are not just files; they are first-class citizens with lineage, metadata, and versioning.
255
257
 
256
258
  ```python
257
- from flowyml.core import Dataset, Model, Metrics, FeatureSet
259
+ from flowyml import Dataset, Model, Metrics, FeatureSet
258
260
 
259
261
  # Assets track their producer, lineage, and metadata automatically
260
262
  dataset = Dataset.create(data=df, name="training_data", metadata={"source": "s3"})
@@ -199,7 +199,7 @@ pipeline.run(debug=True) # Pauses at breakpoint
199
199
  Assets are not just files; they are first-class citizens with lineage, metadata, and versioning.
200
200
 
201
201
  ```python
202
- from flowyml.core import Dataset, Model, Metrics, FeatureSet
202
+ from flowyml import Dataset, Model, Metrics, FeatureSet
203
203
 
204
204
  # Assets track their producer, lineage, and metadata automatically
205
205
  dataset = Dataset.create(data=df, name="training_data", metadata={"source": "s3"})
@@ -14,7 +14,7 @@ from flowyml.core.step import step, Step
14
14
  from flowyml.core.pipeline import Pipeline
15
15
  from flowyml.core.executor import Executor, LocalExecutor
16
16
  from flowyml.core.cache import CacheStrategy
17
- from flowyml.core.conditional import Condition, ConditionalBranch, Switch, when, unless
17
+ from flowyml.core.conditional import Condition, ConditionalBranch, Switch, when, unless, If
18
18
  from flowyml.core.parallel import ParallelExecutor, DataParallelExecutor, BatchExecutor, parallel_map
19
19
  from flowyml.core.error_handling import (
20
20
  CircuitBreaker,
@@ -115,6 +115,7 @@ __all__ = [
115
115
  "Condition",
116
116
  "ConditionalBranch",
117
117
  "Switch",
118
+ "If",
118
119
  "when",
119
120
  "unless",
120
121
  # Parallel Execution
@@ -67,19 +67,36 @@ class FeatureSet(Asset):
67
67
  source_dataset: Name of source dataset
68
68
  **kwargs: Additional metadata
69
69
  """
70
- # Initialize base asset
71
- metadata = FeatureSetMetadata(
70
+ # Initialize base asset first
71
+ super().__init__(
72
72
  name=name,
73
- type="featureset",
73
+ version=kwargs.get("version"),
74
+ data=None,
75
+ parent=kwargs.get("parent"),
76
+ tags=kwargs.get("tags"),
77
+ properties=kwargs.get("properties"),
78
+ )
79
+
80
+ # Create FeatureSet-specific metadata
81
+ feature_set_metadata = FeatureSetMetadata(
82
+ asset_id=self.asset_id,
83
+ name=name,
84
+ version=self.version,
85
+ asset_type=self.__class__.__name__,
86
+ created_at=self.metadata.created_at,
87
+ created_by=self.metadata.created_by,
88
+ parent_ids=self.metadata.parent_ids,
89
+ tags=self.metadata.tags,
90
+ properties=self.metadata.properties,
74
91
  feature_names=feature_names or [],
75
92
  num_features=len(feature_names) if feature_names else 0,
76
93
  num_samples=num_samples,
77
94
  transformations=transformations or [],
78
95
  source_dataset=source_dataset,
79
- **kwargs,
80
96
  )
81
97
 
82
- super().__init__(name=name, type="featureset", metadata=metadata)
98
+ # Replace metadata with FeatureSet-specific metadata
99
+ self.metadata = feature_set_metadata
83
100
  self._data = data
84
101
 
85
102
  # Extract feature metadata if data provided
@@ -147,6 +164,11 @@ class FeatureSet(Asset):
147
164
  """Get the feature data."""
148
165
  return self._data
149
166
 
167
+ @data.setter
168
+ def data(self, value: Any) -> None:
169
+ """Set the feature data."""
170
+ self._data = value
171
+
150
172
  @property
151
173
  def feature_names(self) -> list[str]:
152
174
  """Get feature names."""
@@ -188,6 +210,7 @@ class FeatureSet(Asset):
188
210
  data: Any,
189
211
  name: str | None = None,
190
212
  feature_names: list[str] | None = None,
213
+ num_samples: int = 0,
191
214
  transformations: list[str] | None = None,
192
215
  source_dataset: str | None = None,
193
216
  **kwargs,
@@ -198,6 +221,7 @@ class FeatureSet(Asset):
198
221
  data: The feature matrix
199
222
  name: Name of the feature set (auto-generated if not provided)
200
223
  feature_names: List of feature names
224
+ num_samples: Number of samples in the feature set
201
225
  transformations: List of transformations applied
202
226
  source_dataset: Name of source dataset
203
227
  **kwargs: Additional metadata
@@ -213,6 +237,7 @@ class FeatureSet(Asset):
213
237
  name=name,
214
238
  data=data,
215
239
  feature_names=feature_names,
240
+ num_samples=num_samples,
216
241
  transformations=transformations,
217
242
  source_dataset=source_dataset,
218
243
  **kwargs,
@@ -93,18 +93,61 @@ class Metrics(Asset):
93
93
  parent: Asset | None = None,
94
94
  tags: dict[str, str] | None = None,
95
95
  properties: dict[str, Any] | None = None,
96
- **metrics,
96
+ metadata: dict[str, Any] | None = None,
97
+ metrics: dict[str, Any] | None = None,
98
+ **kwargs,
97
99
  ) -> "Metrics":
98
100
  """Factory method to create metrics.
99
101
 
102
+ Supports multiple ways to provide metrics:
103
+ 1. As keyword arguments: Metrics.create(accuracy=0.95, loss=0.05)
104
+ 2. As a dict: Metrics.create(metrics={"accuracy": 0.95, "loss": 0.05})
105
+ 3. Mixed: Metrics.create(metrics={"accuracy": 0.95}, loss=0.05)
106
+
107
+ Args:
108
+ name: Name of the metrics asset
109
+ version: Version string
110
+ parent: Parent asset for lineage
111
+ tags: Tags dictionary (or use metadata for convenience)
112
+ properties: Properties dictionary
113
+ metadata: Metadata dictionary (merged into tags and properties)
114
+ metrics: Metrics as a dictionary (alternative to **kwargs)
115
+ **kwargs: Additional metrics as keyword arguments
116
+
100
117
  Example:
118
+ >>> # Using keyword arguments
101
119
  >>> metrics = Metrics.create(accuracy=0.95, loss=0.05, training_time="2h 15m")
120
+
121
+ >>> # Using metrics dict
122
+ >>> metrics = Metrics.create(
123
+ ... name="example_metrics",
124
+ ... metrics={"test_accuracy": 0.93, "test_loss": 0.07},
125
+ ... metadata={"source": "example"},
126
+ ... )
102
127
  """
128
+ # Merge metrics dict with kwargs
129
+ all_metrics = {}
130
+ if metrics:
131
+ all_metrics.update(metrics)
132
+ all_metrics.update(kwargs)
133
+
134
+ # Handle metadata - merge into tags and properties
135
+ final_tags = tags or {}
136
+ final_properties = properties or {}
137
+ if metadata:
138
+ # If metadata contains string values, treat as tags
139
+ # Otherwise, merge into properties
140
+ for key, value in metadata.items():
141
+ if isinstance(value, str):
142
+ final_tags[key] = value
143
+ else:
144
+ final_properties[key] = value
145
+
103
146
  return cls(
104
147
  name=name or "metrics",
105
148
  version=version,
106
- data=metrics,
149
+ data=all_metrics if all_metrics else None,
107
150
  parent=parent,
108
- tags=tags,
109
- properties=properties,
151
+ tags=final_tags,
152
+ properties=final_properties,
110
153
  )