From b3449ca0f63e4cf9fa14fe8e9fcb558145f7f685 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sat, 24 May 2025 17:29:47 +0200 Subject: [PATCH 1/8] Update _lookup.py --- src/hyperactive/_registry/_lookup.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hyperactive/_registry/_lookup.py b/src/hyperactive/_registry/_lookup.py index 63f23b07..0a59d97d 100644 --- a/src/hyperactive/_registry/_lookup.py +++ b/src/hyperactive/_registry/_lookup.py @@ -34,6 +34,16 @@ def all_objects( Not included are: the base classes themselves, classes defined in test modules. + To filter by object type, use the ``object_types`` parameter: + + * ``"optimizer"``: optimizers, e.g., the Hill Climbing optimizer, + or the Particle Swarm optimizer + * ``"experiment"``: experiments, e.g., the Ackley function, or an ``sklearn`` + cross-validation experiment + * if ``None``, no filter is applied and all objects are returned. + + To filter by tag, use the ``filter_tags`` parameter. + Parameters ---------- object_types: str, list of str, optional (default=None) From aae01fa898eff084527f865556d6c87f3df8dc00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sat, 24 May 2025 17:30:40 +0200 Subject: [PATCH 2/8] make registry module public --- src/hyperactive/{_registry => registry}/__init__.py | 0 src/hyperactive/{_registry => registry}/_lookup.py | 0 src/hyperactive/tests/test_all_objects.py | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename src/hyperactive/{_registry => registry}/__init__.py (100%) rename src/hyperactive/{_registry => registry}/_lookup.py (100%) diff --git a/src/hyperactive/_registry/__init__.py b/src/hyperactive/registry/__init__.py similarity index 100% rename from src/hyperactive/_registry/__init__.py rename to src/hyperactive/registry/__init__.py diff --git a/src/hyperactive/_registry/_lookup.py b/src/hyperactive/registry/_lookup.py similarity index 100% rename from src/hyperactive/_registry/_lookup.py rename to src/hyperactive/registry/_lookup.py diff --git a/src/hyperactive/tests/test_all_objects.py b/src/hyperactive/tests/test_all_objects.py index 41306360..69fcde7b 100644 --- a/src/hyperactive/tests/test_all_objects.py +++ b/src/hyperactive/tests/test_all_objects.py @@ -6,7 +6,7 @@ from skbase.testing import BaseFixtureGenerator as _BaseFixtureGenerator from skbase.testing import TestAllObjects as _TestAllObjects -from hyperactive._registry import all_objects +from hyperactive.registry import all_objects from hyperactive.tests._config import EXCLUDE_ESTIMATORS, EXCLUDED_TESTS from hyperactive.tests._doctest import run_doctest From e588cbb9cdf27faa277e98959834e42e174c0c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sat, 24 May 2025 17:30:54 +0200 Subject: [PATCH 3/8] Update _lookup.py --- src/hyperactive/registry/_lookup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hyperactive/registry/_lookup.py b/src/hyperactive/registry/_lookup.py index 0a59d97d..2410468f 100644 --- a/src/hyperactive/registry/_lookup.py +++ b/src/hyperactive/registry/_lookup.py @@ -147,7 +147,7 @@ def all_objects( Examples -------- - >>> from hyperactive._registry import all_objects + >>> from hyperactive.registry import all_objects >>> # return a complete list of objects as pd.Dataframe >>> all_objects(as_dataframe=True) # doctest: +SKIP From f82a484d63c2c5208c0dc56a4f12a27aa71763f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sat, 24 May 2025 17:41:10 +0200 Subject: [PATCH 4/8] tests --- src/hyperactive/registry/tests/__init__.py | 1 + src/hyperactive/registry/tests/test_lookup.py | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/hyperactive/registry/tests/__init__.py create mode 100644 src/hyperactive/registry/tests/test_lookup.py diff --git a/src/hyperactive/registry/tests/__init__.py b/src/hyperactive/registry/tests/__init__.py new file mode 100644 index 00000000..96b5c8c8 --- /dev/null +++ b/src/hyperactive/registry/tests/__init__.py @@ -0,0 +1 @@ +"""Registry tests.""" diff --git a/src/hyperactive/registry/tests/test_lookup.py b/src/hyperactive/registry/tests/test_lookup.py new file mode 100644 index 00000000..7150c488 --- /dev/null +++ b/src/hyperactive/registry/tests/test_lookup.py @@ -0,0 +1,53 @@ +# copyright: hyperactive developers, BSD-3-Clause License (see LICENSE file) +"""Testing of registry lookup functionality.""" + +# based on the sktime module of same name + +__author__ = ["fkiraly"] + +import pytest + +from hyperactive.registry import all_objects + + +object_types = ["optimizer", "experiment"] + + +def _to_list(obj): + """Put obj in list if it is not a list.""" + if not isinstance(obj, list): + return [obj] + else: + return obj.copy() + + +@pytest.mark.parametrize("return_names", [True, False]) +@pytest.mark.parametrize("object_type", object_types) +def test_all_objects_by_scitype(object_type, return_names): + """Check that all_objects return argument has correct type.""" + objects = all_objects( + object_type=object_type, + return_names=return_names, + ) + + assert isinstance(objects, list) + # there should be at least one object returned + assert len(objects) > 0 + + # checks return type specification (see docstring) + for obj in objects: + if return_names: + assert isinstance(obj, tuple) and len(obj) == 2 + name = obj[0] + obj_cls = obj[1] + assert isinstance(name, str) + assert hasattr(obj_cls, "__name__") + assert name == obj_cls[1].__name__ + else: + obj_cls = obj + + assert hasattr(obj_cls, "get_tags") + type_from_obj = obj_cls.get_class_tag("object_type") + type_from_obj = _to_list(type_from_obj) + + assert object_type in type_from_obj From 17cdacbbe4712f8ae0acf5353da20cab7ad57d21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sat, 24 May 2025 17:41:21 +0200 Subject: [PATCH 5/8] Update test_lookup.py --- src/hyperactive/registry/tests/test_lookup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/hyperactive/registry/tests/test_lookup.py b/src/hyperactive/registry/tests/test_lookup.py index 7150c488..bd9174ec 100644 --- a/src/hyperactive/registry/tests/test_lookup.py +++ b/src/hyperactive/registry/tests/test_lookup.py @@ -9,7 +9,6 @@ from hyperactive.registry import all_objects - object_types = ["optimizer", "experiment"] From 84c8f8b81af84e1217dc9231baae4e600cbf4a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sat, 24 May 2025 17:55:32 +0200 Subject: [PATCH 6/8] Update __init__.py --- src/hyperactive/registry/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hyperactive/registry/__init__.py b/src/hyperactive/registry/__init__.py index 722edf23..4216d6d0 100644 --- a/src/hyperactive/registry/__init__.py +++ b/src/hyperactive/registry/__init__.py @@ -1,5 +1,5 @@ """Hyperactive registry.""" -from hyperactive._registry._lookup import all_objects +from hyperactive.registry._lookup import all_objects __all__ = ["all_objects"] From ac69a0911134ecdb57f988bb89062e7c521bb71e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sat, 24 May 2025 18:19:56 +0200 Subject: [PATCH 7/8] Update test_lookup.py --- src/hyperactive/registry/tests/test_lookup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hyperactive/registry/tests/test_lookup.py b/src/hyperactive/registry/tests/test_lookup.py index bd9174ec..06045b98 100644 --- a/src/hyperactive/registry/tests/test_lookup.py +++ b/src/hyperactive/registry/tests/test_lookup.py @@ -25,7 +25,7 @@ def _to_list(obj): def test_all_objects_by_scitype(object_type, return_names): """Check that all_objects return argument has correct type.""" objects = all_objects( - object_type=object_type, + object_types=object_type, return_names=return_names, ) From 8953235f7e6b06ec97d0d0cab58d3089390aa482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sat, 24 May 2025 23:15:47 +0200 Subject: [PATCH 8/8] Update test_lookup.py --- src/hyperactive/registry/tests/test_lookup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hyperactive/registry/tests/test_lookup.py b/src/hyperactive/registry/tests/test_lookup.py index 06045b98..44cb6241 100644 --- a/src/hyperactive/registry/tests/test_lookup.py +++ b/src/hyperactive/registry/tests/test_lookup.py @@ -41,7 +41,7 @@ def test_all_objects_by_scitype(object_type, return_names): obj_cls = obj[1] assert isinstance(name, str) assert hasattr(obj_cls, "__name__") - assert name == obj_cls[1].__name__ + assert name == obj_cls.__name__ else: obj_cls = obj