hydraflow 0.18.4__tar.gz → 0.19.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 (109) hide show
  1. {hydraflow-0.18.4 → hydraflow-0.19.0}/PKG-INFO +1 -1
  2. {hydraflow-0.18.4 → hydraflow-0.19.0}/pyproject.toml +1 -1
  3. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/run.py +2 -2
  4. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/run_collection.py +1 -12
  5. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/test_run.py +4 -8
  6. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/run/test_run_collection.py +1 -7
  7. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/test_group_by.py +1 -1
  8. {hydraflow-0.18.4 → hydraflow-0.19.0}/.devcontainer/devcontainer.json +0 -0
  9. {hydraflow-0.18.4 → hydraflow-0.19.0}/.devcontainer/postCreate.sh +0 -0
  10. {hydraflow-0.18.4 → hydraflow-0.19.0}/.devcontainer/starship.toml +0 -0
  11. {hydraflow-0.18.4 → hydraflow-0.19.0}/.gitattributes +0 -0
  12. {hydraflow-0.18.4 → hydraflow-0.19.0}/.github/workflows/ci.yaml +0 -0
  13. {hydraflow-0.18.4 → hydraflow-0.19.0}/.github/workflows/docs.yaml +0 -0
  14. {hydraflow-0.18.4 → hydraflow-0.19.0}/.github/workflows/publish.yaml +0 -0
  15. {hydraflow-0.18.4 → hydraflow-0.19.0}/.gitignore +0 -0
  16. {hydraflow-0.18.4 → hydraflow-0.19.0}/LICENSE +0 -0
  17. {hydraflow-0.18.4 → hydraflow-0.19.0}/README.md +0 -0
  18. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/getting-started/concepts.md +0 -0
  19. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/getting-started/index.md +0 -0
  20. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/getting-started/installation.md +0 -0
  21. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/index.md +0 -0
  22. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part1-applications/configuration.md +0 -0
  23. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part1-applications/execution.md +0 -0
  24. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part1-applications/index.md +0 -0
  25. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part1-applications/main-decorator.md +0 -0
  26. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part2-advanced/index.md +0 -0
  27. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part2-advanced/job-configuration.md +0 -0
  28. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part2-advanced/sweep-syntax.md +0 -0
  29. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part3-analysis/index.md +0 -0
  30. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part3-analysis/run-class.md +0 -0
  31. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part3-analysis/run-collection.md +0 -0
  32. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/part3-analysis/updating-runs.md +0 -0
  33. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/practical-tutorials/advanced.md +0 -0
  34. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/practical-tutorials/analysis.md +0 -0
  35. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/practical-tutorials/applications.md +0 -0
  36. {hydraflow-0.18.4 → hydraflow-0.19.0}/docs/practical-tutorials/index.md +0 -0
  37. {hydraflow-0.18.4 → hydraflow-0.19.0}/examples/example.py +0 -0
  38. {hydraflow-0.18.4 → hydraflow-0.19.0}/examples/hydraflow.yaml +0 -0
  39. {hydraflow-0.18.4 → hydraflow-0.19.0}/examples/submit.py +0 -0
  40. {hydraflow-0.18.4 → hydraflow-0.19.0}/mkdocs.yaml +0 -0
  41. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/__init__.py +0 -0
  42. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/cli.py +0 -0
  43. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/__init__.py +0 -0
  44. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/collection.py +0 -0
  45. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/context.py +0 -0
  46. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/group_by.py +0 -0
  47. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/io.py +0 -0
  48. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/main.py +0 -0
  49. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/core/run_info.py +0 -0
  50. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/executor/__init__.py +0 -0
  51. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/executor/aio.py +0 -0
  52. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/executor/conf.py +0 -0
  53. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/executor/io.py +0 -0
  54. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/executor/job.py +0 -0
  55. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/executor/parser.py +0 -0
  56. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/py.typed +0 -0
  57. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/utils/__init__.py +0 -0
  58. {hydraflow-0.18.4 → hydraflow-0.19.0}/src/hydraflow/utils/progress.py +0 -0
  59. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/__init__.py +0 -0
  60. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/__init__.py +0 -0
  61. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/app.py +0 -0
  62. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/conftest.py +0 -0
  63. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/hydraflow.yaml +0 -0
  64. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/submit.py +0 -0
  65. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/test_setup.py +0 -0
  66. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/test_show.py +0 -0
  67. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/cli/test_version.py +0 -0
  68. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/conftest.py +0 -0
  69. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/__init__.py +0 -0
  70. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/context/__init__.py +0 -0
  71. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/context/chdir.py +0 -0
  72. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/context/log_run.py +0 -0
  73. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/context/start_run.py +0 -0
  74. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/context/test_chdir.py +0 -0
  75. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/context/test_log_run.py +0 -0
  76. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/context/test_start_run.py +0 -0
  77. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/__init__.py +0 -0
  78. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/default.py +0 -0
  79. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/force_new_run.py +0 -0
  80. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/match_overrides.py +0 -0
  81. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/rerun_finished.py +0 -0
  82. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/skip_finished.py +0 -0
  83. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/test_default.py +0 -0
  84. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/test_dry_run.py +0 -0
  85. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/test_force_new_run.py +0 -0
  86. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/test_main.py +0 -0
  87. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/test_match_overrides.py +0 -0
  88. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/test_rerun_finished.py +0 -0
  89. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/test_skip_finished.py +0 -0
  90. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/test_update.py +0 -0
  91. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/main/update.py +0 -0
  92. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/run/__init__.py +0 -0
  93. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/run/run.py +0 -0
  94. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/run/test_run.py +0 -0
  95. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/run/test_run_info.py +0 -0
  96. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/test_collection.py +0 -0
  97. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/core/test_io.py +0 -0
  98. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/__init__.py +0 -0
  99. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/conftest.py +0 -0
  100. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/echo.py +0 -0
  101. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/read.py +0 -0
  102. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/test_aio.py +0 -0
  103. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/test_args.py +0 -0
  104. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/test_conf.py +0 -0
  105. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/test_io.py +0 -0
  106. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/test_job.py +0 -0
  107. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/executor/test_parser.py +0 -0
  108. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/utils/__init__.py +0 -0
  109. {hydraflow-0.18.4 → hydraflow-0.19.0}/tests/utils/test_progress.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hydraflow
3
- Version: 0.18.4
3
+ Version: 0.19.0
4
4
  Summary: HydraFlow seamlessly integrates Hydra and MLflow to streamline ML experiment management, combining Hydra's configuration management with MLflow's tracking capabilities.
5
5
  Project-URL: Documentation, https://daizutabi.github.io/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.18.4"
7
+ version = "0.19.0"
8
8
  description = "HydraFlow seamlessly integrates Hydra and MLflow to streamline ML experiment management, combining Hydra's configuration management with MLflow's tracking capabilities."
9
9
  readme = "README.md"
10
10
  license = { file = "LICENSE" }
@@ -140,7 +140,7 @@ class Run[C, I = None]:
140
140
  impl_factory: Callable[[Path], I] | Callable[[Path, C], I] | None = None,
141
141
  *,
142
142
  n_jobs: int = 0,
143
- ) -> RunCollection[Self, I]: ...
143
+ ) -> RunCollection[Self]: ...
144
144
 
145
145
  @classmethod
146
146
  def load(
@@ -149,7 +149,7 @@ class Run[C, I = None]:
149
149
  impl_factory: Callable[[Path], I] | Callable[[Path, C], I] | None = None,
150
150
  *,
151
151
  n_jobs: int = 0,
152
- ) -> Self | RunCollection[Self, I]:
152
+ ) -> Self | RunCollection[Self]:
153
153
  """Load a Run from a run directory.
154
154
 
155
155
  Args:
@@ -40,7 +40,6 @@ Note:
40
40
 
41
41
  from __future__ import annotations
42
42
 
43
- from functools import cached_property
44
43
  from typing import TYPE_CHECKING, overload
45
44
 
46
45
  import polars as pl
@@ -56,7 +55,7 @@ if TYPE_CHECKING:
56
55
  from polars import DataFrame
57
56
 
58
57
 
59
- class RunCollection[R: Run[Any, Any], I = None](Collection[R]):
58
+ class RunCollection[R: Run[Any, Any]](Collection[R]):
60
59
  """A collection of Run instances that implements the Sequence protocol.
61
60
 
62
61
  RunCollection provides methods for filtering, sorting, grouping, and analyzing
@@ -194,16 +193,6 @@ class RunCollection[R: Run[Any, Any], I = None](Collection[R]):
194
193
  """
195
194
  return pl.concat(run.to_frame(function, *keys) for run in self)
196
195
 
197
- @cached_property
198
- def impls(self) -> Collection[I]:
199
- """Get the implementation objects for all runs in the collection.
200
-
201
- Returns:
202
- Collection[I]: A collection of implementation objects for all runs.
203
-
204
- """
205
- return Collection(run.impl for run in self)
206
-
207
196
  def iterdir(self, relative_dir: str = "") -> Iterator[Path]:
208
197
  """Iterate over the artifact directories for all runs in the collection.
209
198
 
@@ -97,19 +97,15 @@ def test_run_echo():
97
97
  assert result.exit_code == 0
98
98
  out = result.stdout
99
99
  lines = out.splitlines()
100
- assert len(lines) == 5
101
- assert "['a', 'b', 'c', '--multirun', 'name=a', 'count=1,2,3'" in lines[1]
102
- assert "['a', 'b', 'c', '--multirun', 'name=b', 'count=1,2,3'" in lines[2]
103
- assert "['a', 'b', 'c', '--multirun', 'name=c', 'count=4,5,6'" in lines[3]
104
- assert "['a', 'b', 'c', '--multirun', 'name=d', 'count=4,5,6'" in lines[4]
100
+ assert "['a', 'b', 'c', '--multirun', 'name=a', 'count=1,2,3'" in lines[-4]
101
+ assert "['a', 'b', 'c', '--multirun', 'name=b', 'count=1,2,3'" in lines[-3]
102
+ assert "['a', 'b', 'c', '--multirun', 'name=c', 'count=4,5,6'" in lines[-2]
103
+ assert "['a', 'b', 'c', '--multirun', 'name=d', 'count=4,5,6'" in lines[-1]
105
104
 
106
105
 
107
106
  def test_submit():
108
107
  result = runner.invoke(app, ["run", "submit"])
109
108
  assert result.exit_code == 0
110
- out = result.stdout
111
- lines = out.splitlines()
112
- assert len(lines) == 1
113
109
  run_dirs = list(iter_run_dirs("mlruns", "submit"))
114
110
  assert len(run_dirs) == 4
115
111
 
@@ -53,7 +53,7 @@ def rc(run_factory):
53
53
  return RunCollection(runs, Run.get)
54
54
 
55
55
 
56
- type Rc = RunCollection[Run[Config, Impl], Impl]
56
+ type Rc = RunCollection[Run[Config, Impl]]
57
57
 
58
58
 
59
59
  def test_repr(rc: Rc):
@@ -289,9 +289,3 @@ def test_concat(rc: Rc):
289
289
  assert df["size.width"].to_list()[-6:] == [10, 10, 20, 20, 30, 30]
290
290
  assert df["z"].to_list()[:6] == [20, 20, 20, 20, 20, 20]
291
291
  assert df["z"].to_list()[-6:] == [40, 40, 40, 40, 40, 40]
292
-
293
-
294
- def test_impls(rc: Rc):
295
- impls = rc.impls
296
- assert len(impls) == 12
297
- assert len(impls.filter(lambda i: i.y[0] == "1")) == 6
@@ -52,7 +52,7 @@ def rc(run_factory):
52
52
  return RunCollection(runs, Run.get)
53
53
 
54
54
 
55
- type Rc = RunCollection[Run[Config, Impl], Impl]
55
+ type Rc = RunCollection[Run[Config, Impl]]
56
56
 
57
57
 
58
58
  def test_getitem_key(rc: Rc):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes