hydraflow 0.4.1__py3-none-any.whl → 0.4.3__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
hydraflow/context.py CHANGED
@@ -10,6 +10,7 @@ from pathlib import Path
10
10
  from typing import TYPE_CHECKING
11
11
 
12
12
  import mlflow
13
+ import mlflow.artifacts
13
14
  from hydra.core.hydra_config import HydraConfig
14
15
  from watchdog.events import FileModifiedEvent, PatternMatchingEventHandler
15
16
  from watchdog.observers import Observer
hydraflow/mlflow.py CHANGED
@@ -21,6 +21,7 @@ from typing import TYPE_CHECKING
21
21
 
22
22
  import joblib
23
23
  import mlflow
24
+ import mlflow.artifacts
24
25
  from hydra.core.hydra_config import HydraConfig
25
26
  from mlflow.entities import ViewType
26
27
  from mlflow.tracking.fluent import SEARCH_MAX_RESULTS_PANDAS, _get_experiment_id
hydraflow/param.py CHANGED
@@ -30,7 +30,7 @@ def match(param: str, value: Any) -> bool:
30
30
  False otherwise.
31
31
 
32
32
  """
33
- if value in [None, True, False]:
33
+ if any(value is x for x in [None, True, False]):
34
34
  return param == str(value)
35
35
 
36
36
  if isinstance(value, list) and (m := _match_list(param, value)) is not None:
@@ -39,12 +39,12 @@ def match(param: str, value: Any) -> bool:
39
39
  if isinstance(value, tuple) and (m := _match_tuple(param, value)) is not None:
40
40
  return m
41
41
 
42
+ if isinstance(value, int | float):
43
+ return float(param) == value
44
+
42
45
  if isinstance(value, str):
43
46
  return param == value
44
47
 
45
- if isinstance(value, int | float):
46
- return type(value)(param) == value
47
-
48
48
  return param == str(value)
49
49
 
50
50
 
@@ -98,6 +98,32 @@ class RunCollection:
98
98
  def __bool__(self) -> bool:
99
99
  return bool(self._runs)
100
100
 
101
+ def __add__(self, other: RunCollection) -> RunCollection:
102
+ """Add another `RunCollection` to this one.
103
+
104
+ Args:
105
+ other (RunCollection): The `RunCollection` to add.
106
+
107
+ Returns:
108
+ A new `RunCollection` instance with the runs from both collections.
109
+
110
+ """
111
+ return self.__class__(self._runs + other._runs)
112
+
113
+ def __sub__(self, other: RunCollection) -> RunCollection:
114
+ """Subtract another `RunCollection` from this one.
115
+
116
+ Args:
117
+ other (RunCollection): The `RunCollection` to subtract.
118
+
119
+ Returns:
120
+ A new `RunCollection` instance with the runs that are in this collection
121
+ but not in the other.
122
+
123
+ """
124
+ runs = [run for run in self._runs if run not in other._runs] # noqa: SLF001
125
+ return self.__class__(runs)
126
+
101
127
  @classmethod
102
128
  def from_list(cls, runs: list[Run]) -> RunCollection:
103
129
  """Create a `RunCollection` instance from a list of MLflow `Run` instances."""
hydraflow/utils.py CHANGED
@@ -6,6 +6,7 @@ from pathlib import Path
6
6
  from typing import TYPE_CHECKING
7
7
 
8
8
  import mlflow
9
+ import mlflow.artifacts
9
10
  from hydra.core.hydra_config import HydraConfig
10
11
  from mlflow.entities import Run
11
12
  from mlflow.tracking import artifact_utils
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: hydraflow
3
- Version: 0.4.1
3
+ Version: 0.4.3
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
@@ -0,0 +1,16 @@
1
+ hydraflow/__init__.py,sha256=VbrHKs2Cg93QJ8K9WHYxkXmzOpb8o9ugiwV-mXDT0JE,908
2
+ hydraflow/asyncio.py,sha256=-i1C8KAmNDImrjHnk92Csaa1mpjdK8Vp4ZVaQV-l94s,6634
3
+ hydraflow/config.py,sha256=MNX9da5bPVDcjnpji7Cm9ndK6ura92pt361m4PRh6_E,4326
4
+ hydraflow/context.py,sha256=a6bHmiY16hZ1wvzVzoa7eGDBFjz0GX0iuZNG0EW0wkE,8764
5
+ hydraflow/mlflow.py,sha256=kWVK_Xw2hkRnTg33jSP3VW13UZF6_hBGhN52mPmLgvk,8753
6
+ hydraflow/param.py,sha256=c5sc6NwD6DKwZzVwprXzZD5FSi6qRgSHkc6TXBKQEdg,4502
7
+ hydraflow/progress.py,sha256=zvKX1HCN8_xDOsgYOEcLLhkhdPdep-U8vHrc0XZ-6SQ,6163
8
+ hydraflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ hydraflow/run_collection.py,sha256=eBNGwtvkRKpOEqcwDUS1tkIFuxY_PVi6SEzzd1PwG5s,26774
10
+ hydraflow/run_data.py,sha256=qeFX1iRvNAorXA9QQIjzr0o2_82TI44eZKp7llKG8GI,1549
11
+ hydraflow/run_info.py,sha256=sMXOo20ClaRIommMEzuAbO_OrcXx7M1Yt4FMV7spxz0,998
12
+ hydraflow/utils.py,sha256=Xq78F2iOkgi9JnCYfX1reQw_Y9K6o8oNYBDEwrf18cI,3552
13
+ hydraflow-0.4.3.dist-info/METADATA,sha256=iOjFgOUa78jjthbjZzJ7bMLXLMjrrbztqYTDYueTZ2Y,3840
14
+ hydraflow-0.4.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
15
+ hydraflow-0.4.3.dist-info/licenses/LICENSE,sha256=IGdDrBPqz1O0v_UwCW-NJlbX9Hy9b3uJ11t28y2srmY,1062
16
+ hydraflow-0.4.3.dist-info/RECORD,,
@@ -1,16 +0,0 @@
1
- hydraflow/__init__.py,sha256=VbrHKs2Cg93QJ8K9WHYxkXmzOpb8o9ugiwV-mXDT0JE,908
2
- hydraflow/asyncio.py,sha256=-i1C8KAmNDImrjHnk92Csaa1mpjdK8Vp4ZVaQV-l94s,6634
3
- hydraflow/config.py,sha256=MNX9da5bPVDcjnpji7Cm9ndK6ura92pt361m4PRh6_E,4326
4
- hydraflow/context.py,sha256=p1UYHvSCPrp10cBn9TUI9mXMv0h_I0Eou24Wp1rZZ0k,8740
5
- hydraflow/mlflow.py,sha256=JELqXFCJ9MsEJaQWT5dyleTFk8BHL7cQwW_gzhkPoIg,8729
6
- hydraflow/param.py,sha256=rR-BeXSnclOH8U_54xEcY0HPIFIQxBy9lQmone1u8VY,4492
7
- hydraflow/progress.py,sha256=zvKX1HCN8_xDOsgYOEcLLhkhdPdep-U8vHrc0XZ-6SQ,6163
8
- hydraflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- hydraflow/run_collection.py,sha256=zO7OARn0QOGeK3FQH8GnuuDKCnYFqn1fbsKnOuGCa9M,25938
10
- hydraflow/run_data.py,sha256=qeFX1iRvNAorXA9QQIjzr0o2_82TI44eZKp7llKG8GI,1549
11
- hydraflow/run_info.py,sha256=sMXOo20ClaRIommMEzuAbO_OrcXx7M1Yt4FMV7spxz0,998
12
- hydraflow/utils.py,sha256=gNI0Ln2VBHfMBzNB9SNxJfjCLf14irYt0EBeeMXMeyk,3528
13
- hydraflow-0.4.1.dist-info/METADATA,sha256=vkcwItX5TpHozDwACeA1683B93u1NOVhU8y5IO4eraM,3840
14
- hydraflow-0.4.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
15
- hydraflow-0.4.1.dist-info/licenses/LICENSE,sha256=IGdDrBPqz1O0v_UwCW-NJlbX9Hy9b3uJ11t28y2srmY,1062
16
- hydraflow-0.4.1.dist-info/RECORD,,