flowyml 1.6.0__py3-none-any.whl → 1.7.1__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.
@@ -5,7 +5,7 @@
5
5
  <meta charset="UTF-8" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>FlowyML</title>
8
- <script type="module" crossorigin src="/assets/index-CX5RV2C9.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-BqDQvp63.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-By4trVyv.css">
10
10
  </head>
11
11
 
@@ -144,7 +144,7 @@ export function Assets() {
144
144
  className="font-mono text-xs text-primary-600 hover:underline"
145
145
  onClick={(e) => e.stopPropagation()}
146
146
  >
147
- {asset.run_id.substring(0, 8)}
147
+ {asset.run_id?.substring(0, 8) || 'N/A'}
148
148
  </Link>
149
149
  ) : (
150
150
  <span className="font-mono text-xs text-slate-400">-</span>
@@ -283,7 +283,7 @@ function RecentRunCard({ run, index }) {
283
283
  {run.pipeline_name}
284
284
  </h4>
285
285
  <div className="flex items-center gap-2 text-xs text-slate-500 mt-0.5">
286
- <span className="font-mono">{run.run_id.substring(0, 8)}</span>
286
+ <span className="font-mono">{run.run_id?.substring(0, 8) || 'N/A'}</span>
287
287
  {run.start_time && (
288
288
  <>
289
289
  <span>•</span>
@@ -141,7 +141,7 @@ export function ExperimentDetails() {
141
141
  <td className="px-6 py-4 font-mono text-sm text-slate-700 font-medium">
142
142
  <div className="flex items-center gap-2">
143
143
  <div className="w-2 h-2 rounded-full bg-primary-400 opacity-0 group-hover:opacity-100 transition-opacity" />
144
- {run.run_id.substring(0, 12)}
144
+ {run.run_id?.substring(0, 12) || 'N/A'}
145
145
  </div>
146
146
  </td>
147
147
  <td className="px-6 py-4 text-sm text-slate-500">
@@ -117,7 +117,7 @@ export function Leaderboard() {
117
117
  </div>
118
118
  </td>
119
119
  <td className="px-6 py-4 whitespace-nowrap text-sm text-slate-500 dark:text-slate-400 font-mono">
120
- {model.run_id.substring(0, 8)}
120
+ {model.run_id?.substring(0, 8) || 'N/A'}
121
121
  </td>
122
122
  <td className="px-6 py-4 whitespace-nowrap text-sm text-slate-500 dark:text-slate-400">
123
123
  {model.timestamp ? format(new Date(model.timestamp), 'MMM d, HH:mm') : '-'}
@@ -53,7 +53,7 @@ export function ProjectRunsList({ projectId }) {
53
53
  </div>
54
54
  <div>
55
55
  <div className="font-medium text-slate-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors">
56
- {run.name || run.run_id.substring(0, 8)}
56
+ {run.name || run.run_id?.substring(0, 8) || 'N/A'}
57
57
  </div>
58
58
  <div className="text-xs text-slate-500">{run.pipeline_name}</div>
59
59
  </div>
@@ -101,12 +101,12 @@ export function ProjectRunsList({ projectId }) {
101
101
  </span>
102
102
  </div>
103
103
  <span className="text-xs font-mono text-slate-400 bg-slate-50 dark:bg-slate-900 px-2 py-1 rounded">
104
- {run.run_id.substring(0, 8)}
104
+ {run.run_id?.substring(0, 8) || 'N/A'}
105
105
  </span>
106
106
  </div>
107
107
 
108
108
  <h3 className="font-semibold text-slate-900 dark:text-white mb-1 truncate group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors">
109
- {run.name || `Run ${run.run_id.substring(0, 8)}`}
109
+ {run.name || `Run ${run.run_id?.substring(0, 8) || 'N/A'}`}
110
110
  </h3>
111
111
  <p className="text-sm text-slate-500 dark:text-slate-400 mb-4 flex items-center gap-1">
112
112
  <span className="opacity-75">Pipeline:</span>
@@ -164,7 +164,7 @@ export function RunDetails() {
164
164
  </div>
165
165
  <h2 className="text-2xl font-bold text-slate-900 dark:text-white flex items-center gap-3">
166
166
  <div className={`w-3 h-3 rounded-full ${run.status === 'completed' ? 'bg-emerald-500' : run.status === 'failed' ? 'bg-rose-500' : 'bg-amber-500'}`} />
167
- Run: <span className="font-mono text-slate-500">{run.run_id.substring(0, 8)}</span>
167
+ Run: <span className="font-mono text-slate-500">{run.run_id?.substring(0, 8) || runId?.substring(0, 8) || 'N/A'}</span>
168
168
  </h2>
169
169
  <p className="text-slate-500 dark:text-slate-400 mt-1 flex items-center gap-2">
170
170
  <Layers size={16} />
@@ -86,12 +86,15 @@ class UIServerManager:
86
86
  try:
87
87
  # Check if UI dependencies are available
88
88
  try:
89
- import uvicorn
90
-
91
- print(f"uvicorn {uvicorn.__version__}")
89
+ import uvicorn # noqa: F401 - just check import
92
90
  except ImportError:
93
91
  return False
94
92
 
93
+ # Capture host/port for closure
94
+ server_host = self._host
95
+ server_port = self._port
96
+ startup_error = {"error": None}
97
+
95
98
  # Start server in a daemon thread
96
99
  def run_server():
97
100
  try:
@@ -100,13 +103,13 @@ class UIServerManager:
100
103
  # Run uvicorn server (blocking call, but in daemon thread)
101
104
  uvicorn.run(
102
105
  "flowyml.ui.backend.main:app",
103
- host=host,
104
- port=port,
105
- log_level="warning", # Reduce noise in background
106
+ host=server_host,
107
+ port=server_port,
108
+ log_level="warning", # Show startup issues
106
109
  access_log=False,
107
110
  )
108
- except Exception:
109
- pass # Server will be stopped
111
+ except Exception as e:
112
+ startup_error["error"] = str(e)
110
113
 
111
114
  # Start in daemon thread
112
115
  self._server_thread = threading.Thread(
@@ -118,14 +121,19 @@ class UIServerManager:
118
121
  self._running = True
119
122
  self._started = True
120
123
 
121
- # Wait a bit for server to start
122
- max_wait = 5
124
+ # Wait a bit for server to start (up to 8 seconds)
125
+ max_wait = 8
123
126
  for _ in range(max_wait * 10): # Check every 100ms
124
127
  time.sleep(0.1)
125
- if is_ui_running(host, port):
128
+ # Check if server started successfully
129
+ if is_ui_running(server_host, server_port):
126
130
  return True
131
+ # Check if we have an error
132
+ if startup_error["error"]:
133
+ self._running = False
134
+ return False
127
135
 
128
- # If we get here, server didn't start
136
+ # If we get here, server didn't start in time
129
137
  self._running = False
130
138
  return False
131
139
 
flowyml/ui/utils.py CHANGED
@@ -78,12 +78,14 @@ def is_ui_running(host: str = "localhost", port: int = 8080) -> bool:
78
78
  conn = http.client.HTTPConnection(host, port, timeout=2)
79
79
  conn.request("GET", "/api/health")
80
80
  response = conn.getresponse()
81
- conn.close()
82
81
 
83
82
  # Check if response is successful and from flowyml
83
+ # Note: must read data BEFORE closing connection
84
84
  if response.status == 200:
85
85
  data = response.read().decode("utf-8")
86
+ conn.close()
86
87
  return "flowyml" in data.lower() or "ok" in data.lower()
88
+ conn.close()
87
89
  return False
88
90
  except Exception:
89
91
  return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowyml
3
- Version: 1.6.0
3
+ Version: 1.7.1
4
4
  Summary: Next-Generation ML Pipeline Framework
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -11,7 +11,7 @@ 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=nwRVRqGraZoDnk2L93bItShExOj7ETucACbPkXX4G2o,14934
14
+ flowyml/cli/main.py,sha256=mltcYGsH-xdvGE5itDoORDyCjyuiNvnS9Ui9-J_qETU,29613
15
15
  flowyml/cli/models.py,sha256=fg5Ry3J_FaPpoHtnm4Ou-wNGMTrNS9ufYZhdonIZhKU,17772
16
16
  flowyml/cli/rich_utils.py,sha256=-jUZ71oNYVc9O3doCuw0Tx6EBuiNb-erIVXhOFJTEEc,2645
17
17
  flowyml/cli/run.py,sha256=bkpEhE9LOqP3baNE0_inDGw29eYfToyb-8pCUS8084A,2293
@@ -24,7 +24,7 @@ flowyml/core/cache.py,sha256=rIzIQ-GX2sVO7qAckpZMfmxDLKQU34XJKJp38zywIpk,6197
24
24
  flowyml/core/checkpoint.py,sha256=EBKAi0UqWkCOOiz5wyXY_SBDBWJH4POwH_E6-AI_h4s,4794
25
25
  flowyml/core/conditional.py,sha256=Huwb_dt6ZRr_OGjmA826IaXxwGQkUchGX8pnT5pHJ0g,11991
26
26
  flowyml/core/context.py,sha256=M0_K_REzIByJlF-2INCgHqDWFDKXmNQb-2HSmPt_WIY,4816
27
- flowyml/core/display.py,sha256=JviIXNwxQzGuO9EcSymBe6NmbkGYVmgnUW26tHYNqBI,19489
27
+ flowyml/core/display.py,sha256=_zVGZAlqG_0n2NxVZPavbtMpFGsV2SKFhzY5s07YIms,22138
28
28
  flowyml/core/error_handling.py,sha256=TovzbOFzQYBHMMM8NjsR8WcbmbdtVjXuW8_fsdbgsPA,11952
29
29
  flowyml/core/execution_status.py,sha256=vlQOOzglpSea4z9_csqnPkFP27jJuXjAke6EQbPMq3g,1347
30
30
  flowyml/core/executor.py,sha256=ljBV472nJyp_06meeeHmD_aomm_JdJD6y03OiPvMtEA,19168
@@ -33,7 +33,7 @@ flowyml/core/hooks.py,sha256=UOqrNY1m3lmVql1FRls6AXDNAV3dxxZl-zO6ijEeRW8,4022
33
33
  flowyml/core/observability.py,sha256=NW05m8zki1TwKeRBBCtAP1UwguMcJasGz8HHgMVbjAU,7011
34
34
  flowyml/core/orchestrator.py,sha256=8duXRaVNJD6V7s7LBTRESJC7a8dBfQau-UQIk7UFo2Y,37733
35
35
  flowyml/core/parallel.py,sha256=KGstDu32i9FFKZV0bBRrm1kl3bKjcHmL2js48dVjWlk,12492
36
- flowyml/core/pipeline.py,sha256=IY-3zK4hCpfEdDpekIMFGoGmm2RJk7GFZ4wwwXTZSus,40692
36
+ flowyml/core/pipeline.py,sha256=4Up-3Iz5_jy578l3-B8jvKkHYxLo6bmieut5jS6JNQ4,46076
37
37
  flowyml/core/project.py,sha256=7Cv_MUnXrD2e69Pzwo4ThXhGyjvP45De6CqL3Z2BtiA,8997
38
38
  flowyml/core/remote_orchestrator.py,sha256=LpHlNQslq14OliNZogBGf0fpu6c5n9T7f3BpftahM8Q,3527
39
39
  flowyml/core/resources.py,sha256=5TimjjSOEedALgNVVjRrvU-cHujKebyFjU4YxImvqZE,14402
@@ -81,7 +81,7 @@ flowyml/storage/materializers/sklearn.py,sha256=JuszJrCQJW2CXJsO6b0ZMZyoKknM5XPM
81
81
  flowyml/storage/materializers/tensorflow.py,sha256=YvKFVCTl75tnUysdhj6TzqZEzlpNMB-8XDnXh6-ewmI,5087
82
82
  flowyml/storage/metadata.py,sha256=MfWdKCHOu3gShOMinhmSvOXzNS5fF89-GRqQlTo2mJw,1357
83
83
  flowyml/storage/remote.py,sha256=0Iyi6BqESe52mONVvGZ9EidqoooSnEl-QyOYfO7GOqU,22209
84
- flowyml/storage/sql.py,sha256=WO39lsUiCshUU3ZJiE4mz-Aqxnf02RSbuir7_IKMm4s,36600
84
+ flowyml/storage/sql.py,sha256=wOENTry98q4Arw6AStFpCktjbt_Y2xxQUd-wft29Ib0,37333
85
85
  flowyml/tracking/__init__.py,sha256=H-ESGjwPN9fq1R4ptj0U1iVM5nXIYrMk9gPMRmY6Xh8,46
86
86
  flowyml/tracking/experiment.py,sha256=Q9VDoCg7yRhgO2O6TLr4L2Jbyr3J_2JecR6lkqgJRE8,6004
87
87
  flowyml/tracking/leaderboard.py,sha256=s6gXxvws4hIZLiLO5V_nO7iokpCq4czZGIO3MhW23do,5404
@@ -110,22 +110,22 @@ flowyml/ui/backend/routers/traces.py,sha256=xWxEuOe6TKDrZwWkZG5D3LuHEj_pmGnhJZ-5
110
110
  flowyml/ui/backend/routers/websocket.py,sha256=PdGJKdG78yD5nVq7KIF6MwGyzlWHbbQDOJz2eFIb9X8,4908
111
111
  flowyml/ui/frontend/Dockerfile,sha256=BJWOdU5mnk4e2H6rARiGOO6TF-YCRxN7mOIWPv0EIAM,314
112
112
  flowyml/ui/frontend/README.md,sha256=M5il2PEdNVCSm1zo1rZAXqQ0nTj5frCNXmi5-d1ZKIM,7099
113
+ flowyml/ui/frontend/dist/assets/index-BqDQvp63.js,sha256=d6Vm-LE-WMtt-V9DDO22_onj9_d9hbBxieKYnmptF1w,1294459
113
114
  flowyml/ui/frontend/dist/assets/index-By4trVyv.css,sha256=rDcWIcfFdSPd9bVKIspoO0S4fXu9QYE6j-MQtSlC6rI,76734
114
- flowyml/ui/frontend/dist/assets/index-CX5RV2C9.js,sha256=zqoVw8lcKEXOCHVaJTbMTIW-F4ihR3ujzAWEg-uvxoI,1295556
115
- flowyml/ui/frontend/dist/index.html,sha256=vAbCc_3jA5yuMTq5vElxZ1oEjf2-qUpRTUfQ6g-F13E,375
115
+ flowyml/ui/frontend/dist/index.html,sha256=TzOZfjBY7wTgc9FysKtlqlxGg6BwwsQevUTy-zjRrzs,375
116
116
  flowyml/ui/frontend/index.html,sha256=Y_Xm2LhORPIkzwz4VADHCmfDSuTkuT_gGVLRWpDOtis,279
117
117
  flowyml/ui/frontend/nginx.conf,sha256=MdOpD7y2SJzpxwlHgjMVadTvlXTtZaRXfWO-WHmtuls,637
118
118
  flowyml/ui/frontend/package-lock.json,sha256=qYEiw3iu7uXCjZcnog5tActXcv98B6shm23VW-xi_Qg,135309
119
119
  flowyml/ui/frontend/package.json,sha256=aSTOw3HpD6rsum4cq6hpWMaBvIoWEdymwtowLks2cjY,803
120
120
  flowyml/ui/frontend/postcss.config.js,sha256=YyT4lFBNiH_kipziy5I2ifedcoyTEY-7jAPL9chAzzM,92
121
121
  flowyml/ui/frontend/src/App.jsx,sha256=FKM1y-i5uSLQK9QS5cvBVLb7m6VB6D1EXmbxDluyvEo,582
122
- flowyml/ui/frontend/src/app/assets/page.jsx,sha256=7CgKROsk1YuPqwTXxeFgBXAnDCEuhFP0Ba5raLz6Xtw,20712
122
+ flowyml/ui/frontend/src/app/assets/page.jsx,sha256=3v0uuDx2qpjzqTeESSohgwqtcfAJIxWRBFmwAZQmEYI,20722
123
123
  flowyml/ui/frontend/src/app/compare/page.jsx,sha256=ue0AURS2IPRdOjJ9pOcyhA8CvLqg8g13hQQXqfniBuw,12805
124
- flowyml/ui/frontend/src/app/dashboard/page.jsx,sha256=ICFBg4wINIVItJ4JF6CV3SietNJrWF4THmVEuBG_lJY,14359
125
- flowyml/ui/frontend/src/app/experiments/[experimentId]/page.jsx,sha256=dnZ6OgiB-3T7n96JkAO_Z-iulm4yD2taXDkjRQlJRg8,12112
124
+ flowyml/ui/frontend/src/app/dashboard/page.jsx,sha256=x0esvQjgnJcNuZbYIss2iQdezJFDgJuRTR57SSoe5Ao,14369
125
+ flowyml/ui/frontend/src/app/experiments/[experimentId]/page.jsx,sha256=qerISNYw-3brqRpyUeVB5ltJBAUHS8coo3jhwdXK9HE,12122
126
126
  flowyml/ui/frontend/src/app/experiments/compare/page.jsx,sha256=Ny-G7lMKjHJ1TzLEaziu3SSFEGDSjk9Pc0wDoJ0UvEs,18984
127
127
  flowyml/ui/frontend/src/app/experiments/page.jsx,sha256=VzSTHUdKzPxdiRFld5Dar8fSJq0TDmnJe6XB723Sehs,8110
128
- flowyml/ui/frontend/src/app/leaderboard/page.jsx,sha256=dQNOLrsgZ-JGrp74BRkMQIH1YBduzFo7JkC89PMoYZo,7630
128
+ flowyml/ui/frontend/src/app/leaderboard/page.jsx,sha256=fS8K_bFWXKJ2d1mFzLiWe1aOiwLr5LlG1YpU8IenNvE,7640
129
129
  flowyml/ui/frontend/src/app/observability/page.jsx,sha256=RP3w7SH3HGvwW5SQnToZNxWlhYRRvfnXUQ80SFDf4CE,14494
130
130
  flowyml/ui/frontend/src/app/pipelines/page.jsx,sha256=_kDIE4aoVJPg8wGSPMGG2HI7lNVse4PO9W03jjIo8Ek,6704
131
131
  flowyml/ui/frontend/src/app/plugins/page.jsx,sha256=eQR_uW2Imt4HldDb8eVvu4rkQ6SLMv5FCbr-gc6bYIg,1577
@@ -136,11 +136,11 @@ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectHierarchy.js
136
136
  flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectMetricsPanel.jsx,sha256=S7WVB36zrLNG4Lz_tNzCSLl4eR1xwlr6yhfCz1VrVJU,11404
137
137
  flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectPipelinesList.jsx,sha256=3VLSBtbHcElXHcAk9zcSp069r8efPFNOlO28vRv2X2o,4635
138
138
  flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRelations.jsx,sha256=pfkCk9NJyNnUtk4Ibqnd18_MlGZgmrnmmHV831wo9nw,8308
139
- flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRunsList.jsx,sha256=I_DlvfdkEfqvUSkVFzY1-lwPrIuW0VNfy5YwDUN-biA,6106
139
+ flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectRunsList.jsx,sha256=7Mtg17o2AZJvdO5lMmojMN_eiIWqI3Ul83E7p_WnZfU,6136
140
140
  flowyml/ui/frontend/src/app/projects/[projectId]/_components/ProjectTabs.jsx,sha256=oUN2TlazuhA8FWQmjVUA5IVSsnmWpsQBMpVzK-0jL-M,4768
141
141
  flowyml/ui/frontend/src/app/projects/[projectId]/page.jsx,sha256=zcQ8xdkZ12zuTLBLyxSXX-_llUec_hWId5tzpAqevwI,16294
142
142
  flowyml/ui/frontend/src/app/projects/page.jsx,sha256=MCZXKMijJc4nkFFpW7lwKuvOxal6j_17rXANvbPuy1I,14223
143
- flowyml/ui/frontend/src/app/runs/[runId]/page.jsx,sha256=_anflsCWMSluWOHp9ZzIokm08v7MifBmltIr3Up7AZk,48430
143
+ flowyml/ui/frontend/src/app/runs/[runId]/page.jsx,sha256=xkclPCDZXxdsTmIrMaSe8gtH6h4wiKw6UuURHWVZ2jE,48466
144
144
  flowyml/ui/frontend/src/app/runs/page.jsx,sha256=6laWDlYu3uDx6chrZS9eKV_W9k98JQQrpxjp78j10HI,8884
145
145
  flowyml/ui/frontend/src/app/schedules/page.jsx,sha256=Ka_AmrgdVTA0AMbTdi5fc7U6XZESrFB9q2RRmCFGHBs,31347
146
146
  flowyml/ui/frontend/src/app/settings/page.jsx,sha256=a4Z99Rov6F7B12IecimDHEzXN36oBBHv6nsubDNHGQk,16571
@@ -190,8 +190,8 @@ flowyml/ui/frontend/src/utils/date.js,sha256=8tYLT-TspihDCbziiYCNaBjvMa5ez155kBx
190
190
  flowyml/ui/frontend/src/utils/downloads.js,sha256=2w3uSOiAktiCWAj56bTSZUx3eNA9QZt1qkVCzX3YrdY,305
191
191
  flowyml/ui/frontend/tailwind.config.js,sha256=__nxDJC93bzcg8Ro9uxt4c2DiErpUCJfi4B-zNRooYg,813
192
192
  flowyml/ui/frontend/vite.config.js,sha256=b4JAsNo2yU4wRdTKf7ppBKsaw6WW447LrS0V4AbXkbk,401
193
- flowyml/ui/server_manager.py,sha256=vUUt_vFIBPdVH9_wuphWZrKHj1lFo1T16CitqimJj1M,5864
194
- flowyml/ui/utils.py,sha256=Hi1YtCan56nYKeruE5zrlNWUHRw7RLnrZP6jNHfjigA,4434
193
+ flowyml/ui/server_manager.py,sha256=Se37U4aXnzZsG4oh5RmKnGmmisXQ-8lOhaod0QbzSzc,6274
194
+ flowyml/ui/utils.py,sha256=FeM5zga3Dbbn_HRKRRdjLrt0HbnCrxXk0NN7NqPeJII,4516
195
195
  flowyml/utils/__init__.py,sha256=eA_YZEZCnCvWRdcqH8IzwWIO-LSUI5-8sbA9mU6xBto,1490
196
196
  flowyml/utils/config.py,sha256=Oeywfo2vptI0-yF28AwmtIbf3fb-2SME-zbkfKfQgqs,10280
197
197
  flowyml/utils/debug.py,sha256=zcHZxGLbuSImLdcfn1V7CwfaDzc3SunXdV-pWR_UW90,6536
@@ -201,8 +201,8 @@ flowyml/utils/logging.py,sha256=PBJDFlGdp1mePS6A3g08dnGAB-v8jTlcNxEsYs9WSBo,1371
201
201
  flowyml/utils/performance.py,sha256=-ne9v9ddEltiKRPk-AerM1R3Gwwd_oCRKtNyHARWd4k,8655
202
202
  flowyml/utils/stack_config.py,sha256=STX1niArJzvu0YsqUQmrNJ0WTeMVW_setYNH36BlbVI,10826
203
203
  flowyml/utils/validation.py,sha256=mClumVro0bl_XXxT1zWPlRI6M_iZa3z2SZ0QUdmTOqs,10199
204
- flowyml-1.6.0.dist-info/METADATA,sha256=5S8xZHHAj9G9lAI8us_hQxUNUlDNLz2QfDz3NJhRGrw,15536
205
- flowyml-1.6.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
206
- flowyml-1.6.0.dist-info/entry_points.txt,sha256=yuF-dOC4rbyJ2Aqi4CMRBxFhqIRoKO6Mhh6jfiQEVjI,48
207
- flowyml-1.6.0.dist-info/licenses/LICENSE,sha256=DRBRWOEjKZQBvy1WZwxyvp2NmnC1whW9Ef7v0Oo-p_g,626
208
- flowyml-1.6.0.dist-info/RECORD,,
204
+ flowyml-1.7.1.dist-info/METADATA,sha256=tsNI5DXRlVA4DTqmyop01l4i9o6aI3BdTP7sp-5oNO4,15536
205
+ flowyml-1.7.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
206
+ flowyml-1.7.1.dist-info/entry_points.txt,sha256=yuF-dOC4rbyJ2Aqi4CMRBxFhqIRoKO6Mhh6jfiQEVjI,48
207
+ flowyml-1.7.1.dist-info/licenses/LICENSE,sha256=DRBRWOEjKZQBvy1WZwxyvp2NmnC1whW9Ef7v0Oo-p_g,626
208
+ flowyml-1.7.1.dist-info/RECORD,,