--- a/src/eric7/VirtualEnv/VirtualenvMeta.py Wed Apr 23 17:23:57 2025 +0200 +++ b/src/eric7/VirtualEnv/VirtualenvMeta.py Wed Apr 23 18:02:09 2025 +0200 @@ -4,7 +4,7 @@ # """ -Module implementing a dataclass containing the metadata of a virtual environment. +Module implementing a data class containing the metadata of a virtual environment. """ from dataclasses import asdict, dataclass @@ -20,12 +20,11 @@ path: str = "" # directory of the virtual environment (empty for a global one) interpreter: str = "" # path of the Python interpreter is_global: bool = False # flag indicating a global environment - is_conda: bool = False # flag indicating an Anaconda environment - is_remote: bool = False # flag indicating a remotely accessed environment + environment_type: str = "standard" # virtual environment type exec_path: str = "" # string to be prefixed to the PATH environment setting description: str = "" # description of the environment - is_eric_server: bool = False # flag indicating an eric-ide server environment eric_server: str = "" # server name the environment belongs to + meta_version: int = 2 # version number of the meta data structure def as_dict(self): """ @@ -46,15 +45,24 @@ @return created metadata object @rtype VirtualenvMetaData """ + if data.get("meta_version", 1) < 2: + # convert from meta version 1 + if data.get("is_conda", False): + data["environment_type"] = "conda" + elif data.get("is_remote", False): + data["environment_type"] = "remote" + elif data.get("is_eric_server", False): + data["environment_type"] = "eric_server" + else: + data["environment_type"] = "standard" + return cls( name=data["name"], path=data.get("path", ""), interpreter=data.get("interpreter", ""), is_global=data.get("is_global", False), - is_conda=data.get("is_conda", False), - is_remote=data.get("is_remote", False), + environment_type=data.get("environment_type", "standard"), exec_path=data.get("exec_path", ""), description=data.get("description", ""), - is_eric_server=data.get("is_eric_server", False), eric_server=data.get("eric_server", ""), )