diff options
| author | Nate Sesti <sestinj@gmail.com> | 2023-08-18 15:17:04 -0700 | 
|---|---|---|
| committer | Nate Sesti <sestinj@gmail.com> | 2023-08-18 15:17:04 -0700 | 
| commit | 70370bf0d033c2575c84ffe10c9e5c484bbad54f (patch) | |
| tree | be55005a3ef2867594a432ea12786098ae6a6c94 /continuedev/src/continuedev/server | |
| parent | ab7a90a0972188dcc7b8c28b1263c918776ca19d (diff) | |
| download | sncontinue-70370bf0d033c2575c84ffe10c9e5c484bbad54f.tar.gz sncontinue-70370bf0d033c2575c84ffe10c9e5c484bbad54f.tar.bz2 sncontinue-70370bf0d033c2575c84ffe10c9e5c484bbad54f.zip  | |
style: :art: autoformat with black on all python files
Diffstat (limited to 'continuedev/src/continuedev/server')
5 files changed, 65 insertions, 43 deletions
diff --git a/continuedev/src/continuedev/server/gui_protocol.py b/continuedev/src/continuedev/server/gui_protocol.py index 990833be..d079475c 100644 --- a/continuedev/src/continuedev/server/gui_protocol.py +++ b/continuedev/src/continuedev/server/gui_protocol.py @@ -1,7 +1,5 @@ -from typing import Any, Dict, List  from abc import ABC, abstractmethod - -from ..core.context import ContextItem +from typing import Any  class AbstractGUIProtocolServer(ABC): diff --git a/continuedev/src/continuedev/server/ide_protocol.py b/continuedev/src/continuedev/server/ide_protocol.py index 72b410d4..f63fecf8 100644 --- a/continuedev/src/continuedev/server/ide_protocol.py +++ b/continuedev/src/continuedev/server/ide_protocol.py @@ -1,10 +1,10 @@ +from abc import ABC, abstractmethod  from typing import Any, List, Union -from abc import ABC, abstractmethod, abstractproperty +  from fastapi import WebSocket -from ..models.main import Traceback -from ..models.filesystem_edit import FileEdit, FileSystemEdit, EditDiff  from ..models.filesystem import RangeInFile, RangeInFileWithContents +from ..models.filesystem_edit import EditDiff, FileEdit, FileSystemEdit  class AbstractIdeProtocolServer(ABC): diff --git a/continuedev/src/continuedev/server/main.py b/continuedev/src/continuedev/server/main.py index f0a3f094..00ded6f1 100644 --- a/continuedev/src/continuedev/server/main.py +++ b/continuedev/src/continuedev/server/main.py @@ -1,18 +1,16 @@ +import argparse  import asyncio -import time -import psutil -import os -from fastapi import FastAPI -from fastapi.middleware.cors import CORSMiddleware  import atexit -import uvicorn -import argparse +import uvicorn +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware -from .ide import router as ide_router -from .gui import router as gui_router -from .session_manager import session_manager, router as sessions_router  from ..libs.util.logging import logger +from .gui import router as gui_router +from .ide import router as ide_router +from .session_manager import router as sessions_router +from .session_manager import session_manager  app = FastAPI() @@ -39,8 +37,7 @@ def health():  try:      # add cli arg for server port      parser = argparse.ArgumentParser() -    parser.add_argument("-p", "--port", help="server port", -                        type=int, default=65432) +    parser.add_argument("-p", "--port", help="server port", type=int, default=65432)      args = parser.parse_args()  except Exception as e:      logger.debug(f"Error parsing command line arguments: {e}") diff --git a/continuedev/src/continuedev/server/meilisearch_server.py b/continuedev/src/continuedev/server/meilisearch_server.py index f47c08ca..98b48685 100644 --- a/continuedev/src/continuedev/server/meilisearch_server.py +++ b/continuedev/src/continuedev/server/meilisearch_server.py @@ -5,8 +5,8 @@ import subprocess  from meilisearch_python_async import Client -from ..libs.util.paths import getServerFolderPath  from ..libs.util.logging import logger +from ..libs.util.paths import getServerFolderPath  def ensure_meilisearch_installed() -> bool: @@ -43,7 +43,11 @@ def ensure_meilisearch_installed() -> bool:          # Download MeiliSearch          logger.debug("Downloading MeiliSearch...")          subprocess.run( -            f"curl -L https://install.meilisearch.com | sh", shell=True, check=True, cwd=serverPath) +            "curl -L https://install.meilisearch.com | sh", +            shell=True, +            check=True, +            cwd=serverPath, +        )          return False @@ -56,7 +60,7 @@ async def check_meilisearch_running() -> bool:      """      try: -        async with Client('http://localhost:7700') as client: +        async with Client("http://localhost:7700") as client:              try:                  resp = await client.health()                  if resp.status != "available": @@ -96,5 +100,11 @@ async def start_meilisearch():      # Check if MeiliSearch is running      if not await check_meilisearch_running() or not was_already_installed:          logger.debug("Starting MeiliSearch...") -        subprocess.Popen(["./meilisearch", "--no-analytics"], cwd=serverPath, stdout=subprocess.DEVNULL, -                         stderr=subprocess.STDOUT, close_fds=True, start_new_session=True) +        subprocess.Popen( +            ["./meilisearch", "--no-analytics"], +            cwd=serverPath, +            stdout=subprocess.DEVNULL, +            stderr=subprocess.STDOUT, +            close_fds=True, +            start_new_session=True, +        ) diff --git a/continuedev/src/continuedev/server/session_manager.py b/continuedev/src/continuedev/server/session_manager.py index 88ac13f6..6f4e4a87 100644 --- a/continuedev/src/continuedev/server/session_manager.py +++ b/continuedev/src/continuedev/server/session_manager.py @@ -1,20 +1,23 @@ +import json  import os  import traceback -from fastapi import WebSocket, APIRouter  from typing import Any, Coroutine, Dict, Optional, Union  from uuid import uuid4 -import json +from fastapi import APIRouter, WebSocket  from fastapi.websockets import WebSocketState -from ..plugins.steps.core.core import MessageStep -from ..libs.util.paths import getSessionFilePath, getSessionsFolderPath, getSessionsListFilePath -from ..core.main import FullState, HistoryNode, SessionInfo  from ..core.autopilot import Autopilot -from .ide_protocol import AbstractIdeProtocolServer +from ..core.main import FullState  from ..libs.util.create_async_task import create_async_task  from ..libs.util.errors import SessionNotFound  from ..libs.util.logging import logger +from ..libs.util.paths import ( +    getSessionFilePath, +    getSessionsFolderPath, +    getSessionsListFilePath, +) +from .ide_protocol import AbstractIdeProtocolServer  router = APIRouter(prefix="/sessions", tags=["sessions"]) @@ -42,14 +45,21 @@ class SessionManager:              # And only if the IDE is still alive              sessions_folder = getSessionsFolderPath()              session_files = os.listdir(sessions_folder) -            if f"{session_id}.json" in session_files and session_id in self.registered_ides: +            if ( +                f"{session_id}.json" in session_files +                and session_id in self.registered_ides +            ):                  if self.registered_ides[session_id].session_id is not None: -                    return await self.new_session(self.registered_ides[session_id], session_id=session_id) +                    return await self.new_session( +                        self.registered_ides[session_id], session_id=session_id +                    )              raise KeyError("Session ID not recognized", session_id)          return self.sessions[session_id] -    async def new_session(self, ide: AbstractIdeProtocolServer, session_id: Optional[str] = None) -> Session: +    async def new_session( +        self, ide: AbstractIdeProtocolServer, session_id: Optional[str] = None +    ) -> Session:          logger.debug(f"New session: {session_id}")          # Load the persisted state (not being used right now) @@ -68,9 +78,9 @@ class SessionManager:          # Set up the autopilot to update the GUI          async def on_update(state: FullState): -            await session_manager.send_ws_data(session_id, "state_update", { -                "state": state.dict() -            }) +            await session_manager.send_ws_data( +                session_id, "state_update", {"state": state.dict()} +            )          autopilot.on_update(on_update) @@ -81,7 +91,7 @@ class SessionManager:              await ide.on_error(e)          def on_error(e: Exception) -> Coroutine: -            err_msg = '\n'.join(traceback.format_exception(e)) +            err_msg = "\n".join(traceback.format_exception(e))              return ide.showMessage(f"Error in Continue server: {err_msg}")          create_async_task(autopilot.run_policy(), on_error) @@ -90,9 +100,15 @@ class SessionManager:      async def remove_session(self, session_id: str):          logger.debug(f"Removing session: {session_id}")          if session_id in self.sessions: -            if session_id in self.registered_ides and self.registered_ides[session_id] is not None: +            if ( +                session_id in self.registered_ides +                and self.registered_ides[session_id] is not None +            ):                  ws_to_close = self.registered_ides[session_id].websocket -                if ws_to_close is not None and ws_to_close.client_state != WebSocketState.DISCONNECTED: +                if ( +                    ws_to_close is not None +                    and ws_to_close.client_state != WebSocketState.DISCONNECTED +                ):                      await self.sessions[session_id].autopilot.ide.websocket.close()              del self.sessions[session_id] @@ -117,7 +133,9 @@ class SessionManager:          with open(getSessionsListFilePath(), "w") as f:              json.dump(sessions_list, f) -    async def load_session(self, old_session_id: str, new_session_id: Optional[str] = None) -> str: +    async def load_session( +        self, old_session_id: str, new_session_id: Optional[str] = None +    ) -> str:          """Load the session's FullState from a json file"""          # First persist the current state @@ -142,10 +160,9 @@ class SessionManager:              # logger.debug(f"Session {session_id} has no websocket")              return -        await self.sessions[session_id].ws.send_json({ -            "messageType": message_type, -            "data": data -        }) +        await self.sessions[session_id].ws.send_json( +            {"messageType": message_type, "data": data} +        )  session_manager = SessionManager()  | 
