hydraflow 0.2.9__tar.gz → 0.2.11__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. {hydraflow-0.2.9 → hydraflow-0.2.11}/PKG-INFO +1 -1
  2. {hydraflow-0.2.9 → hydraflow-0.2.11}/pyproject.toml +1 -1
  3. {hydraflow-0.2.9 → hydraflow-0.2.11}/src/hydraflow/progress.py +15 -20
  4. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/scripts/progress.py +21 -28
  5. {hydraflow-0.2.9 → hydraflow-0.2.11}/.devcontainer/devcontainer.json +0 -0
  6. {hydraflow-0.2.9 → hydraflow-0.2.11}/.devcontainer/postCreate.sh +0 -0
  7. {hydraflow-0.2.9 → hydraflow-0.2.11}/.devcontainer/starship.toml +0 -0
  8. {hydraflow-0.2.9 → hydraflow-0.2.11}/.gitattributes +0 -0
  9. {hydraflow-0.2.9 → hydraflow-0.2.11}/.gitignore +0 -0
  10. {hydraflow-0.2.9 → hydraflow-0.2.11}/LICENSE +0 -0
  11. {hydraflow-0.2.9 → hydraflow-0.2.11}/README.md +0 -0
  12. {hydraflow-0.2.9 → hydraflow-0.2.11}/src/hydraflow/__init__.py +0 -0
  13. {hydraflow-0.2.9 → hydraflow-0.2.11}/src/hydraflow/asyncio.py +0 -0
  14. {hydraflow-0.2.9 → hydraflow-0.2.11}/src/hydraflow/config.py +0 -0
  15. {hydraflow-0.2.9 → hydraflow-0.2.11}/src/hydraflow/context.py +0 -0
  16. {hydraflow-0.2.9 → hydraflow-0.2.11}/src/hydraflow/info.py +0 -0
  17. {hydraflow-0.2.9 → hydraflow-0.2.11}/src/hydraflow/mlflow.py +0 -0
  18. {hydraflow-0.2.9 → hydraflow-0.2.11}/src/hydraflow/run_collection.py +0 -0
  19. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/scripts/__init__.py +0 -0
  20. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/scripts/app.py +0 -0
  21. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/scripts/watch.py +0 -0
  22. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_app.py +0 -0
  23. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_asyncio.py +0 -0
  24. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_config.py +0 -0
  25. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_context.py +0 -0
  26. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_info.py +0 -0
  27. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_log_run.py +0 -0
  28. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_mlflow.py +0 -0
  29. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_progress.py +0 -0
  30. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_run_collection.py +0 -0
  31. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_version.py +0 -0
  32. {hydraflow-0.2.9 → hydraflow-0.2.11}/tests/test_watch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: hydraflow
3
- Version: 0.2.9
3
+ Version: 0.2.11
4
4
  Summary: Hydraflow integrates Hydra and MLflow to manage and track machine learning experiments.
5
5
  Project-URL: Documentation, https://github.com/daizutabi/hydraflow
6
6
  Project-URL: Source, https://github.com/daizutabi/hydraflow
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hydraflow"
7
- version = "0.2.9"
7
+ version = "0.2.11"
8
8
  description = "Hydraflow integrates Hydra and MLflow to manage and track machine learning experiments."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -160,12 +160,11 @@ def multi_tasks_progress(
160
160
  iterables = list(iterables)
161
161
 
162
162
  with Progress(*columns, transient=transient or False, **kwargs) as progress:
163
- n = len(iterables)
163
+ task_main = progress.add_task(main_description, total=None)
164
164
 
165
- task_main = progress.add_task(main_description, total=None) if n > 1 else None
166
- tasks = [
165
+ task_ids = [
167
166
  progress.add_task(description.format(i), start=False, total=None)
168
- for i in range(n)
167
+ for i in range(len(iterables))
169
168
  ]
170
169
 
171
170
  total = {}
@@ -174,7 +173,7 @@ def multi_tasks_progress(
174
173
  def func(i: int) -> None:
175
174
  completed[i] = 0
176
175
  total[i] = None
177
- progress.start_task(tasks[i])
176
+ progress.start_task(task_ids[i])
178
177
 
179
178
  for index in iterables[i]:
180
179
  if isinstance(index, tuple):
@@ -182,21 +181,17 @@ def multi_tasks_progress(
182
181
  else:
183
182
  completed[i] = index + 1
184
183
 
185
- progress.update(tasks[i], total=total[i], completed=completed[i])
186
- if task_main is not None:
187
- if all(t is not None for t in total.values()):
188
- t = sum(total.values())
189
- else:
190
- t = None
191
- c = sum(completed.values())
192
- progress.update(task_main, total=t, completed=c)
184
+ progress.update(task_ids[i], total=total[i], completed=completed[i])
193
185
 
194
- if transient or n > 1:
195
- progress.remove_task(tasks[i])
186
+ if all(t is not None for t in total.values()):
187
+ t = sum(total.values())
188
+ else:
189
+ t = None
190
+ c = sum(completed.values())
191
+ progress.update(task_main, total=t, completed=c)
196
192
 
197
- if n > 1:
198
- it = (joblib.delayed(func)(i) for i in range(n))
199
- joblib.Parallel(n_jobs, prefer="threads")(it)
193
+ if transient is not False:
194
+ progress.remove_task(task_ids[i])
200
195
 
201
- else:
202
- func(0)
196
+ it = (joblib.delayed(func)(i) for i in range(len(iterables)))
197
+ joblib.Parallel(n_jobs, prefer="threads")(it)
@@ -13,16 +13,7 @@ from rich.progress import (
13
13
  from hydraflow import multi_tasks_progress, parallel_progress
14
14
 
15
15
 
16
- def task(total):
17
- for i in range(total or 90):
18
- if total is None:
19
- yield i
20
- else:
21
- yield i, total
22
- time.sleep(random.random() / 30)
23
-
24
-
25
- def parallel_progress_test():
16
+ def test_parallel_progress(**kwargs):
26
17
  def func(x: int) -> str:
27
18
  time.sleep(1)
28
19
  return f"result: {x}"
@@ -36,14 +27,22 @@ def parallel_progress_test():
36
27
  TimeElapsedColumn(),
37
28
  ]
38
29
 
39
- results = parallel_progress(func, it, *columns, n_jobs=4)
40
- print(results)
30
+ parallel_progress(func, it, *columns, n_jobs=-1, **kwargs)
31
+
32
+
33
+ def task(total):
34
+ for i in range(total or 90):
35
+ if total is None:
36
+ yield i
37
+ else:
38
+ yield i, total
39
+ time.sleep(random.random() / 30)
41
40
 
42
41
 
43
- def multi_tasks_progress_test(unknown_total: bool):
44
- tasks = [task(random.randint(80, 100)) for _ in range(4)]
45
- if unknown_total:
46
- tasks = [task(None), *tasks, task(None)]
42
+ def test_multi_tasks_progress(total: bool, **kwargs):
43
+ tasks = (task(random.randint(80, 100)) for _ in range(4))
44
+ if total:
45
+ tasks = (task(None), *list(tasks)[:2], task(None))
47
46
 
48
47
  columns = [
49
48
  SpinnerColumn(),
@@ -52,21 +51,15 @@ def multi_tasks_progress_test(unknown_total: bool):
52
51
  TimeElapsedColumn(),
53
52
  ]
54
53
 
55
- kwargs = {}
56
- if unknown_total:
54
+ if total:
57
55
  kwargs["main_description"] = "unknown"
58
56
 
59
57
  multi_tasks_progress(tasks, *columns, n_jobs=4, **kwargs)
60
58
 
61
59
 
62
60
  if __name__ == "__main__":
63
- parallel_progress_test()
64
-
65
- multi_tasks_progress_test(False)
66
- multi_tasks_progress_test(True)
67
- multi_tasks_progress([task(100)])
68
- multi_tasks_progress([task(None)], description="unknown")
69
-
70
- desc = "transient"
71
- multi_tasks_progress([task(100), task(None)], main_description=desc, transient=True)
72
- multi_tasks_progress([task(100)], description=desc, transient=True)
61
+ test_parallel_progress(description="parallel")
62
+ test_parallel_progress(transient=True)
63
+ test_multi_tasks_progress(False)
64
+ test_multi_tasks_progress(True, transient=False)
65
+ test_multi_tasks_progress(False, transient=True)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes