From 3233306c88eced0d7b92a8296b6cd824802d5e8e Mon Sep 17 00:00:00 2001 From: John Walz Date: Tue, 26 Aug 2025 11:18:12 -0400 Subject: [PATCH 1/6] hotfix: remove check for is configured for test description generation --- validmind/ai/test_descriptions.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/validmind/ai/test_descriptions.py b/validmind/ai/test_descriptions.py index 3a9a05ebe..7653f3ced 100644 --- a/validmind/ai/test_descriptions.py +++ b/validmind/ai/test_descriptions.py @@ -191,15 +191,7 @@ def get_result_description( not in ["0", "false"] ) - # TODO: fix circular import - from validmind.ai.utils import is_configured - - if ( - should_generate - and (tables or figures) - and llm_descriptions_enabled - and is_configured() - ): + if should_generate and (tables or figures) and llm_descriptions_enabled: # get description future and set it as the description in the metadata # this will lazily retrieved so it can run in the background in parallel description = background_generate_description( From 1ada5ce83ac441417d8c5e05dabf351804affda8 Mon Sep 17 00:00:00 2001 From: John Walz Date: Tue, 26 Aug 2025 11:19:04 -0400 Subject: [PATCH 2/6] 2.9.2 --- pyproject.toml | 2 +- validmind/__version__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 208163ae6..ae2c37b0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ description = "ValidMind Library" license = "Commercial License" name = "validmind" readme = "README.pypi.md" -version = "2.9.1" +version = "2.9.2" [tool.poetry.dependencies] aiohttp = {extras = ["speedups"], version = "*"} diff --git a/validmind/__version__.py b/validmind/__version__.py index 334087f85..4f1e6b1b5 100644 --- a/validmind/__version__.py +++ b/validmind/__version__.py @@ -1 +1 @@ -__version__ = "2.9.1" +__version__ = "2.9.2" From cd1ae666a76d03b36e600b69612843c34068b8d3 Mon Sep 17 00:00:00 2001 From: Spencer Krum Date: Wed, 3 Sep 2025 21:00:22 -0500 Subject: [PATCH 3/6] chore: bump version number --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 66328674c..50cf26e86 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ name = "validmind" description = "ValidMind Library" readme = "README.pypi.md" -version = "2.9.2" +version = "2.9.3" requires-python = ">=3.9,<3.13" license = { file = "LICENSE" } authors = [ From 8af173ecb89938c6351eaee06e6f9dc038dea5da Mon Sep 17 00:00:00 2001 From: John Walz Date: Wed, 15 Oct 2025 12:21:28 -0400 Subject: [PATCH 4/6] hotfix: dont require metadata decorators --- validmind/tests/decorator.py | 6 ++++++ validmind/tests/load.py | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/validmind/tests/decorator.py b/validmind/tests/decorator.py index a5b48a2c1..7d948a7e8 100644 --- a/validmind/tests/decorator.py +++ b/validmind/tests/decorator.py @@ -242,6 +242,12 @@ def decorator(func: F) -> F: func.inputs, func.params = _inspect_signature(func) + # ensure tags and tasks attributes exist, default to empty list if not present + if not hasattr(func, "__tags__"): + func.__tags__ = [] + if not hasattr(func, "__tasks__"): + func.__tasks__ = [] + return func if callable(func_or_id): diff --git a/validmind/tests/load.py b/validmind/tests/load.py index 04e7088e0..1392ab062 100644 --- a/validmind/tests/load.py +++ b/validmind/tests/load.py @@ -180,6 +180,12 @@ def load_test( # add inputs and params as attributes to the test function test_func.inputs, test_func.params = _inspect_signature(test_func) + # ensure tags and tasks attributes exist, default to empty list if not present + if not hasattr(test_func, "__tags__"): + test_func.__tags__ = [] + if not hasattr(test_func, "__tasks__"): + test_func.__tasks__ = [] + test_store.register_test(test_id, test_func) return test_store.get_test(test_id) From f2715ad30a0588a031d3fab644a51687ec301af6 Mon Sep 17 00:00:00 2001 From: John Walz Date: Wed, 15 Oct 2025 12:23:10 -0400 Subject: [PATCH 5/6] 2.9.6 --- pyproject.toml | 2 +- validmind/__version__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 98512c544..61ab2477a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "validmind" -version = "2.9.5" +version = "2.9.6" description = "ValidMind Library" readme = "README.pypi.md" requires-python = ">=3.9,<3.13" diff --git a/validmind/__version__.py b/validmind/__version__.py index 933fa29c8..c1467c659 100644 --- a/validmind/__version__.py +++ b/validmind/__version__.py @@ -1 +1 @@ -__version__ = "2.9.5" +__version__ = "2.9.6" From a2d4d7614a87eb377ff6dbfab4cab92121f8ad9d Mon Sep 17 00:00:00 2001 From: John Walz Date: Wed, 15 Oct 2025 12:25:20 -0400 Subject: [PATCH 6/6] fix: dont need this here --- validmind/tests/decorator.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/validmind/tests/decorator.py b/validmind/tests/decorator.py index 7d948a7e8..a5b48a2c1 100644 --- a/validmind/tests/decorator.py +++ b/validmind/tests/decorator.py @@ -242,12 +242,6 @@ def decorator(func: F) -> F: func.inputs, func.params = _inspect_signature(func) - # ensure tags and tasks attributes exist, default to empty list if not present - if not hasattr(func, "__tags__"): - func.__tags__ = [] - if not hasattr(func, "__tasks__"): - func.__tasks__ = [] - return func if callable(func_or_id):