From db10422ff96a32338bd6502626d625f65d4c89e1 Mon Sep 17 00:00:00 2001 From: Jirka Borovec <6035284+Borda@users.noreply.github.com> Date: Fri, 9 Dec 2022 20:46:57 +0100 Subject: [PATCH] dependencies (#15994) * dependencies * 0.0.4 * CI: hotfix signal if (#15995) signal if (cherry picked from commit 1706ccdbf8c1e59f2e56a486ce79a825eb078705) * revert * [App] Fix import errors for the packages installed by shebang (#15996) * import fix * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * import fix * move req * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update requirements/app/base.txt * revert * skip doctest * import fix Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Jirka (cherry picked from commit 4bdc1858fabcb777ccdbb0cda2decbcb291a39b3) Co-authored-by: Sherin Thomas --- .github/workflows/release-pypi.yml | 1 + requirements/app/base.txt | 1 + requirements/app/cloud.txt | 1 - .../components/serve/python_server.py | 57 ++++++++++--------- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/.github/workflows/release-pypi.yml b/.github/workflows/release-pypi.yml index 1d9d0a2eeda25..090eae5553aa3 100644 --- a/.github/workflows/release-pypi.yml +++ b/.github/workflows/release-pypi.yml @@ -92,6 +92,7 @@ jobs: signaling: runs-on: ubuntu-20.04 needs: [release-version] + if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release' env: TAG: ${{ needs.release-version.outputs.tag }} steps: diff --git a/requirements/app/base.txt b/requirements/app/base.txt index 9590f2c1a2fbd..37e91689bb54d 100644 --- a/requirements/app/base.txt +++ b/requirements/app/base.txt @@ -12,3 +12,4 @@ beautifulsoup4>=4.8.0, <4.11.2 inquirer>=2.10.0 psutil<5.9.4 click<=8.1.3 +aiohttp>=3.8.0, <=3.8.3 diff --git a/requirements/app/cloud.txt b/requirements/app/cloud.txt index 512cacf130e1d..f2fd258c4185a 100644 --- a/requirements/app/cloud.txt +++ b/requirements/app/cloud.txt @@ -4,4 +4,3 @@ redis>=4.0.1, <=4.2.4 docker>=5.0.0, <=5.0.3 # setuptools==59.5.0 s3fs>=2022.5.0, <2022.8.3 -aiohttp>=3.8.0, <=3.8.3 diff --git a/src/lightning_app/components/serve/python_server.py b/src/lightning_app/components/serve/python_server.py index c522a25eb3f3d..e447673993973 100644 --- a/src/lightning_app/components/serve/python_server.py +++ b/src/lightning_app/components/serve/python_server.py @@ -7,7 +7,7 @@ import uvicorn from fastapi import FastAPI -from lightning_utilities.core.imports import compare_version, module_available +from lightning_utilities.core.imports import compare_version from pydantic import BaseModel from lightning_app.core.work import LightningWork @@ -16,10 +16,8 @@ logger = Logger(__name__) -__doctest_skip__ = [] -# Skip doctests if requirements aren't available -if not module_available("lightning_api_access"): - __doctest_skip__ += ["PythonServer", "PythonServer.*"] +__doctest_skip__ = ["PythonServer", "PythonServer.*"] + # Skip doctests if requirements aren't available if not _is_torch_available(): @@ -72,7 +70,7 @@ class PythonServer(LightningWork, abc.ABC): _start_method = "spawn" - @requires(["torch", "lightning_api_access"]) + @requires(["torch"]) def __init__( # type: ignore self, input_type: type = _DefaultInputData, @@ -193,29 +191,32 @@ def predict_fn(request: input_type): # type: ignore fastapi_app.post("/predict", response_model=output_type)(predict_fn) def configure_layout(self) -> None: - if module_available("lightning_api_access"): + try: from lightning_api_access import APIAccessFrontend - - class_name = self.__class__.__name__ - url = f"{self.url}/predict" - - try: - request = self._get_sample_dict_from_datatype(self.configure_input_type()) - response = self._get_sample_dict_from_datatype(self.configure_output_type()) - except TypeError: - return None - - return APIAccessFrontend( - apis=[ - { - "name": class_name, - "url": url, - "method": "POST", - "request": request, - "response": response, - } - ] - ) + except ModuleNotFoundError: + logger.warn("APIAccessFrontend not found. Please install lightning-api-access to enable the UI") + return + + class_name = self.__class__.__name__ + url = f"{self.url}/predict" + + try: + request = self._get_sample_dict_from_datatype(self.configure_input_type()) + response = self._get_sample_dict_from_datatype(self.configure_output_type()) + except TypeError: + return None + + return APIAccessFrontend( + apis=[ + { + "name": class_name, + "url": url, + "method": "POST", + "request": request, + "response": response, + } + ] + ) def run(self, *args: Any, **kwargs: Any) -> Any: """Run method takes care of configuring and setting up a FastAPI server behind the scenes.