diff --git a/autosklearn/__version__.py b/autosklearn/__version__.py index d33bd90441..6928aee41e 100644 --- a/autosklearn/__version__.py +++ b/autosklearn/__version__.py @@ -1,4 +1,4 @@ """Version information.""" # The following line *must* be the last in the module, exactly as formatted: -__version__ = "0.14.3" +__version__ = "0.14.6" diff --git a/autosklearn/automl.py b/autosklearn/automl.py index cee7c492f3..9158224cef 100644 --- a/autosklearn/automl.py +++ b/autosklearn/automl.py @@ -485,6 +485,7 @@ def _do_dummy_prediction(self, datamanager: XYDataManager, num_run: int) -> int: ta = ExecuteTaFuncWithQueue( backend=self._backend, autosklearn_seed=self._seed, + multi_objectives=["cost"], resampling_strategy=self._resampling_strategy, initial_num_run=num_run, stats=stats, @@ -1341,6 +1342,7 @@ def fit_pipeline( backend=self._backend, autosklearn_seed=self._seed, abort_on_first_run_crash=False, + multi_objectives=["cost"], cost_for_crash=get_cost_of_crash(kwargs["metric"]), port=self._logger_port, **kwargs, diff --git a/autosklearn/evaluation/__init__.py b/autosklearn/evaluation/__init__.py index 51ad69fbb3..8eb997c571 100644 --- a/autosklearn/evaluation/__init__.py +++ b/autosklearn/evaluation/__init__.py @@ -131,6 +131,7 @@ def __init__( abort_on_first_run_crash: bool, port: int, pynisher_context: str, + multi_objectives: List[str], initial_num_run: int = 1, stats: Optional[Stats] = None, run_obj: str = "quality", @@ -146,7 +147,6 @@ def __init__( ta: Optional[Callable] = None, **resampling_strategy_args: Any, ): - if resampling_strategy == "holdout": eval_function = autosklearn.evaluation.train_evaluator.eval_holdout elif resampling_strategy == "holdout-iterative-fit": diff --git a/autosklearn/util/single_thread_client.py b/autosklearn/util/single_thread_client.py index 057e29a25b..5c158192a0 100644 --- a/autosklearn/util/single_thread_client.py +++ b/autosklearn/util/single_thread_client.py @@ -1,4 +1,5 @@ import typing +from typing import Any from pathlib import Path @@ -67,8 +68,24 @@ def submit( func: typing.Callable, *args: typing.List, priority: int = 0, - **kwargs: typing.Dict, + key: Any = None, + workers: Any = None, + resources: Any = None, + retries: Any = None, + fifo_timeout: Any = "100 ms", + allow_other_workers: Any = False, + actor: Any = False, + actors: Any = False, + pure: Any = None, + **kwargs: Any, ) -> typing.Any: + """ + Note + ---- + The keyword arguments caught in `dask.distributed.Client` need to + be specified here so they don't get passed in as ``**kwargs`` to the + ``func``. + """ return DummyFuture(func(*args, **kwargs)) def close(self) -> None: diff --git a/doc/releases.rst b/doc/releases.rst index 456adfe511..456d7f60c7 100644 --- a/doc/releases.rst +++ b/doc/releases.rst @@ -9,6 +9,26 @@ Releases ======== +Version 0.14.6 +============== + +* HOTFIX #1407: Catches keyword arguments in `SingleThreadedClient` so they don't get passed to it's executing `func`. + +Contributors v0.14.6 +******************** +* Eddie Bergman + + +Version 0.14.5 +============== + +* HOTFIX: Release PyPi package with ``automl_common`` included + +Contributors v0.14.5 +******************** +* Eddie Bergman + + Version 0.14.3 ============== diff --git a/test/test_evaluation/test_evaluation.py b/test/test_evaluation/test_evaluation.py index 67d9e0ca8b..5df1f5fe50 100644 --- a/test/test_evaluation/test_evaluation.py +++ b/test/test_evaluation/test_evaluation.py @@ -91,6 +91,7 @@ def test_eval_with_limits_holdout(self, pynisher_mock): autosklearn_seed=1, port=self.logger_port, resampling_strategy="holdout", + multi_objectives=["cost"], stats=self.stats, memory_limit=3072, metric=accuracy, @@ -121,6 +122,7 @@ def test_zero_or_negative_cutoff(self, pynisher_mock): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, metric=accuracy, @@ -150,6 +152,7 @@ def test_cutoff_lower_than_remaining_time(self, pynisher_mock): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, metric=accuracy, @@ -181,6 +184,7 @@ def test_eval_with_limits_holdout_fail_silent(self, pynisher_mock): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, memory_limit=3072, @@ -251,6 +255,7 @@ def test_eval_with_limits_holdout_fail_memory_error(self, pynisher_mock): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, memory_limit=3072, @@ -292,6 +297,7 @@ def test_eval_with_limits_holdout_fail_timeout(self, pynisher_mock): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, memory_limit=3072, @@ -341,6 +347,7 @@ def side_effect(**kwargs): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, memory_limit=3072, @@ -376,6 +383,7 @@ def side_effect(**kwargs): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, memory_limit=3072, @@ -419,6 +427,7 @@ def side_effect(*args, **kwargs): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, memory_limit=3072, @@ -454,6 +463,7 @@ def test_exception_in_target_function(self, eval_holdout_mock): backend=self.backend, autosklearn_seed=1, port=self.logger_port, + multi_objectives=["cost"], resampling_strategy="holdout", stats=self.stats, memory_limit=3072, @@ -490,6 +500,7 @@ def test_silent_exception_in_target_function(self): port=self.logger_port, autosklearn_seed=1, resampling_strategy="holdout", + multi_objectives=["cost"], stats=self.stats, memory_limit=3072, metric=accuracy,