diff --git a/.github/actions/poetry_setup/action.yml b/.github/actions/poetry_setup/action.yml index 22dcb05e16..9d7ce548de 100644 --- a/.github/actions/poetry_setup/action.yml +++ b/.github/actions/poetry_setup/action.yml @@ -31,20 +31,20 @@ runs: with: python-version: ${{ inputs.python-version }} - - uses: actions/cache@v3 - id: cache-bin-poetry - name: Cache Poetry binary - Python ${{ inputs.python-version }} - env: - SEGMENT_DOWNLOAD_TIMEOUT_MIN: "1" - with: - path: | - /opt/pipx/venvs/poetry - /opt/pipx_bin/poetry - # This step caches the poetry installation, so make sure it's keyed on the poetry version as well. - key: bin-poetry-${{ runner.os }}-${{ runner.arch }}-py-${{ inputs.python-version }}-${{ inputs.poetry-version }} + # - uses: actions/cache@v3 + # id: cache-bin-poetry + # name: Cache Poetry binary - Python ${{ inputs.python-version }} + # env: + # SEGMENT_DOWNLOAD_TIMEOUT_MIN: "1" + # with: + # path: | + # /opt/pipx/venvs/poetry + # /opt/pipx_bin/poetry + # # This step caches the poetry installation, so make sure it's keyed on the poetry version as well. + # key: bin-poetry-${{ runner.os }}-${{ runner.arch }}-py-${{ inputs.python-version }}-${{ inputs.poetry-version }} - name: Install poetry - if: steps.cache-bin-poetry.outputs.cache-hit != 'true' + # if: steps.cache-bin-poetry.outputs.cache-hit != 'true' shell: bash env: POETRY_VERSION: ${{ inputs.poetry-version }} diff --git a/libs/langchain/langchain/document_loaders/async_html.py b/libs/langchain/langchain/document_loaders/async_html.py index 286319a5ee..80436bfec6 100644 --- a/libs/langchain/langchain/document_loaders/async_html.py +++ b/libs/langchain/langchain/document_loaders/async_html.py @@ -1,7 +1,8 @@ import asyncio import logging import warnings -from typing import Any, Dict, Iterator, List, Optional, Union +from concurrent.futures import ThreadPoolExecutor +from typing import Any, Dict, Iterator, List, Optional, Union, cast import aiohttp import requests @@ -129,9 +130,18 @@ class AsyncHtmlLoader(BaseLoader): def load(self) -> List[Document]: """Load text from the url(s) in web_path.""" - results = asyncio.run(self.fetch_all(self.web_paths)) + try: + # Raises RuntimeError if there is no current event loop. + asyncio.get_running_loop() + # If there is a current event loop, we need to run the async code + # in a separate loop, in a separate thread. + with ThreadPoolExecutor(max_workers=1) as executor: + future = executor.submit(asyncio.run, self.fetch_all(self.web_paths)) + results = future.result() + except RuntimeError: + results = asyncio.run(self.fetch_all(self.web_paths)) docs = [] - for i, text in enumerate(results): + for i, text in enumerate(cast(List[str], results)): metadata = {"source": self.web_paths[i]} docs.append(Document(page_content=text, metadata=metadata)) diff --git a/libs/langchain/pyproject.toml b/libs/langchain/pyproject.toml index a92b62249c..7b511eb991 100644 --- a/libs/langchain/pyproject.toml +++ b/libs/langchain/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langchain" -version = "0.0.281" +version = "0.0.282" description = "Building applications with LLMs through composability" authors = [] license = "MIT"