diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-10-02 16:06:07 -0700 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-10-02 16:06:07 -0700 |
commit | eecc2b57c5c5a144abfc0623102438e902c4aeba (patch) | |
tree | 6b912ef09e9ec269a7f4df4fdd645af837ebeb52 | |
parent | 98f340bd97cba6f30cfe55d47419e3925b9dc679 (diff) | |
download | sncontinue-eecc2b57c5c5a144abfc0623102438e902c4aeba.tar.gz sncontinue-eecc2b57c5c5a144abfc0623102438e902c4aeba.tar.bz2 sncontinue-eecc2b57c5c5a144abfc0623102438e902c4aeba.zip |
fix: :bug: automigrate between short/long imports
-rw-r--r-- | continuedev/src/continuedev/core/sdk.py | 35 | ||||
-rw-r--r-- | continuedev/src/continuedev/libs/util/paths.py | 22 |
2 files changed, 48 insertions, 9 deletions
diff --git a/continuedev/src/continuedev/core/sdk.py b/continuedev/src/continuedev/core/sdk.py index e8ee8167..c3b50375 100644 --- a/continuedev/src/continuedev/core/sdk.py +++ b/continuedev/src/continuedev/core/sdk.py @@ -5,7 +5,11 @@ from typing import Coroutine, List, Optional, Union from ..libs.llm import LLM from ..libs.util.devdata import dev_data_logger from ..libs.util.logging import logger -from ..libs.util.paths import getConfigFilePath, getDiffsFolderPath +from ..libs.util.paths import ( + convertConfigImports, + getConfigFilePath, + getDiffsFolderPath, +) from ..libs.util.telemetry import posthog_logger from ..models.filesystem import RangeInFile from ..models.filesystem_edit import ( @@ -236,14 +240,27 @@ class ContinueSDK(AbstractContinueSDK): _last_valid_config: ContinueConfig = None - def _load_config_dot_py(self) -> ContinueConfig: - path = getConfigFilePath() - config = ContinueConfig.from_filepath(path) - self._last_valid_config = config - - logger.debug("Loaded Continue config file from %s", path) - - return config + def _load_config_dot_py(self, retry: bool = True) -> ContinueConfig: + try: + path = getConfigFilePath() + config = ContinueConfig.from_filepath(path) + self._last_valid_config = config + + logger.debug("Loaded Continue config file from %s", path) + + return config + except ModuleNotFoundError as e: + if not retry: + raise e + # Check if the module was "continuedev.src" + if e.name == "continuedev.src": + convertConfigImports(shorten=True) + return self._load_config_dot_py(retry=False) + elif e.name.startswith("continuedev."): + convertConfigImports(shorten=False) + return self._load_config_dot_py(retry=False) + else: + raise e def get_code_context( self, only_editing: bool = False diff --git a/continuedev/src/continuedev/libs/util/paths.py b/continuedev/src/continuedev/libs/util/paths.py index 9d4eccd6..88c25aff 100644 --- a/continuedev/src/continuedev/libs/util/paths.py +++ b/continuedev/src/continuedev/libs/util/paths.py @@ -1,4 +1,5 @@ import os +import re from typing import Optional from ..constants.default_config import default_config @@ -111,6 +112,27 @@ def getConfigFilePath() -> str: return path +def convertConfigImports(shorten: bool) -> str: + path = getConfigFilePath() + # Make any necessary migrations + with open(path, "r") as f: + existing_content = f.read() + + if shorten: + migrated = existing_content.replace( + "from continuedev.src.continuedev.", "from continuedev." + ) + else: + migrated = re.sub( + r"(?<!src\.)continuedev\.(?!src)", + "continuedev.src.continuedev.", + existing_content, + ) + + with open(path, "w") as f: + f.write(migrated) + + def getLogFilePath(): path = os.path.join(getGlobalFolderPath(), "continue.log") os.makedirs(os.path.dirname(path), exist_ok=True) |