From ee56c616ffdec07ec12510c8a0d568d7ace2588b Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Fri, 29 Sep 2023 20:05:33 +0100 Subject: [PATCH] Remove flawed test - It is not possible to access properties on classes, only on instances, therefore this test is not something we can implement --- .../output_parsers/test_base_output_parser.py | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 libs/langchain/tests/unit_tests/output_parsers/test_base_output_parser.py diff --git a/libs/langchain/tests/unit_tests/output_parsers/test_base_output_parser.py b/libs/langchain/tests/unit_tests/output_parsers/test_base_output_parser.py deleted file mode 100644 index 3ce6fb976d..0000000000 --- a/libs/langchain/tests/unit_tests/output_parsers/test_base_output_parser.py +++ /dev/null @@ -1,55 +0,0 @@ -"""Test the BaseOutputParser class and its sub-classes.""" -from abc import ABC -from collections import defaultdict -from typing import List, Optional, Set, Type - -import pytest - -from langchain.schema import BaseOutputParser - - -def non_abstract_subclasses( - cls: Type[ABC], to_skip: Optional[Set] = None -) -> List[Type]: - """Recursively find all non-abstract subclasses of a class.""" - _to_skip = to_skip or set() - subclasses = [] - for subclass in cls.__subclasses__(): - if not getattr(subclass, "__abstractmethods__", None): - if subclass.__name__ not in _to_skip: - subclasses.append(subclass) - subclasses.extend(non_abstract_subclasses(subclass, to_skip=_to_skip)) - return subclasses - - -# parsers defined not in the output_parsers module: -_PARSERS_TO_SKIP = { - "FakeOutputParser", - "BaseOutputParser", - "FinishedOutputParser", - "RouterOutputParser", - "TrajectoryRunEvalOutputParser", -} -_NON_ABSTRACT_PARSERS = non_abstract_subclasses( - BaseOutputParser, to_skip=_PARSERS_TO_SKIP -) - - -@pytest.mark.parametrize("cls", _NON_ABSTRACT_PARSERS) -def test_subclass_implements_type(cls: Type[BaseOutputParser]) -> None: - try: - cls._type - except NotImplementedError: - pytest.fail(f"_type property is not implemented in class {cls.__name__}") - - -def test_all_subclasses_implement_unique_type() -> None: - types = defaultdict(list) - for cls in _NON_ABSTRACT_PARSERS: - try: - types[cls._type].append(cls.__name__) - except NotImplementedError: - # This is handled in the previous test - pass - dups = {t: names for t, names in types.items() if len(names) > 1} - assert not dups, f"Duplicate types: {dups}"