hydraflow 0.18.3__tar.gz → 0.18.4__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.3 → hydraflow-0.18.4}/PKG-INFO +1 -1
  2. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part3-analysis/run-class.md +19 -20
  3. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part3-analysis/run-collection.md +4 -4
  4. {hydraflow-0.18.3 → hydraflow-0.18.4}/pyproject.toml +2 -2
  5. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/run.py +3 -3
  6. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/run_collection.py +4 -4
  7. {hydraflow-0.18.3 → hydraflow-0.18.4}/.devcontainer/devcontainer.json +0 -0
  8. {hydraflow-0.18.3 → hydraflow-0.18.4}/.devcontainer/postCreate.sh +0 -0
  9. {hydraflow-0.18.3 → hydraflow-0.18.4}/.devcontainer/starship.toml +0 -0
  10. {hydraflow-0.18.3 → hydraflow-0.18.4}/.gitattributes +0 -0
  11. {hydraflow-0.18.3 → hydraflow-0.18.4}/.github/workflows/ci.yaml +0 -0
  12. {hydraflow-0.18.3 → hydraflow-0.18.4}/.github/workflows/docs.yaml +0 -0
  13. {hydraflow-0.18.3 → hydraflow-0.18.4}/.github/workflows/publish.yaml +0 -0
  14. {hydraflow-0.18.3 → hydraflow-0.18.4}/.gitignore +0 -0
  15. {hydraflow-0.18.3 → hydraflow-0.18.4}/LICENSE +0 -0
  16. {hydraflow-0.18.3 → hydraflow-0.18.4}/README.md +0 -0
  17. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/getting-started/concepts.md +0 -0
  18. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/getting-started/index.md +0 -0
  19. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/getting-started/installation.md +0 -0
  20. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/index.md +0 -0
  21. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part1-applications/configuration.md +0 -0
  22. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part1-applications/execution.md +0 -0
  23. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part1-applications/index.md +0 -0
  24. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part1-applications/main-decorator.md +0 -0
  25. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part2-advanced/index.md +0 -0
  26. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part2-advanced/job-configuration.md +0 -0
  27. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part2-advanced/sweep-syntax.md +0 -0
  28. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part3-analysis/index.md +0 -0
  29. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/part3-analysis/updating-runs.md +0 -0
  30. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/practical-tutorials/advanced.md +0 -0
  31. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/practical-tutorials/analysis.md +0 -0
  32. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/practical-tutorials/applications.md +0 -0
  33. {hydraflow-0.18.3 → hydraflow-0.18.4}/docs/practical-tutorials/index.md +0 -0
  34. {hydraflow-0.18.3 → hydraflow-0.18.4}/examples/example.py +0 -0
  35. {hydraflow-0.18.3 → hydraflow-0.18.4}/examples/hydraflow.yaml +0 -0
  36. {hydraflow-0.18.3 → hydraflow-0.18.4}/examples/submit.py +0 -0
  37. {hydraflow-0.18.3 → hydraflow-0.18.4}/mkdocs.yaml +0 -0
  38. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/__init__.py +0 -0
  39. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/cli.py +0 -0
  40. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/__init__.py +0 -0
  41. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/collection.py +0 -0
  42. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/context.py +0 -0
  43. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/group_by.py +0 -0
  44. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/io.py +0 -0
  45. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/main.py +0 -0
  46. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/core/run_info.py +0 -0
  47. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/executor/__init__.py +0 -0
  48. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/executor/aio.py +0 -0
  49. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/executor/conf.py +0 -0
  50. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/executor/io.py +0 -0
  51. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/executor/job.py +0 -0
  52. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/executor/parser.py +0 -0
  53. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/py.typed +0 -0
  54. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/utils/__init__.py +0 -0
  55. {hydraflow-0.18.3 → hydraflow-0.18.4}/src/hydraflow/utils/progress.py +0 -0
  56. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/__init__.py +0 -0
  57. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/__init__.py +0 -0
  58. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/app.py +0 -0
  59. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/conftest.py +0 -0
  60. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/hydraflow.yaml +0 -0
  61. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/submit.py +0 -0
  62. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/test_run.py +0 -0
  63. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/test_setup.py +0 -0
  64. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/test_show.py +0 -0
  65. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/cli/test_version.py +0 -0
  66. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/conftest.py +0 -0
  67. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/__init__.py +0 -0
  68. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/context/__init__.py +0 -0
  69. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/context/chdir.py +0 -0
  70. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/context/log_run.py +0 -0
  71. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/context/start_run.py +0 -0
  72. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/context/test_chdir.py +0 -0
  73. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/context/test_log_run.py +0 -0
  74. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/context/test_start_run.py +0 -0
  75. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/__init__.py +0 -0
  76. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/default.py +0 -0
  77. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/force_new_run.py +0 -0
  78. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/match_overrides.py +0 -0
  79. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/rerun_finished.py +0 -0
  80. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/skip_finished.py +0 -0
  81. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/test_default.py +0 -0
  82. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/test_dry_run.py +0 -0
  83. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/test_force_new_run.py +0 -0
  84. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/test_main.py +0 -0
  85. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/test_match_overrides.py +0 -0
  86. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/test_rerun_finished.py +0 -0
  87. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/test_skip_finished.py +0 -0
  88. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/test_update.py +0 -0
  89. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/main/update.py +0 -0
  90. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/run/__init__.py +0 -0
  91. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/run/run.py +0 -0
  92. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/run/test_run.py +0 -0
  93. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/run/test_run_collection.py +0 -0
  94. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/run/test_run_info.py +0 -0
  95. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/test_collection.py +0 -0
  96. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/test_group_by.py +0 -0
  97. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/core/test_io.py +0 -0
  98. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/__init__.py +0 -0
  99. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/conftest.py +0 -0
  100. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/echo.py +0 -0
  101. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/read.py +0 -0
  102. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/test_aio.py +0 -0
  103. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/test_args.py +0 -0
  104. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/test_conf.py +0 -0
  105. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/test_io.py +0 -0
  106. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/test_job.py +0 -0
  107. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/executor/test_parser.py +0 -0
  108. {hydraflow-0.18.3 → hydraflow-0.18.4}/tests/utils/__init__.py +0 -0
  109. {hydraflow-0.18.3 → hydraflow-0.18.4}/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.3
3
+ Version: 0.18.4
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
@@ -191,22 +191,6 @@ run = Run[Config, AdvancedModelLoader](run_dir, AdvancedModelLoader)
191
191
  model = run.impl.load_model() # Uses configuration information
192
192
  ```
193
193
 
194
- ## Loading Multiple Runs
195
-
196
- The `load` class method can load both individual runs and collections of runs:
197
-
198
- ```python
199
- # Load a single run
200
- run = Run.load("mlruns/exp_id/run_id")
201
-
202
- # Load multiple runs to create a RunCollection
203
- run_dirs = ["mlruns/exp_id/run_id1", "mlruns/exp_id/run_id2"]
204
- runs = Run.load(run_dirs)
205
-
206
- # Load runs with parallel processing
207
- runs = Run.load(run_dirs, n_jobs=4) # Use 4 parallel jobs for loading
208
- runs = Run.load(run_dirs, n_jobs=-1) # Use all available CPU cores
209
- ```
210
194
  ## Converting to DataFrame
211
195
 
212
196
  To convert a Run instance to a Polars DataFrame, use the
@@ -231,12 +215,27 @@ df = run.to_frame(
231
215
 
232
216
  The `to_frame` method accepts the following parameters:
233
217
 
234
- - `func`: A function that takes a Run instance and returns a DataFrame
218
+ - `function`: A function that takes a Run instance and returns a DataFrame
235
219
  - `*keys`: Keys for the Run's information to add. Accepts the following formats:
236
- - String: A simple key (e.g., "run_id")
237
- - Tuple: A tuple of (key, default value or function returning default value)
220
+ - String: A simple key (e.g., "run_id")
221
+ - Tuple: A tuple of (key, default value or function returning default value)
238
222
 
223
+ ## Loading Multiple Runs
224
+
225
+ The `load` class method can load both individual runs and collections of runs:
226
+
227
+ ```python
228
+ # Load a single run
229
+ run = Run.load("mlruns/exp_id/run_id")
239
230
 
231
+ # Load multiple runs to create a RunCollection
232
+ run_dirs = ["mlruns/exp_id/run_id1", "mlruns/exp_id/run_id2"]
233
+ runs = Run.load(run_dirs)
234
+
235
+ # Load runs with parallel processing
236
+ runs = Run.load(run_dirs, n_jobs=4) # Use 4 parallel jobs for loading
237
+ runs = Run.load(run_dirs, n_jobs=-1) # Use all available CPU cores
238
+ ```
240
239
 
241
240
  ### Finding Runs with `iter_run_dirs`
242
241
 
@@ -294,4 +293,4 @@ based on experiment names or custom filtering criteria.
294
293
  The [`Run`][hydraflow.core.run.Run] class provides a powerful interface for
295
294
  working with experiment runs in HydraFlow. Its type-safe configuration access,
296
295
  custom implementation support, and convenient loading mechanisms make it easy
297
- to analyze and compare experiment results effectively.
296
+ to analyze and compare experiment results effectively.
@@ -327,10 +327,10 @@ df = run_collection.concat(
327
327
 
328
328
  The `concat` method accepts the following parameters:
329
329
 
330
- - `func`: A function that takes each Run instance and returns a DataFrame
330
+ - `function`: A function that takes each Run instance and returns a DataFrame
331
331
  - `*keys`: Keys for the Run's information to add. Accepts the following formats:
332
- - String: A simple key (e.g., "run_id")
333
- - Tuple: A tuple of (key, default value or function returning default value)
332
+ - String: A simple key (e.g., "run_id")
333
+ - Tuple: A tuple of (key, default value or function returning default value)
334
334
 
335
335
  ## Grouping Runs
336
336
 
@@ -468,4 +468,4 @@ filtering, grouping, and data extraction capabilities enable efficient extractio
468
468
  of insights from large sets of experiments, helping you identify optimal
469
469
  configurations and understand performance trends.
470
470
 
471
- [hydraflow.core.collection.Collection]: ../../api/hydraflow/core/collection.html#hydraflow.core.collection.Collection
471
+ [hydraflow.core.collection.Collection]: ../../api/hydraflow/core/collection.html#hydraflow.core.collection.Collection
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hydraflow"
7
- version = "0.18.3"
7
+ version = "0.18.4"
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" }
@@ -62,7 +62,7 @@ dev = [
62
62
  "pytest-xdist",
63
63
  "ruff>=0.11",
64
64
  ]
65
- docs = ["markdown-exec[ansi]", "mkapi", "mkdocs-material"]
65
+ docs = ["markdown-exec[ansi]", "mkapi>=4.4", "mkdocs-material"]
66
66
 
67
67
  [tool.pytest.ini_options]
68
68
  addopts = [
@@ -343,13 +343,13 @@ class Run[C, I = None]:
343
343
 
344
344
  def to_frame(
345
345
  self,
346
- func: Callable[[Self], DataFrame],
346
+ function: Callable[[Self], DataFrame],
347
347
  *keys: str | tuple[str, Any | Callable[[Self], Any]],
348
348
  ) -> DataFrame:
349
349
  """Convert the Run to a DataFrame.
350
350
 
351
351
  Args:
352
- func (Callable[[Run], DataFrame]): A function that takes a Run
352
+ function (Callable[[Run], DataFrame]): A function that takes a Run
353
353
  instance and returns a DataFrame.
354
354
  keys (str | tuple[str, Any | Callable[[Run], Any]]): The keys to
355
355
  add to the DataFrame.
@@ -358,7 +358,7 @@ class Run[C, I = None]:
358
358
  DataFrame: A DataFrame representation of the Run.
359
359
 
360
360
  """
361
- return func(self).with_columns(
361
+ return function(self).with_columns(
362
362
  self.lit(k) if isinstance(k, str) else self.lit(k[0], k[1]) for k in keys
363
363
  )
364
364
 
@@ -174,7 +174,7 @@ class RunCollection[R: Run[Any, Any], I = None](Collection[R]):
174
174
 
175
175
  def concat(
176
176
  self,
177
- func: Callable[[R], DataFrame],
177
+ function: Callable[[R], DataFrame],
178
178
  *keys: str | tuple[str, Any | Callable[[R], Any]],
179
179
  ) -> DataFrame:
180
180
  """Concatenate the results of a function applied to all runs in the collection.
@@ -183,16 +183,16 @@ class RunCollection[R: Run[Any, Any], I = None](Collection[R]):
183
183
  and concatenates the resulting DataFrames along the specified keys.
184
184
 
185
185
  Args:
186
- func (Callable[[R], DataFrame]): A function that takes a Run
186
+ function (Callable[[R], DataFrame]): A function that takes a Run
187
187
  instance and returns a DataFrame.
188
188
  keys (str | tuple[str, Any | Callable[[R], Any]]): The keys to
189
189
  add to the DataFrame.
190
190
 
191
191
  Returns:
192
- DataFrame: A DataFrame representation of the Run.
192
+ DataFrame: A DataFrame representation of the Run collection.
193
193
 
194
194
  """
195
- return pl.concat(run.to_frame(func, *keys) for run in self)
195
+ return pl.concat(run.to_frame(function, *keys) for run in self)
196
196
 
197
197
  @cached_property
198
198
  def impls(self) -> Collection[I]:
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