Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unit tests were not executed properly locally on a Windows system #2334

Closed
sergerdn opened this issue Apr 3, 2023 · 0 comments · Fixed by #2340
Closed

Unit tests were not executed properly locally on a Windows system #2334

sergerdn opened this issue Apr 3, 2023 · 0 comments · Fixed by #2340

Comments

@sergerdn
Copy link
Contributor

sergerdn commented Apr 3, 2023

Request: 
- GET https://raw.githubusercontent.com/hwchase17/langchain-hub/v0.3/chains%5Cpath%5Cchain.json
     
 Available matches:
 - GET https://raw.githubusercontent.com/hwchase17/langchain-hub/v0.3/chains/path/chain.json URL does not match

.venv\lib\site-packages\responses\__init__.py:1032: ConnectionError

Full log:

 
Administrator@WIN-CNQJV5TD9DP MINGW64 /d/Projects/Pycharm/sergerdn/langchain (fix/dockerfile)
$ make tests
poetry run pytest tests/unit_tests
========================================================================================================= test session starts ========================================================================================================= 
platform win32 -- Python 3.10.10, pytest-7.2.2, pluggy-1.0.0 
rootdir: D:\Projects\Pycharm\sergerdn\langchain  
plugins: asyncio-0.20.3, cov-4.0.0, dotenv-0.5.2 
asyncio: mode=strict                             
collected 207 items                                                                                                                                                                                                                     
 
tests\unit_tests\test_bash.py ssss                                                                                                                                                                                               [  1%] 
tests\unit_tests\test_formatting.py ...                                                                                                                                                                                          [  3%] 
tests\unit_tests\test_python.py ......                                                                                                                                                                                           [  6%] 
tests\unit_tests\test_sql_database.py ....                                                                                                                                                                                       [  8%] 
tests\unit_tests\test_sql_database_schema.py ..                                                                                                                                                                                  [  9%] 
tests\unit_tests\test_text_splitter.py ...........                                                                                                                                                                               [ 14%] 
tests\unit_tests\agents\test_agent.py .........                                                                                                                                                                                  [ 18%] 
tests\unit_tests\agents\test_mrkl.py .........                                                                                                                                                                                   [ 23%] 
tests\unit_tests\agents\test_react.py ....                                                                                                                                                                                       [ 25%] 
tests\unit_tests\agents\test_tools.py ........                                                                                                                                                                                   [ 28%] 
tests\unit_tests\callbacks\test_callback_manager.py ........                                                                                                                                                                     [ 32%] 
tests\unit_tests\callbacks\tracers\test_tracer.py .............                                                                                                                                                                  [ 39%] 
tests\unit_tests\chains\test_api.py .                                                                                                                                                                                            [ 39%] 
tests\unit_tests\chains\test_base.py ..............                                                                                                                                                                              [ 46%] 
tests\unit_tests\chains\test_combine_documents.py ........                                                                                                                                                                       [ 50%] 
tests\unit_tests\chains\test_constitutional_ai.py .                                                                                                                                                                              [ 50%] 
tests\unit_tests\chains\test_conversation.py ...........                                                                                                                                                                         [ 56%] 
tests\unit_tests\chains\test_hyde.py ..                                                                                                                                                                                          [ 57%] 
tests\unit_tests\chains\test_llm.py .....                                                                                                                                                                                        [ 59%] 
tests\unit_tests\chains\test_llm_bash.py s                                                                                                                                                                                       [ 59%] 
tests\unit_tests\chains\test_llm_checker.py .                                                                                                                                                                                    [ 60%] 
tests\unit_tests\chains\test_llm_math.py ...                                                                                                                                                                                     [ 61%] 
tests\unit_tests\chains\test_llm_summarization_checker.py .                                                                                                                                                                      [ 62%] 
tests\unit_tests\chains\test_memory.py ....                                                                                                                                                                                      [ 64%] 
tests\unit_tests\chains\test_natbot.py ..                                                                                                                                                                                        [ 65%] 
tests\unit_tests\chains\test_sequential.py ...........                                                                                                                                                                           [ 70%] 
tests\unit_tests\chains\test_transform.py ..                                                                                                                                                                                     [ 71%] 
tests\unit_tests\docstore\test_inmemory.py ....                                                                                                                                                                                  [ 73%] 
tests\unit_tests\llms\test_base.py ..                                                                                                                                                                                            [ 74%] 
tests\unit_tests\llms\test_callbacks.py ..                                                                                                                                                                                       [ 75%] 
tests\unit_tests\llms\test_loading.py .                                                                                                                                                                                          [ 75%] 
tests\unit_tests\llms\test_utils.py ..                                                                                                                                                                                           [ 76%] 
tests\unit_tests\output_parsers\test_pydantic_parser.py ..                                                                                                                                                                       [ 77%] 
tests\unit_tests\output_parsers\test_regex_dict.py .                                                                                                                                                                             [ 78%] 
tests\unit_tests\prompts\test_chat.py ...                                                                                                                                                                                        [ 79%] 
tests\unit_tests\prompts\test_few_shot.py .......                                                                                                                                                                                [ 83%] 
tests\unit_tests\prompts\test_few_shot_with_templates.py .                                                                                                                                                                       [ 83%] 
tests\unit_tests\prompts\test_length_based_example_selector.py ....                                                                                                                                                              [ 85%] 
tests\unit_tests\prompts\test_loading.py ........                                                                                                                                                                                [ 89%] 
tests\unit_tests\prompts\test_prompt.py ...........                                                                                                                                                                              [ 94%] 
tests\unit_tests\prompts\test_utils.py .                                                                                                                                                                                         [ 95%] 
tests\unit_tests\tools\test_json.py ....                                                                                                                                                                                         [ 97%] 
tests\unit_tests\utilities\test_loading.py ...FEFEFE                                                                                                                                                                             [100%] 

=============================================================================================================== ERRORS ================================================================================================================ 
_______________________________________________________________________________________________ ERROR at teardown of test_success[None] _______________________________________________________________________________________________ 

    @pytest.fixture(autouse=True) 
    def mocked_responses() -> Iterable[responses.RequestsMock]:
        """Fixture mocking requests.get."""
>       with responses.RequestsMock() as rsps:

tests\unit_tests\utilities\test_loading.py:19:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv\lib\site-packages\responses\__init__.py:913: in __exit__
    self.stop(allow_assert=success) 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <responses.RequestsMock object at 0x00000224B5406BF0>, allow_assert = True

    def stop(self, allow_assert: bool = True) -> None: 
        if self._patcher:
            # prevent stopping unstarted patchers
            self._patcher.stop()

            # once patcher is stopped, clean it. This is required to create a new
            # fresh patcher on self.start()
            self._patcher = None
 
        if not self.assert_all_requests_are_fired:
            return
     
        if not allow_assert:
            return

        not_called = [m for m in self.registered() if m.call_count == 0]
        if not_called:
>           raise AssertionError(
                "Not all requests have been executed {0!r}".format(
                    [(match.method, match.url) for match in not_called]
                )
            )
E           AssertionError: Not all requests have been executed [('GET', 'https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json')]

.venv\lib\site-packages\responses\__init__.py:1112: AssertionError
_______________________________________________________________________________________________ ERROR at teardown of test_success[v0.3] _______________________________________________________________________________________________ 

    @pytest.fixture(autouse=True)
    def mocked_responses() -> Iterable[responses.RequestsMock]: 
        """Fixture mocking requests.get."""
>       with responses.RequestsMock() as rsps:

tests\unit_tests\utilities\test_loading.py:19:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv\lib\site-packages\responses\__init__.py:913: in __exit__
    self.stop(allow_assert=success)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <responses.RequestsMock object at 0x00000224B545F820>, allow_assert = True

    def stop(self, allow_assert: bool = True) -> None:
        if self._patcher:
            # prevent stopping unstarted patchers
            self._patcher.stop()

            # once patcher is stopped, clean it. This is required to create a new
            # fresh patcher on self.start()
            self._patcher = None

        if not self.assert_all_requests_are_fired:
            return

        if not allow_assert:
            return

        not_called = [m for m in self.registered() if m.call_count == 0]
        if not_called:
>           raise AssertionError(
                "Not all requests have been executed {0!r}".format(
                    [(match.method, match.url) for match in not_called]
                )
            ) 
E           AssertionError: Not all requests have been executed [('GET', 'https://raw.githubusercontent.com/hwchase17/langchain-hub/v0.3/chains/path/chain.json')]

.venv\lib\site-packages\responses\__init__.py:1112: AssertionError
______________________________________________________________________________________________ ERROR at teardown of test_failed_request _______________________________________________________________________________________________ 

    @pytest.fixture(autouse=True)
    def mocked_responses() -> Iterable[responses.RequestsMock]:
        """Fixture mocking requests.get."""
>       with responses.RequestsMock() as rsps:

tests\unit_tests\utilities\test_loading.py:19:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv\lib\site-packages\responses\__init__.py:913: in __exit__
    self.stop(allow_assert=success)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <responses.RequestsMock object at 0x00000224B42E75E0>, allow_assert = True

    def stop(self, allow_assert: bool = True) -> None: 
        if self._patcher:
            # prevent stopping unstarted patchers
            self._patcher.stop()

            # once patcher is stopped, clean it. This is required to create a new
            # fresh patcher on self.start()
            self._patcher = None

        if not self.assert_all_requests_are_fired:
            return

        if not allow_assert:
            return

        not_called = [m for m in self.registered() if m.call_count == 0]
        if not_called:
>           raise AssertionError(
                "Not all requests have been executed {0!r}".format( 
                    [(match.method, match.url) for match in not_called]
                )
            )
E           AssertionError: Not all requests have been executed [('GET', 'https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json')]
 
.venv\lib\site-packages\responses\__init__.py:1112: AssertionError
============================================================================================================== FAILURES =============================================================================================================== 
_________________________________________________________________________________________________________ test_success[None] __________________________________________________________________________________________________________ 

mocked_responses = <responses.RequestsMock object at 0x00000224B5406BF0>, ref = 'master' 

    @pytest.mark.parametrize("ref", [None, "v0.3"]) 
    def test_success(mocked_responses: responses.RequestsMock, ref: str) -> None:
        """Test that a valid hub path is loaded correctly with and without a ref."""
        path = "chains/path/chain.json"
        lc_path_prefix = f"lc{('@' + ref) if ref else ''}://"
        valid_suffixes = {"json"}
        body = json.dumps({"foo": "bar"})
        ref = ref or DEFAULT_REF

        file_contents = None

        def loader(file_path: str) -> None:
            nonlocal file_contents 
            assert file_contents is None
            file_contents = Path(file_path).read_text()

        mocked_responses.get(
            urljoin(URL_BASE.format(ref=ref), path),
            body=body,
            status=200,
            content_type="application/json",
        )

>       try_load_from_hub(f"{lc_path_prefix}{path}", loader, "chains", valid_suffixes)

tests\unit_tests\utilities\test_loading.py:80:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
langchain\utilities\loading.py:42: in try_load_from_hub
    r = requests.get(full_url, timeout=5)
.venv\lib\site-packages\requests\api.py:73: in get
    return request("get", url, params=params, **kwargs) 
.venv\lib\site-packages\requests\api.py:59: in request
    return session.request(method=method, url=url, **kwargs)
.venv\lib\site-packages\requests\sessions.py:587: in request
    resp = self.send(prep, **send_kwargs)
.venv\lib\site-packages\requests\sessions.py:701: in send 
    r = adapter.send(request, **kwargs)
.venv\lib\site-packages\responses\__init__.py:1090: in unbound_on_send
    return self._on_request(adapter, request, *a, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <responses.RequestsMock object at 0x00000224B5406BF0>, adapter = <requests.adapters.HTTPAdapter object at 0x00000224B5406E90>, request = <PreparedRequest [GET]>, retries = None 
kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': 5, ...}, match = None, match_failed_reasons = ['URL does not match'], resp_callback = None
error_msg = "Connection refused by Responses - the call doesn't match any registered mock.\n\nRequest: \n- GET https://raw.githubu...s:\n- GET https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json U
RL does not match\n"
i = 0, m = <Response(url='https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json' status=200 content_type='application/json' headers='null')> 

    def _on_request( 
        self,
        adapter: "HTTPAdapter",
        request: "PreparedRequest", 
        *,
        retries: Optional["_Retry"] = None,
        **kwargs: Any,
    ) -> "models.Response":
        # add attributes params and req_kwargs to 'request' object for further match comparison
        # original request object does not have these attributes
        request.params = self._parse_request_params(request.path_url)  # type: ignore[attr-defined]
        request.req_kwargs = kwargs  # type: ignore[attr-defined]
        request_url = str(request.url)

        match, match_failed_reasons = self._find_match(request)
        resp_callback = self.response_callback

        if match is None:
            if any(
                [
                    p.match(request_url) 
                    if isinstance(p, Pattern)
                    else request_url.startswith(p)
                    for p in self.passthru_prefixes
                ]
            ):
                logger.info("request.allowed-passthru", extra={"url": request_url})
                return _real_send(adapter, request, **kwargs)

            error_msg = (
                "Connection refused by Responses - the call doesn't "
                "match any registered mock.\n\n"
                "Request: \n"
                f"- {request.method} {request_url}\n\n"
                "Available matches:\n"
            )
            for i, m in enumerate(self.registered()):
                error_msg += "- {} {} {}\n".format(
                    m.method, m.url, match_failed_reasons[i]
                )

            if self.passthru_prefixes:
                error_msg += "Passthru prefixes:\n"
                for p in self.passthru_prefixes:
                    error_msg += "- {}\n".format(p)

            response = ConnectionError(error_msg)
            response.request = request

            self._calls.add(request, response)
>           raise response
E           requests.exceptions.ConnectionError: Connection refused by Responses - the call doesn't match any registered mock.
E           
E           Request: 
E           - GET https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains%5Cpath%5Cchain.json
E           
E           Available matches:
E           - GET https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json URL does not match

.venv\lib\site-packages\responses\__init__.py:1032: ConnectionError
_________________________________________________________________________________________________________ test_success[v0.3] __________________________________________________________________________________________________________ 

mocked_responses = <responses.RequestsMock object at 0x00000224B545F820>, ref = 'v0.3'

    @pytest.mark.parametrize("ref", [None, "v0.3"]) 
    def test_success(mocked_responses: responses.RequestsMock, ref: str) -> None:
        """Test that a valid hub path is loaded correctly with and without a ref."""
        path = "chains/path/chain.json"
        lc_path_prefix = f"lc{('@' + ref) if ref else ''}://"
        valid_suffixes = {"json"}
        body = json.dumps({"foo": "bar"})
        ref = ref or DEFAULT_REF

        file_contents = None
     
        def loader(file_path: str) -> None:
            nonlocal file_contents
            assert file_contents is None
            file_contents = Path(file_path).read_text()

        mocked_responses.get(
            urljoin(URL_BASE.format(ref=ref), path),
            body=body,
            status=200, 
            content_type="application/json",
        )

>       try_load_from_hub(f"{lc_path_prefix}{path}", loader, "chains", valid_suffixes)

tests\unit_tests\utilities\test_loading.py:80:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
langchain\utilities\loading.py:42: in try_load_from_hub
    r = requests.get(full_url, timeout=5) 
.venv\lib\site-packages\requests\api.py:73: in get
    return request("get", url, params=params, **kwargs)
.venv\lib\site-packages\requests\api.py:59: in request
    return session.request(method=method, url=url, **kwargs)
.venv\lib\site-packages\requests\sessions.py:587: in request 
    resp = self.send(prep, **send_kwargs)
.venv\lib\site-packages\requests\sessions.py:701: in send
    r = adapter.send(request, **kwargs)
.venv\lib\site-packages\responses\__init__.py:1090: in unbound_on_send
    return self._on_request(adapter, request, *a, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <responses.RequestsMock object at 0x00000224B545F820>, adapter = <requests.adapters.HTTPAdapter object at 0x00000224B545FE80>, request = <PreparedRequest [GET]>, retries = None 
kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': 5, ...}, match = None, match_failed_reasons = ['URL does not match'], resp_callback = None
error_msg = "Connection refused by Responses - the call doesn't match any registered mock.\n\nRequest: \n- GET https://raw.githubu...hes:\n- GET https://raw.githubusercontent.com/hwchase17/langchain-hub/v0.3/chains/path/chain.json U
RL does not match\n"
i = 0, m = <Response(url='https://raw.githubusercontent.com/hwchase17/langchain-hub/v0.3/chains/path/chain.json' status=200 content_type='application/json' headers='null')>

    def _on_request( 
        self,
        adapter: "HTTPAdapter",
        request: "PreparedRequest",
        *,
        retries: Optional["_Retry"] = None,
        **kwargs: Any,
    ) -> "models.Response":
        # add attributes params and req_kwargs to 'request' object for further match comparison
        # original request object does not have these attributes
        request.params = self._parse_request_params(request.path_url)  # type: ignore[attr-defined]
        request.req_kwargs = kwargs  # type: ignore[attr-defined]
        request_url = str(request.url)

        match, match_failed_reasons = self._find_match(request)
        resp_callback = self.response_callback
 
        if match is None:
            if any(
                [
                    p.match(request_url)
                    if isinstance(p, Pattern)
                    else request_url.startswith(p)
                    for p in self.passthru_prefixes
                ]
            ):
                logger.info("request.allowed-passthru", extra={"url": request_url})
                return _real_send(adapter, request, **kwargs)

            error_msg = (
                "Connection refused by Responses - the call doesn't "
                "match any registered mock.\n\n"
                "Request: \n"
                f"- {request.method} {request_url}\n\n"
                "Available matches:\n"
            )
            for i, m in enumerate(self.registered()):
                error_msg += "- {} {} {}\n".format( 
                    m.method, m.url, match_failed_reasons[i]
                )

            if self.passthru_prefixes:
                error_msg += "Passthru prefixes:\n"
                for p in self.passthru_prefixes:
                    error_msg += "- {}\n".format(p)

            response = ConnectionError(error_msg)
            response.request = request
     
            self._calls.add(request, response)
>           raise response
E           requests.exceptions.ConnectionError: Connection refused by Responses - the call doesn't match any registered mock.
E           
E           Request: 
E           - GET https://raw.githubusercontent.com/hwchase17/langchain-hub/v0.3/chains%5Cpath%5Cchain.json
E           
E           Available matches:
E           - GET https://raw.githubusercontent.com/hwchase17/langchain-hub/v0.3/chains/path/chain.json URL does not match

.venv\lib\site-packages\responses\__init__.py:1032: ConnectionError
_________________________________________________________________________________________________________ test_failed_request _________________________________________________________________________________________________________ 

mocked_responses = <responses.RequestsMock object at 0x00000224B42E75E0>
 
    def test_failed_request(mocked_responses: responses.RequestsMock) -> None:
        """Test that a failed request raises an error."""
        path = "chains/path/chain.json"
        loader = Mock()

        mocked_responses.get(urljoin(URL_BASE.format(ref=DEFAULT_REF), path), status=500)

        with pytest.raises(ValueError, match=re.compile("Could not find file at .*")):
>           try_load_from_hub(f"lc://{path}", loader, "chains", {"json"})

tests\unit_tests\utilities\test_loading.py:92:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
langchain\utilities\loading.py:42: in try_load_from_hub
    r = requests.get(full_url, timeout=5)
.venv\lib\site-packages\requests\api.py:73: in get
    return request("get", url, params=params, **kwargs)
.venv\lib\site-packages\requests\api.py:59: in request
    return session.request(method=method, url=url, **kwargs) 
.venv\lib\site-packages\requests\sessions.py:587: in request
    resp = self.send(prep, **send_kwargs)
.venv\lib\site-packages\requests\sessions.py:701: in send
    r = adapter.send(request, **kwargs)
.venv\lib\site-packages\responses\__init__.py:1090: in unbound_on_send
    return self._on_request(adapter, request, *a, **kwargs) 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <responses.RequestsMock object at 0x00000224B42E75E0>, adapter = <requests.adapters.HTTPAdapter object at 0x00000224A0C85390>, request = <PreparedRequest [GET]>, retries = None
kwargs = {'cert': None, 'proxies': OrderedDict(), 'stream': False, 'timeout': 5, ...}, match = None, match_failed_reasons = ['URL does not match'], resp_callback = None
error_msg = "Connection refused by Responses - the call doesn't match any registered mock.\n\nRequest: \n- GET https://raw.githubu...s:\n- GET https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json U
RL does not match\n"
i = 0, m = <Response(url='https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json' status=500 content_type='text/plain' headers='null')>

    def _on_request( 
        self,
        adapter: "HTTPAdapter",
        request: "PreparedRequest",
        *,
        retries: Optional["_Retry"] = None,
        **kwargs: Any,
    ) -> "models.Response":
        # add attributes params and req_kwargs to 'request' object for further match comparison
        # original request object does not have these attributes
        request.params = self._parse_request_params(request.path_url)  # type: ignore[attr-defined]
        request.req_kwargs = kwargs  # type: ignore[attr-defined] 
        request_url = str(request.url)

        match, match_failed_reasons = self._find_match(request)
        resp_callback = self.response_callback

        if match is None:
            if any(
                [
                    p.match(request_url)
                    if isinstance(p, Pattern)
                    else request_url.startswith(p)
                    for p in self.passthru_prefixes
                ]
            ):
                logger.info("request.allowed-passthru", extra={"url": request_url})
                return _real_send(adapter, request, **kwargs)

            error_msg = (
                "Connection refused by Responses - the call doesn't "
                "match any registered mock.\n\n"
                "Request: \n" 
                f"- {request.method} {request_url}\n\n"
                "Available matches:\n"
            )
            for i, m in enumerate(self.registered()):
                error_msg += "- {} {} {}\n".format(
                    m.method, m.url, match_failed_reasons[i]
                )

            if self.passthru_prefixes:
                error_msg += "Passthru prefixes:\n" 
                for p in self.passthru_prefixes:
                    error_msg += "- {}\n".format(p)

            response = ConnectionError(error_msg)
            response.request = request

            self._calls.add(request, response)
>           raise response
E           requests.exceptions.ConnectionError: Connection refused by Responses - the call doesn't match any registered mock.
E            
E           Request: 
E           - GET https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains%5Cpath%5Cchain.json
E           
E           Available matches:
E           - GET https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json URL does not match

.venv\lib\site-packages\responses\__init__.py:1032: ConnectionError
========================================================================================================== warnings summary =========================================================================================================== 
tests\unit_tests\output_parsers\test_pydantic_parser.py:18 
  D:\Projects\Pycharm\sergerdn\langchain\tests\unit_tests\output_parsers\test_pydantic_parser.py:18: PytestCollectionWarning: cannot collect test class 'TestModel' because it has a __init__ constructor (from: tests/unit_tests/output
_parsers/test_pydantic_parser.py)
    class TestModel(BaseModel):

tests/unit_tests/test_sql_database.py::test_table_info
  D:\Projects\Pycharm\sergerdn\langchain\langchain\sql_database.py:142: RemovedIn20Warning: Deprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0. To prevent incompatible upgrades prior to updatin
g applications, ensure requirements files are pinned to "sqlalchemy<2.0". Set environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings.  Set environment variable SQLALCHEMY_SILENCE_UBER_WARNING=1 to silence this me
ssage. (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
    command = select([table]).limit(self._sample_rows_in_table_info)
 
tests/unit_tests/test_sql_database_schema.py::test_sql_database_run
  D:\Projects\Pycharm\sergerdn\langchain\.venv\lib\site-packages\duckdb_engine\__init__.py:160: DuckDBEngineWarning: duckdb-engine doesn't yet support reflection on indices
    warnings.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================================================================================================= short test summary info ======================================================================================================= 
FAILED tests/unit_tests/utilities/test_loading.py::test_success[None] - requests.exceptions.ConnectionError: Connection refused by Responses - the call doesn't match any registered mock.
FAILED tests/unit_tests/utilities/test_loading.py::test_success[v0.3] - requests.exceptions.ConnectionError: Connection refused by Responses - the call doesn't match any registered mock.
FAILED tests/unit_tests/utilities/test_loading.py::test_failed_request - requests.exceptions.ConnectionError: Connection refused by Responses - the call doesn't match any registered mock.
ERROR tests/unit_tests/utilities/test_loading.py::test_success[None] - AssertionError: Not all requests have been executed [('GET', 'https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json')]
ERROR tests/unit_tests/utilities/test_loading.py::test_success[v0.3] - AssertionError: Not all requests have been executed [('GET', 'https://raw.githubusercontent.com/hwchase17/langchain-hub/v0.3/chains/path/chain.json')]
ERROR tests/unit_tests/utilities/test_loading.py::test_failed_request - AssertionError: Not all requests have been executed [('GET', 'https://raw.githubusercontent.com/hwchase17/langchain-hub/master/chains/path/chain.json')]        
=================================================================================== 3 failed, 199 passed, 5 skipped, 3 warnings, 3 errors in 7.00s ==================================================================================== 
make: *** [Makefile:35: tests] Error 1

Administrator@WIN-CNQJV5TD9DP MINGW64 /d/Projects/Pycharm/sergerdn/langchain (fix/dockerfile)
$


@sergerdn sergerdn changed the title Tests were not executed properly either locally on a Windows system or in Docker. Unit tests were not executed properly either locally on a Windows system or in Docker. Apr 3, 2023
@sergerdn sergerdn changed the title Unit tests were not executed properly either locally on a Windows system or in Docker. Unit tests were not executed properly either locally on a Windows system Apr 3, 2023
@sergerdn sergerdn changed the title Unit tests were not executed properly either locally on a Windows system Unit tests were not executed properly locally on a Windows system Apr 3, 2023
hwchase17 pushed a commit that referenced this issue Apr 3, 2023
This changes addresses two issues.

First, we add `setuptools` to the dev dependencies in order to debug
tests locally with an IDE, especially with PyCharm. All dependencies dev
dependencies should be installed with `poetry install --extras "dev"`.

Second, we use PurePosixPath instead of Path for URL paths to fix issues
with testing in Windows. This ensures that forward slashes are used as
the path separator regardless of the operating system.

Closes #2334
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant