Compare commits
1 Commits
2025.10.22
...
2025.10.19
| Author | SHA1 | Date | |
|---|---|---|---|
| 88d5d78583 |
@@ -12,11 +12,11 @@ T = TypeVar("T", bound="CPLStructureModel")
|
||||
|
||||
class CPLStructureModel:
|
||||
def __init__(self, path: Optional[str] = None):
|
||||
self._path = path
|
||||
self.__path = path
|
||||
|
||||
@property
|
||||
def path(self) -> Optional[str]:
|
||||
return self._path
|
||||
return self.__path
|
||||
|
||||
@classmethod
|
||||
def from_file(cls: Type[T], path: Path | str) -> T:
|
||||
@@ -68,7 +68,7 @@ class CPLStructureModel:
|
||||
def to_json(self) -> Dict[str, Any]:
|
||||
result: Dict[str, Any] = {}
|
||||
for key, value in self.__dict__.items():
|
||||
if not key.startswith("_") or key == "_path":
|
||||
if not key.startswith("_") or key.startswith("__") or key.endswith("_"):
|
||||
continue
|
||||
out_key = _self_or_cls_snake_to_camel(key[1:])
|
||||
|
||||
@@ -79,13 +79,13 @@ class CPLStructureModel:
|
||||
return result
|
||||
|
||||
def save(self):
|
||||
if not self._path:
|
||||
if not self.__path:
|
||||
raise ValueError("Cannot save model without a path.")
|
||||
|
||||
if not Path(self._path).exists():
|
||||
os.makedirs(Path(self._path).parent, exist_ok=True)
|
||||
if not Path(self.__path).exists():
|
||||
os.makedirs(Path(self.__path).parent, exist_ok=True)
|
||||
|
||||
with open(self._path, "w", encoding="utf-8") as f:
|
||||
with open(self.__path, "w", encoding="utf-8") as f:
|
||||
json.dump(self.to_json(), f, indent=2)
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -30,17 +30,17 @@ class Workspace(CPLStructureModel):
|
||||
self._projects = projects
|
||||
self._default_project = default_project
|
||||
|
||||
self._actual_projects = []
|
||||
self._project_names = []
|
||||
self.__actual_projects = []
|
||||
self.__project_names = []
|
||||
for project in projects:
|
||||
if Path(project).is_dir() or not Path(project).exists():
|
||||
raise ValueError(f"Project path '{project}' does not exist or is a directory.")
|
||||
|
||||
p = Project.from_file(project)
|
||||
self._actual_projects.append(p)
|
||||
self._project_names.append(p.name)
|
||||
self.__actual_projects.append(p)
|
||||
self.__project_names.append(p.name)
|
||||
|
||||
if default_project is not None and default_project not in self._project_names:
|
||||
if default_project is not None and default_project not in self.__project_names:
|
||||
raise ValueError(f"Default project '{default_project}' not found in workspace projects.")
|
||||
|
||||
self._scripts = scripts
|
||||
@@ -63,11 +63,11 @@ class Workspace(CPLStructureModel):
|
||||
|
||||
@property
|
||||
def actual_projects(self) -> List[Project]:
|
||||
return self._actual_projects
|
||||
return self.__actual_projects
|
||||
|
||||
@property
|
||||
def project_names(self) -> List[str]:
|
||||
return self._project_names
|
||||
return self.__project_names
|
||||
|
||||
@property
|
||||
def default_project(self) -> Optional[str]:
|
||||
|
||||
Reference in New Issue
Block a user