multi-workspace 3.2.17__tar.gz → 3.2.18__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/PKG-INFO +1 -1
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/_version.py +2 -2
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/app_api.py +22 -1
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/.gitignore +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/LICENSE +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/README.md +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/__init__.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/__main__.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/add.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/api.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/bootstrap.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/branch.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/cli.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/cli_helpers.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/collaborator.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/convert_monorepo.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/doctor.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/errors.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/git_helpers.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/git_run.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/git_set_branch.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/ignore_files.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/init.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/logging.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/managed_blocks.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/open.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/paths.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/registry.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/remove.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/repo_urls.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/repos.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/resources/init_readme.md +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/service.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/settings.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_agents.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_github.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_vscode.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_vscode_devcontainer.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_vscode_extensions.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_vscode_helpers.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_vscode_launch.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_vscode_settings.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/sync_vscode_tasks.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/utils.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/multi/worktree.py +0 -0
- {multi_workspace-3.2.17 → multi_workspace-3.2.18}/pyproject.toml +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '3.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (3, 2,
|
|
21
|
+
__version__ = version = '3.2.18'
|
|
22
|
+
__version_tuple__ = version_tuple = (3, 2, 18)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -126,6 +126,21 @@ def _subrepo_payloads(repo_path: Path) -> list[SubRepoPayload] | None:
|
|
|
126
126
|
]
|
|
127
127
|
|
|
128
128
|
|
|
129
|
+
def get_project_subrepos(repo_path: str | Path) -> list[SubRepoPayload]:
|
|
130
|
+
"""Public multi.json sub-repo listing for library consumers ([] when not a workspace)."""
|
|
131
|
+
return _subrepo_payloads(Path(repo_path)) or []
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def list_project_repo_names(repo_path: str | Path) -> list[str]:
|
|
135
|
+
"""Names of repos declared in repo_path's own multi.json ([] when absent/invalid).
|
|
136
|
+
|
|
137
|
+
Only reads a multi.json directly inside repo_path — never searches parent
|
|
138
|
+
directories — so callers can safely probe arbitrary directories.
|
|
139
|
+
"""
|
|
140
|
+
subrepos = _load_subrepos(Path(repo_path))
|
|
141
|
+
return [repo.name for repo in subrepos] if subrepos else []
|
|
142
|
+
|
|
143
|
+
|
|
129
144
|
def _describe_git_head(repo_path: Path) -> str | None:
|
|
130
145
|
if not repo_path.exists():
|
|
131
146
|
return None
|
|
@@ -212,7 +227,13 @@ def _get_git_status_internal(repo_path: Path, ignore_untracked: bool) -> RepoSta
|
|
|
212
227
|
if ignore_untracked:
|
|
213
228
|
status_args.append("--untracked-files=no")
|
|
214
229
|
|
|
215
|
-
|
|
230
|
+
try:
|
|
231
|
+
porcelain = _run_git(status_args, cwd=repo_path, timeout=10).stdout
|
|
232
|
+
except (OSError, subprocess.SubprocessError):
|
|
233
|
+
# A directory with a .git entry that git itself rejects (corrupt or
|
|
234
|
+
# locked repo) is neither clean nor dirty; report it as unknown
|
|
235
|
+
# instead of surfacing an exception to status callers.
|
|
236
|
+
return "unknown"
|
|
216
237
|
if porcelain.strip():
|
|
217
238
|
return "dirty"
|
|
218
239
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|