diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 279ca941..845fa8a8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -23,6 +23,8 @@ Fixed `__). - ArgumentParser with dashes incorrectly resolves paths to default values (`#736 `__). +- Fix failing tests due to new version of ``typeshed-client`` (`#740 + `__). v4.40.0 (2025-05-16) diff --git a/jsonargparse/_stubs_resolver.py b/jsonargparse/_stubs_resolver.py index 2405a0b9..4d26d928 100644 --- a/jsonargparse/_stubs_resolver.py +++ b/jsonargparse/_stubs_resolver.py @@ -157,11 +157,9 @@ def get_component_imported_info(self, component, parent) -> Optional[tc.Imported stub_import = parent and self.get_imported_info(f"{parent.__module__}.{parent.__name__}", component) if stub_import and isinstance(stub_import.info.ast, ast.AST): method_ast = MethodsVisitor().find(stub_import.info.ast, component.__name__) - if method_ast is None: - stub_import = None - else: - name_info = tc.NameInfo(name=component.__qualname__, is_exported=False, ast=method_ast) - stub_import = tc.ImportedInfo(source_module=stub_import.source_module, info=name_info) + assert method_ast + name_info = tc.NameInfo(name=component.__qualname__, is_exported=False, ast=method_ast) + stub_import = tc.ImportedInfo(source_module=stub_import.source_module, info=name_info) return stub_import def get_aliases(self, imported_info: tc.ImportedInfo): diff --git a/jsonargparse_tests/test_stubs_resolver.py b/jsonargparse_tests/test_stubs_resolver.py index 0f30399e..3a2bb4f0 100644 --- a/jsonargparse_tests/test_stubs_resolver.py +++ b/jsonargparse_tests/test_stubs_resolver.py @@ -144,9 +144,9 @@ def test_get_params_conditional_python_version(): assert [("a", inspect._empty), ("version", inspect._empty)] == get_param_types(params) -@patch("jsonargparse._stubs_resolver.exec") -def test_get_params_exec_failure(mock_exec): - mock_exec.side_effect = NameError("failed") +@patch("jsonargparse._parameter_resolvers.get_stub_types") +def test_get_params_exec_failure(mock_get_stub_types): + mock_get_stub_types.return_value = None params = get_params(Random, "seed") assert [("a", inspect._empty), ("version", inspect._empty)] == get_param_types(params) @@ -172,7 +172,9 @@ def test_get_params_classmethod(): expected = expected[:4] + ["compresslevel"] + expected[4:] assert expected == get_param_names(params)[: len(expected)] if sys.version_info >= (3, 10): - assert all(p.annotation is not inspect._empty for p in params if p.name not in {"compresslevel", "stream"}) + assert all( + p.annotation is not inspect._empty for p in params if p.name not in {"fileobj", "compresslevel", "stream"} + ) with mock_stubs_missing_types(): params = get_params(TarFile, "open") assert expected == get_param_names(params)[: len(expected)] diff --git a/pyproject.toml b/pyproject.toml index 3e5415bf..b05358fd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,7 +52,8 @@ all = [ signatures = [ "jsonargparse[typing-extensions]", "docstring-parser>=0.15", - "typeshed-client>=2.3.0", + "typeshed-client>=2.3.0; python_version == '3.8'", + "typeshed-client>=2.8.2; python_version >= '3.9'", ] jsonschema = [ "jsonschema>=3.2.0",