py-wlcli 0.6.14__tar.gz → 0.8.0__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.
- py_wlcli-0.8.0/.gitignore +116 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/PKG-INFO +47 -34
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/README.md +22 -8
- py_wlcli-0.8.0/VERSION +1 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/pyproject.toml +39 -34
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/__main__.py +16 -3
- py_wlcli-0.8.0/src/wl_cli/capabilities.py +79 -0
- py_wlcli-0.8.0/src/wl_cli/cc/__init__.py +5 -0
- py_wlcli-0.8.0/src/wl_cli/cc/checks.py +1019 -0
- py_wlcli-0.8.0/src/wl_cli/cc/cli.py +370 -0
- py_wlcli-0.8.0/src/wl_cli/cc/mutate.py +1350 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/cli_click.py +60 -11
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/build_utils.py +0 -24
- py_wlcli-0.8.0/src/wl_cli/commands/buildcommands/builders/coordinator.py +122 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/builders/environment.py +2 -2
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/builders/rust_builder.py +5 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/dist.py +41 -9
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/build.py +21 -18
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/clean.py +25 -15
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/core.py +56 -50
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/dead_code/dead_code_command.py +14 -20
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/dead_code/detector.py +37 -13
- py_wlcli-0.8.0/src/wl_cli/commands/clean/dead_code/fixer.py +176 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/dead_code/reporter.py +41 -51
- py_wlcli-0.8.0/src/wl_cli/commands/clean/lfs.py +215 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/python.py +28 -21
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/rust.py +27 -37
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/venv.py +31 -27
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/cleanup.py +2 -1
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/config/config.py +66 -16
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/debug/debug.py +26 -5
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/debug/debug_cache.py +21 -6
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/debug/source_hasher.py +2 -0
- py_wlcli-0.8.0/src/wl_cli/commands/format/__init__.py +13 -0
- py_wlcli-0.8.0/src/wl_cli/commands/format/format_cache_adapter.py +125 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/format/format_command.py +60 -11
- py_wlcli-0.8.0/src/wl_cli/commands/format/format_coordinator.py +191 -0
- py_wlcli-0.8.0/src/wl_cli/commands/format/format_executor.py +470 -0
- py_wlcli-0.8.0/src/wl_cli/commands/format/format_outcome.py +44 -0
- py_wlcli-0.8.0/src/wl_cli/commands/format/format_path_handler.py +1016 -0
- py_wlcli-0.8.0/src/wl_cli/commands/format/python_formatter.py +506 -0
- py_wlcli-0.8.0/src/wl_cli/commands/format/rust_formatter.py +106 -0
- py_wlcli-0.8.0/src/wl_cli/commands/gate/__init__.py +1 -0
- py_wlcli-0.8.0/src/wl_cli/commands/gate/gate_command.py +862 -0
- py_wlcli-0.8.0/src/wl_cli/commands/gate/preflight.py +445 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/git/config.py +15 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/git/hook.py +22 -9
- py_wlcli-0.8.0/src/wl_cli/commands/git/push_update.py +82 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/common/check_git_bash.py +2 -1
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/common/error_handler.py +3 -5
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/cargo_sync.py +5 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/config_manager.py +3 -2
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/git/__init__.py +0 -2
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/git/branch_creator.py +49 -42
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/git/git_flow_manager.py +29 -23
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/git/git_lfs_manager.py +79 -56
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/git/gitignore_manager.py +13 -7
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/git_initializer.py +51 -32
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/project_structure/__init__.py +2 -0
- py_wlcli-0.8.0/src/wl_cli/commands/initenv/components/project_structure/config_generator.py +360 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/project_structure/directory_creator.py +26 -10
- py_wlcli-0.8.0/src/wl_cli/commands/initenv/components/project_structure/hook_source.py +110 -0
- py_wlcli-0.8.0/src/wl_cli/commands/initenv/components/project_structure/hooks_manager.py +995 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/project_structure/readme_handler.py +11 -11
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/project_structure/rust_files_handler.py +11 -2
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/project_structure/setup_handler.py +31 -12
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/project_structure/sop_generator.py +28 -10
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/project_structure/template_copier.py +20 -12
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/project_structure/template_manager.py +44 -19
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/pyproject_generator.py +2 -21
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/rust_initializer.py +28 -19
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/symlink_manager.py +3 -2
- py_wlcli-0.8.0/src/wl_cli/commands/initenv/components/venv_manager.py +118 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/initenv.py +22 -4
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/services/environment_initializer.py +116 -90
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/services/git_lfs_initializer.py +5 -5
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/services/project_structure_initializer.py +10 -7
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/README.md +2 -2
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/cli.py +14 -2
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/config.py +14 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/initializer.py +52 -7
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/watcher.py +35 -10
- py_wlcli-0.8.0/src/wl_cli/commands/lint/lint_command.py +297 -0
- py_wlcli-0.8.0/src/wl_cli/commands/lint/lint_executor.py +409 -0
- py_wlcli-0.8.0/src/wl_cli/commands/lint/lint_reporter.py +579 -0
- py_wlcli-0.8.0/src/wl_cli/commands/lint/lint_run.py +258 -0
- py_wlcli-0.8.0/src/wl_cli/commands/lint/mypy_config.py +90 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/registry.py +14 -2
- py_wlcli-0.8.0/src/wl_cli/commands/self/common/capabilities.py +30 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/handlers/base_handler.py +2 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/handlers/install_handler.py +23 -18
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/handlers/status_handler.py +21 -19
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/handlers/uninstall_handler.py +16 -15
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/handlers/update_handler.py +25 -20
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/handlers/version_handler.py +2 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/self_command.py +49 -24
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/services/installation_manager.py +36 -31
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/services/local_installer.py +38 -40
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/services/pypi_updater.py +48 -45
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/services/windows_update.py +49 -47
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/base_dependency_analyzer.py +3 -2
- py_wlcli-0.8.0/src/wl_cli/commands/testcommands/cache_manager.py +1156 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/coverage_analyzer.py +363 -27
- py_wlcli-0.8.0/src/wl_cli/commands/testcommands/coverage_cache_manager.py +183 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/progress_manager.py +25 -12
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/python_env_detector.py +39 -11
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/report_generator.py +25 -13
- py_wlcli-0.8.0/src/wl_cli/commands/testcommands/single_test_executor.py +250 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/test_command_builder.py +47 -22
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/test_commands.py +212 -36
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/test_reporter.py +21 -11
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/test_result_handler.py +10 -2
- py_wlcli-0.8.0/src/wl_cli/commands/testcommands/test_runner.py +1343 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/test_utils.py +32 -0
- py_wlcli-0.8.0/src/wl_cli/commands/testcommands/utils/project_root.py +61 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/update/services/backup_manager.py +33 -19
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/update/services/conflict_resolver.py +20 -11
- py_wlcli-0.8.0/src/wl_cli/commands/update/services/vendors_updater.py +85 -0
- py_wlcli-0.8.0/src/wl_cli/commands/update/update_command.py +270 -0
- py_wlcli-0.8.0/src/wl_cli/env/__init__.py +5 -0
- py_wlcli-0.8.0/src/wl_cli/env/cli.py +167 -0
- py_wlcli-0.8.0/src/wl_cli/env_status.py +157 -0
- py_wlcli-0.8.0/src/wl_cli/envelope.py +91 -0
- py_wlcli-0.8.0/src/wl_cli/mcp/__init__.py +6 -0
- py_wlcli-0.8.0/src/wl_cli/mcp/capabilities.py +19 -0
- py_wlcli-0.8.0/src/wl_cli/mcp/cli.py +22 -0
- py_wlcli-0.8.0/src/wl_cli/mcp/gitlab.py +553 -0
- py_wlcli-0.8.0/src/wl_cli/mcp/k8s.py +344 -0
- py_wlcli-0.8.0/src/wl_cli/mcp/protocol.py +159 -0
- py_wlcli-0.8.0/src/wl_cli/platform.py +139 -0
- py_wlcli-0.8.0/src/wl_cli/quality/__init__.py +18 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/cache.py +13 -1
- py_wlcli-0.8.0/src/wl_cli/utils/cache_ledger.py +355 -0
- py_wlcli-0.8.0/src/wl_cli/utils/cache_store.py +546 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/config/config_loader.py +11 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/config/core.py +221 -36
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/config/defaults.py +49 -1
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/file_operations.py +3 -1
- py_wlcli-0.8.0/src/wl_cli/utils/logging.py +458 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/platform_adapter.py +37 -0
- py_wlcli-0.8.0/src/wl_cli/utils/pre_commit.py +266 -0
- py_wlcli-0.8.0/src/wl_cli/utils/pre_commit_config.py +72 -0
- py_wlcli-0.8.0/src/wl_cli/utils/root.py +521 -0
- py_wlcli-0.8.0/src/wl_cli/utils/root_fallback.py +256 -0
- py_wlcli-0.8.0/src/wl_cli/utils/run_evidence.py +236 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logging/config.py +9 -24
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logging/core.py +4 -41
- py_wlcli-0.8.0/src/wl_cli/utils/structured_logging/env.py +56 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logging/handlers.py +6 -14
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logging/logger.py +31 -72
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/subprocess.py +2 -2
- py_wlcli-0.8.0/src/wl_cli/utils/subprocess_utils.py +260 -0
- py_wlcli-0.8.0/src/wl_cli/utils/uv_run.py +79 -0
- py_wlcli-0.8.0/src/wl_cli/utils/uv_tree.py +71 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/uv_workspace.py +16 -40
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/version/pypi_version_checker.py +21 -11
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/version/version_service.py +29 -15
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/version/version_updater.py +25 -13
- py_wlcli-0.8.0/src/wl_cli/utils/wl_dir_updater.py +1440 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/workspace_detector/core.py +8 -0
- py_wlcli-0.8.0/src/wl_cli/utils/workspace_detector/detection_strategies.py +107 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/config/mypy.ini +4 -2
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/applypatch-msg.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/commit-msg.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/fsmonitor-watchman.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/post-update.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/pre-applypatch.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/pre-commit +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/pre-commit.legacy +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/pre-commit.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/pre-merge-commit.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/pre-push.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/pre-rebase.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/pre-receive.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/prepare-commit-msg.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/push-to-checkout.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/sendemail-validate.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/applypatch-msg.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/commit-msg.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/fsmonitor-watchman.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/post-update.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-applypatch.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-commit +12 -8
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-commit.legacy +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-commit.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-merge-commit.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-push +121 -32
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-push.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-rebase.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-receive.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/prepare-commit-msg.sample +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/update.sample +0 -0
- py_wlcli-0.8.0/src/wl_cli/vendors/project/README.md +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/sop_doc/git-dev-sop.md +3 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/sop_doc/python-sop.md +3 -6
- py_wlcli-0.6.14/rust/Cargo.lock +0 -132
- py_wlcli-0.6.14/rust/Cargo.toml +0 -19
- py_wlcli-0.6.14/rust/LICENSE +0 -21
- py_wlcli-0.6.14/rust/build.rs +0 -29
- py_wlcli-0.6.14/rust/deny.toml +0 -14
- py_wlcli-0.6.14/rust/rust-analyzer.json +0 -20
- py_wlcli-0.6.14/src/wl_cli/commands/buildcommands/builders/coordinator.py +0 -135
- py_wlcli-0.6.14/src/wl_cli/commands/clean/dead_code/fixer.py +0 -124
- py_wlcli-0.6.14/src/wl_cli/commands/clean/lfs.py +0 -278
- py_wlcli-0.6.14/src/wl_cli/commands/dependency_resolver.py +0 -25
- py_wlcli-0.6.14/src/wl_cli/commands/format/__init__.py +0 -28
- py_wlcli-0.6.14/src/wl_cli/commands/format/format_cache.py +0 -75
- py_wlcli-0.6.14/src/wl_cli/commands/format/format_coordinator.py +0 -104
- py_wlcli-0.6.14/src/wl_cli/commands/format/format_executor.py +0 -365
- py_wlcli-0.6.14/src/wl_cli/commands/format/format_path_handler.py +0 -355
- py_wlcli-0.6.14/src/wl_cli/commands/format/python_formatter.py +0 -236
- py_wlcli-0.6.14/src/wl_cli/commands/format/rust_formatter.py +0 -80
- py_wlcli-0.6.14/src/wl_cli/commands/initenv/components/git/pre_commit_manager.py +0 -127
- py_wlcli-0.6.14/src/wl_cli/commands/initenv/components/project_structure/config_generator.py +0 -187
- py_wlcli-0.6.14/src/wl_cli/commands/initenv/components/project_structure/hooks_manager.py +0 -152
- py_wlcli-0.6.14/src/wl_cli/commands/initenv/components/venv_manager.py +0 -103
- py_wlcli-0.6.14/src/wl_cli/commands/lint/lint.py +0 -11
- py_wlcli-0.6.14/src/wl_cli/commands/lint/lint_command.py +0 -195
- py_wlcli-0.6.14/src/wl_cli/commands/lint/lint_executor.py +0 -93
- py_wlcli-0.6.14/src/wl_cli/commands/lint/lint_reporter.py +0 -352
- py_wlcli-0.6.14/src/wl_cli/commands/lint/mypy_config.py +0 -51
- py_wlcli-0.6.14/src/wl_cli/commands/testcommands/cache_manager.py +0 -933
- py_wlcli-0.6.14/src/wl_cli/commands/testcommands/coverage_cache_manager.py +0 -210
- py_wlcli-0.6.14/src/wl_cli/commands/testcommands/single_test_executor.py +0 -158
- py_wlcli-0.6.14/src/wl_cli/commands/testcommands/test_runner.py +0 -225
- py_wlcli-0.6.14/src/wl_cli/commands/testcommands/utils/project_root.py +0 -37
- py_wlcli-0.6.14/src/wl_cli/commands/update/services/vendors_updater.py +0 -72
- py_wlcli-0.6.14/src/wl_cli/commands/update/update_command.py +0 -245
- py_wlcli-0.6.14/src/wl_cli/infrastructure/dependency_injection.py +0 -417
- py_wlcli-0.6.14/src/wl_cli/utils/logging.py +0 -340
- py_wlcli-0.6.14/src/wl_cli/utils/project_root.py +0 -86
- py_wlcli-0.6.14/src/wl_cli/utils/subprocess_utils.py +0 -164
- py_wlcli-0.6.14/src/wl_cli/utils/wl_dir_updater.py +0 -636
- py_wlcli-0.6.14/src/wl_cli/utils/workspace_detector/detection_strategies.py +0 -89
- py_wlcli-0.6.14/src/wl_cli/vendors/rust/src/lib.rs +0 -13
- py_wlcli-0.6.14/src/wl_cli/vendors/rust/src/main.rs +0 -3
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/LICENSE +0 -0
- {py_wlcli-0.6.14/src/wl_cli/commands/clean/dead_code → py_wlcli-0.8.0/src}/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/base.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/build.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/builders/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/builders/cleanup.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/builders/stubs.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/buildcommands/test.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/clean_utils.py +0 -0
- /py_wlcli-0.6.14/src/wl_cli/commands/clean/dead_code/utils.py → /py_wlcli-0.8.0/src/wl_cli/commands/clean/dead_code/__init__.py +0 -0
- /py_wlcli-0.6.14/src/wl_cli/vendors/project/README.md → /py_wlcli-0.8.0/src/wl_cli/commands/clean/dead_code/utils.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/clean/utils/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/click_base.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/config/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/debug/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/debug/debug_subagent.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/debug/output_formatter.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/format/format_progress.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/format/format_reporter.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/git/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/git/git_facts.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/git/git_flow.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/git/policy.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/common/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/common/exceptions.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/directory_utils.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/git/git_flow_interface.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/git/git_utility.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/i18n_manager.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/log_manager.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/components/symlink_cleaner.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/initenv/services/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/hook.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/manager.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lfs/policy.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/lint/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/common/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/common/config.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/common/version_cache.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/handlers/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/self/services/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/batch_processor.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/speed_checker.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/utils/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/utils/coverage_parser.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/utils/env_info.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/utils/junit_parser.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/testcommands/utils/markdown_utils.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/update/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/update/services/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/update/services/component_manager.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/update/services/version_tracker.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/update/utils/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/version/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/version/version_command.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/commands/workflow.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/exceptions.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/lib/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/lib/rust_utils.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/config/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/config/env_exporter.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/config/env_parser.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/config/validation.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/error_handler.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/file_copier.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/language_utils.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/lazy_import.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/log_levels.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/log_rotators.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/output_context.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/performance/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/performance/decorators.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/performance/exporter.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/performance/models.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/performance/monitor.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/performance_monitor.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logger.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logging/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logging/filtering.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logging/filters.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/structured_logging/formatters.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/test_utils/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/test_utils/test_filter.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/uv_tool.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/version/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/version/version_comparator.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/version/version_detectors.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/workspace_detector/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/workspace_detector/exceptions.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/workspace_detector/types.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/utils/workspace_detector/venv_resolver.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/config/.codespellrc +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/config/dependencies.toml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/config/pyproject_defaults.toml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/config/template_config.toml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/config/tool_configs.toml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/git/.gitignore +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/git/.pre-commit-config.yaml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/check_lockfile.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/check_lockfile.sh +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/unix/pre-commit.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/hooks/win/work.bat +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/project/.gitignore +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/project/.python-version +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/project/LICENSE +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/project/pyproject.toml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/project/pyproject_no_workspace.toml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/project/pyproject_workspace.toml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/readme/README.md +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/rust/Cargo.toml +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/rust/lib/__init__.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/rust/lib/rust_utils.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0/src/wl_cli/vendors}/rust/src/lib.rs +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0/src/wl_cli/vendors}/rust/src/main.rs +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/rust/tests/test_rust_fallback.py +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/sop_doc/industrial-standard-sop.md +0 -0
- {py_wlcli-0.6.14 → py_wlcli-0.8.0}/src/wl_cli/vendors/sop_doc/rust-readme.md +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Python 相关文件
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.so
|
|
5
|
+
*.dll
|
|
6
|
+
*.dylib
|
|
7
|
+
*.pyd
|
|
8
|
+
*.egg-info/
|
|
9
|
+
.pytest_cache/
|
|
10
|
+
.coverage
|
|
11
|
+
htmlcov/
|
|
12
|
+
.tox/
|
|
13
|
+
.hypothesis/
|
|
14
|
+
.cache/
|
|
15
|
+
.trae/
|
|
16
|
+
.wl/
|
|
17
|
+
.claude/
|
|
18
|
+
|
|
19
|
+
# 构建目录
|
|
20
|
+
build/
|
|
21
|
+
dist/
|
|
22
|
+
wheels/
|
|
23
|
+
target/
|
|
24
|
+
|
|
25
|
+
# 虚拟环境
|
|
26
|
+
.venv/
|
|
27
|
+
env/
|
|
28
|
+
venv/
|
|
29
|
+
ENV/
|
|
30
|
+
|
|
31
|
+
# Issue #220: `env/` above is a virtualenv pattern, but the env *domain* is
|
|
32
|
+
# repo code. Re-include only the two in-tree paths. `!dir/` must precede
|
|
33
|
+
# `!dir/**`: git cannot re-include files under an excluded parent directory.
|
|
34
|
+
# The trailing __pycache__ rules win over `!dir/**` (last match wins) so
|
|
35
|
+
# bytecode stays ignored inside the re-included trees.
|
|
36
|
+
!src/wl_cli/env/
|
|
37
|
+
!src/wl_cli/env/**
|
|
38
|
+
!tests/domains/env/
|
|
39
|
+
!tests/domains/env/**
|
|
40
|
+
# ...but only source: virtualenvs, bytecode and nested env/venv directories
|
|
41
|
+
# stay ignored anywhere inside those two re-included trees (last match wins).
|
|
42
|
+
src/wl_cli/env/**/__pycache__/
|
|
43
|
+
tests/domains/env/**/__pycache__/
|
|
44
|
+
src/wl_cli/env/**/.venv/
|
|
45
|
+
src/wl_cli/env/**/env/
|
|
46
|
+
src/wl_cli/env/**/venv/
|
|
47
|
+
src/wl_cli/env/**/ENV/
|
|
48
|
+
tests/domains/env/**/.venv/
|
|
49
|
+
tests/domains/env/**/env/
|
|
50
|
+
tests/domains/env/**/venv/
|
|
51
|
+
tests/domains/env/**/ENV/
|
|
52
|
+
|
|
53
|
+
# 依赖管理
|
|
54
|
+
.uv/
|
|
55
|
+
.uv_cache/
|
|
56
|
+
.ruff_cache/
|
|
57
|
+
.mypy_cache/
|
|
58
|
+
node_modules/
|
|
59
|
+
|
|
60
|
+
# IDE 和编辑器
|
|
61
|
+
.idea/
|
|
62
|
+
.vscode/
|
|
63
|
+
.vs/
|
|
64
|
+
*.sln
|
|
65
|
+
*.suo
|
|
66
|
+
*.ntvs*
|
|
67
|
+
*.njsproj
|
|
68
|
+
*.sw?
|
|
69
|
+
|
|
70
|
+
# 临时文件和系统文件
|
|
71
|
+
.DS_Store
|
|
72
|
+
|
|
73
|
+
# Jupyter 文件
|
|
74
|
+
.ipynb_checkpoints/
|
|
75
|
+
|
|
76
|
+
# 日志和数据文件
|
|
77
|
+
*.log
|
|
78
|
+
logs/
|
|
79
|
+
results/
|
|
80
|
+
npm-debug.log*
|
|
81
|
+
yarn-debug.log*
|
|
82
|
+
yarn-error.log*
|
|
83
|
+
dev-debug.log
|
|
84
|
+
|
|
85
|
+
# 本地配置
|
|
86
|
+
.env
|
|
87
|
+
.env.local
|
|
88
|
+
# PyPI/twine 凭据文件(历史上曾误入库,见 docs/sop-audit/2026-10-04-sop-report.md F7)
|
|
89
|
+
.pypirc
|
|
90
|
+
auto_activate_venv.sh
|
|
91
|
+
deactivate_temp.sh
|
|
92
|
+
|
|
93
|
+
# 工具和脚本(本地使用,不加入版本控制)
|
|
94
|
+
todos/
|
|
95
|
+
|
|
96
|
+
# 类型与本地生成文件
|
|
97
|
+
typings/
|
|
98
|
+
src/wl_cli/lib/sop.md
|
|
99
|
+
|
|
100
|
+
# 任务和临时文件
|
|
101
|
+
tasks.json
|
|
102
|
+
tasks/
|
|
103
|
+
**/*.token
|
|
104
|
+
|
|
105
|
+
# Git worktree 和测试工具
|
|
106
|
+
.worktrees/
|
|
107
|
+
.rpytest/flakiness.json
|
|
108
|
+
|
|
109
|
+
# agent 工具链的本地状态(每次运行都会重建,不进版本控制)
|
|
110
|
+
.codex/
|
|
111
|
+
.loopx/
|
|
112
|
+
|
|
113
|
+
# 一致性语料(票 #273):语料归需求方(wlcc),按 contract-v1 克隆取用,永不入库。
|
|
114
|
+
# CI 的 contract job 克隆到 .contract-corpus/;本地按需克隆到 tests/contract/。
|
|
115
|
+
.contract-corpus/
|
|
116
|
+
tests/contract/
|
|
@@ -1,40 +1,41 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: py_wlcli
|
|
3
|
-
Version: 0.
|
|
4
|
-
|
|
3
|
+
Version: 0.8.0
|
|
4
|
+
Summary: wl_cli - Python项目
|
|
5
|
+
Project-URL: Homepage, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli
|
|
6
|
+
Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli/-/issues
|
|
7
|
+
Author-email: WL Admin <wl.admin@example.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Python: >=3.11
|
|
5
11
|
Requires-Dist: click>=8.1.0
|
|
6
|
-
Requires-Dist: tqdm>=4.66.0
|
|
7
12
|
Requires-Dist: pre-commit>=4.5.1
|
|
8
|
-
Requires-Dist:
|
|
9
|
-
Requires-Dist:
|
|
10
|
-
Requires-Dist: types-toml>=0.10.8.20240310 ; extra == 'dev'
|
|
11
|
-
Requires-Dist: types-tqdm>=4.67.0.20250809 ; extra == 'dev'
|
|
12
|
-
Requires-Dist: pytest-xdist>=3.8.0 ; extra == 'dev'
|
|
13
|
-
Requires-Dist: twine>=6.2.0 ; extra == 'dev'
|
|
14
|
-
Requires-Dist: pyyaml>=6.0.0 ; extra == 'lfs'
|
|
15
|
-
Requires-Dist: watchdog>=6.0.0 ; extra == 'lfs'
|
|
16
|
-
Requires-Dist: pytest>=9.0.3 ; extra == 'test'
|
|
17
|
-
Requires-Dist: pytest-cov>=7.0.0 ; extra == 'test'
|
|
18
|
-
Requires-Dist: pytest-asyncio>=1.3.0 ; extra == 'test'
|
|
19
|
-
Requires-Dist: pyyaml>=6.0.0 ; extra == 'test'
|
|
20
|
-
Requires-Dist: watchdog>=6.0.0 ; extra == 'test'
|
|
13
|
+
Requires-Dist: toml>=0.10.2
|
|
14
|
+
Requires-Dist: tqdm>=4.66.0
|
|
21
15
|
Provides-Extra: dev
|
|
16
|
+
Requires-Dist: mypy>=1.18.2; extra == 'dev'
|
|
17
|
+
Requires-Dist: pytest-xdist>=3.8.0; extra == 'dev'
|
|
18
|
+
Requires-Dist: ruff==0.15.21; extra == 'dev'
|
|
19
|
+
Requires-Dist: twine>=6.2.0; extra == 'dev'
|
|
20
|
+
Requires-Dist: types-toml>=0.10.8.20240310; extra == 'dev'
|
|
21
|
+
Requires-Dist: types-tqdm>=4.67.0.20250809; extra == 'dev'
|
|
22
22
|
Provides-Extra: lfs
|
|
23
|
+
Requires-Dist: pyyaml>=6.0.0; extra == 'lfs'
|
|
24
|
+
Requires-Dist: watchdog>=6.0.0; extra == 'lfs'
|
|
23
25
|
Provides-Extra: test
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Requires-
|
|
29
|
-
Description-Content-Type: text/markdown
|
|
30
|
-
Project-URL: Homepage, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli
|
|
31
|
-
Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli/-/issues
|
|
26
|
+
Requires-Dist: pytest-asyncio>=1.3.0; extra == 'test'
|
|
27
|
+
Requires-Dist: pytest-cov>=7.0.0; extra == 'test'
|
|
28
|
+
Requires-Dist: pytest>=9.0.3; extra == 'test'
|
|
29
|
+
Requires-Dist: pyyaml>=6.0.0; extra == 'test'
|
|
30
|
+
Requires-Dist: watchdog>=6.0.0; extra == 'test'
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
32
|
|
|
33
33
|
# wl_cli(`wl` CLI)
|
|
34
34
|
|
|
35
|
-
`wl_cli`
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
`wl_cli` 是一个以 Click 构建的命令行工具(入口 `wl`),面向 Python 项目的初始化、构建、
|
|
36
|
+
测试、格式化、lint、清理与质量门等日常开发工作流。发行物是纯 Python wheel
|
|
37
|
+
(`py3-none-any`),安装与运行都不需要 Rust 工具链;Rust 扩展是可选的诊断件,
|
|
38
|
+
缺失时自动回落纯 Python 实现。
|
|
38
39
|
|
|
39
40
|
## 功能概览
|
|
40
41
|
|
|
@@ -54,10 +55,23 @@ Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli/-/issues
|
|
|
54
55
|
|
|
55
56
|
## 环境要求
|
|
56
57
|
|
|
57
|
-
- Python >= 3.11
|
|
58
|
-
- 从源码构建 Rust 扩展时需要 Rust 工具链(maturin/pyo3)
|
|
58
|
+
- Python >= 3.11(纯 Python 路径,安装与运行都不需要 Rust/cargo)
|
|
59
59
|
- 包管理器推荐 [uv](https://docs.astral.sh/uv/)
|
|
60
60
|
|
|
61
|
+
### 平台支持矩阵
|
|
62
|
+
|
|
63
|
+
| 平台 | 架构 | 支持 |
|
|
64
|
+
|------|------|------|
|
|
65
|
+
| macOS | x86_64 / arm64 | ✅ |
|
|
66
|
+
| Linux(glibc) | x86_64 / aarch64 | ✅ |
|
|
67
|
+
| Linux(musl) | x86_64 / aarch64 | ✅ |
|
|
68
|
+
| Windows | x64 / arm64 | ✅ |
|
|
69
|
+
|
|
70
|
+
同一个 `py3-none-any` wheel 覆盖以上全部平台。平台报告由
|
|
71
|
+
`wl_cli.platform.platform_payload()` 统一产出
|
|
72
|
+
(`platform` / `python` / `native_extension` / `supported` / `reason`),
|
|
73
|
+
其中 `native_extension` 只作诊断——Rust 扩展可选,缺失不影响 `supported`。
|
|
74
|
+
|
|
61
75
|
## 安装
|
|
62
76
|
|
|
63
77
|
### 稳定版(PyPI)
|
|
@@ -115,12 +129,11 @@ pytest tests/ -v # 指定文件(pytest 直跑)
|
|
|
115
129
|
## 架构速览
|
|
116
130
|
|
|
117
131
|
Click CLI([src/wl_cli/cli_click.py](https://github.com/CharlieZi/wl-cli/blob/main/src/wl_cli/cli_click.py)
|
|
118
|
-
经 `setup_commands()` 直接注册)→ 各命令实现(`commands/<group>/`)→
|
|
119
|
-
Rust
|
|
120
|
-
|
|
132
|
+
经 `setup_commands()` 直接注册)→ 各命令实现(`commands/<group>/`)→ 业务逻辑。
|
|
133
|
+
Rust 扩展是可选的诊断件:`src/wl_cli/lib/rust_utils.py` 在 `wl_cli_native`
|
|
134
|
+
不可用时回落纯 Python;发行 wheel 不包含任何原生二进制。
|
|
121
135
|
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/wl-cli/blob/main/docs/superpowers/specs/2026-06-02-full-click-migration-design.md)。
|
|
122
136
|
|
|
123
137
|
## 许可证
|
|
124
138
|
|
|
125
139
|
MIT,见 [LICENSE](https://github.com/CharlieZi/wl-cli/blob/main/LICENSE)。
|
|
126
|
-
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# wl_cli(`wl` CLI)
|
|
2
2
|
|
|
3
|
-
`wl_cli`
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
`wl_cli` 是一个以 Click 构建的命令行工具(入口 `wl`),面向 Python 项目的初始化、构建、
|
|
4
|
+
测试、格式化、lint、清理与质量门等日常开发工作流。发行物是纯 Python wheel
|
|
5
|
+
(`py3-none-any`),安装与运行都不需要 Rust 工具链;Rust 扩展是可选的诊断件,
|
|
6
|
+
缺失时自动回落纯 Python 实现。
|
|
6
7
|
|
|
7
8
|
## 功能概览
|
|
8
9
|
|
|
@@ -22,10 +23,23 @@
|
|
|
22
23
|
|
|
23
24
|
## 环境要求
|
|
24
25
|
|
|
25
|
-
- Python >= 3.11
|
|
26
|
-
- 从源码构建 Rust 扩展时需要 Rust 工具链(maturin/pyo3)
|
|
26
|
+
- Python >= 3.11(纯 Python 路径,安装与运行都不需要 Rust/cargo)
|
|
27
27
|
- 包管理器推荐 [uv](https://docs.astral.sh/uv/)
|
|
28
28
|
|
|
29
|
+
### 平台支持矩阵
|
|
30
|
+
|
|
31
|
+
| 平台 | 架构 | 支持 |
|
|
32
|
+
|------|------|------|
|
|
33
|
+
| macOS | x86_64 / arm64 | ✅ |
|
|
34
|
+
| Linux(glibc) | x86_64 / aarch64 | ✅ |
|
|
35
|
+
| Linux(musl) | x86_64 / aarch64 | ✅ |
|
|
36
|
+
| Windows | x64 / arm64 | ✅ |
|
|
37
|
+
|
|
38
|
+
同一个 `py3-none-any` wheel 覆盖以上全部平台。平台报告由
|
|
39
|
+
`wl_cli.platform.platform_payload()` 统一产出
|
|
40
|
+
(`platform` / `python` / `native_extension` / `supported` / `reason`),
|
|
41
|
+
其中 `native_extension` 只作诊断——Rust 扩展可选,缺失不影响 `supported`。
|
|
42
|
+
|
|
29
43
|
## 安装
|
|
30
44
|
|
|
31
45
|
### 稳定版(PyPI)
|
|
@@ -83,9 +97,9 @@ pytest tests/ -v # 指定文件(pytest 直跑)
|
|
|
83
97
|
## 架构速览
|
|
84
98
|
|
|
85
99
|
Click CLI([src/wl_cli/cli_click.py](https://github.com/CharlieZi/wl-cli/blob/main/src/wl_cli/cli_click.py)
|
|
86
|
-
经 `setup_commands()` 直接注册)→ 各命令实现(`commands/<group>/`)→
|
|
87
|
-
Rust
|
|
88
|
-
|
|
100
|
+
经 `setup_commands()` 直接注册)→ 各命令实现(`commands/<group>/`)→ 业务逻辑。
|
|
101
|
+
Rust 扩展是可选的诊断件:`src/wl_cli/lib/rust_utils.py` 在 `wl_cli_native`
|
|
102
|
+
不可用时回落纯 Python;发行 wheel 不包含任何原生二进制。
|
|
89
103
|
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/wl-cli/blob/main/docs/superpowers/specs/2026-06-02-full-click-migration-design.md)。
|
|
90
104
|
|
|
91
105
|
## 许可证
|
py_wlcli-0.8.0/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.8.0
|
|
@@ -43,57 +43,62 @@ lfs = [
|
|
|
43
43
|
url = "https://pypi.mirrors.ustc.edu.cn/simple"
|
|
44
44
|
default = true
|
|
45
45
|
|
|
46
|
+
# Issue #226 / wlcc #321: the distribution is a pure-Python wheel
|
|
47
|
+
# (`py3-none-any`); installing it needs no Rust toolchain. VERSION stays the
|
|
48
|
+
# single source of truth and hatchling reads it directly.
|
|
46
49
|
[build-system]
|
|
47
|
-
requires = [ "
|
|
48
|
-
build-backend = "
|
|
50
|
+
requires = [ "hatchling>=1.27",]
|
|
51
|
+
build-backend = "hatchling.build"
|
|
52
|
+
|
|
53
|
+
[tool.hatch.version]
|
|
54
|
+
source = "regex"
|
|
55
|
+
path = "VERSION"
|
|
56
|
+
pattern = '(?P<version>\d+\.\d+\.\d+)'
|
|
57
|
+
|
|
58
|
+
[tool.hatch.build.targets.wheel]
|
|
59
|
+
packages = [ "src/wl_cli",]
|
|
60
|
+
# Runtime templates under vendors/ must ship inside the wheel (`wl init` copies
|
|
61
|
+
# them). Native artefacts are never part of a pure-Python wheel, even if one is
|
|
62
|
+
# left in the tree by an older local build.
|
|
63
|
+
exclude = [
|
|
64
|
+
"**/*.so",
|
|
65
|
+
"**/*.pyd",
|
|
66
|
+
"**/*.dll",
|
|
67
|
+
"**/*.dylib",
|
|
68
|
+
]
|
|
49
69
|
|
|
70
|
+
[tool.hatch.build.targets.sdist]
|
|
71
|
+
include = [
|
|
72
|
+
"/src",
|
|
73
|
+
"/VERSION",
|
|
74
|
+
"/LICENSE",
|
|
75
|
+
"/README.md",
|
|
76
|
+
"/pyproject.toml",
|
|
77
|
+
]
|
|
50
78
|
|
|
51
79
|
[project.urls]
|
|
52
80
|
Homepage = "https://gitlab.gewinnrobo.com/Humuyuan/wl-cli"
|
|
53
81
|
Issues = "https://gitlab.gewinnrobo.com/Humuyuan/wl-cli/-/issues"
|
|
54
82
|
|
|
55
|
-
[tool.maturin]
|
|
56
|
-
manifest-path = "rust/Cargo.toml"
|
|
57
|
-
module-name = "wl_cli.lib.wl_cli_native"
|
|
58
|
-
python-source = "src"
|
|
59
|
-
include = [
|
|
60
|
-
"src/wl_cli/**/*",
|
|
61
|
-
"typings/**/*",
|
|
62
|
-
"LICENSE",
|
|
63
|
-
]
|
|
64
|
-
bindings = "pyo3"
|
|
65
|
-
# 与 rust/Cargo.toml 的 pyo3 features 保持同步(lockstep):maturin 将此处特性作为 --features
|
|
66
|
-
# 透传给 cargo,与 Cargo.toml 取并集,任一处即可生效;两处必须一致。
|
|
67
|
-
# Keep in lockstep with pyo3.features in rust/Cargo.toml — maturin forwards these to
|
|
68
|
-
# cargo as --features, unioned with the Cargo.toml features; both must match.
|
|
69
|
-
features = [
|
|
70
|
-
"pyo3/extension-module",
|
|
71
|
-
"pyo3/abi3",
|
|
72
|
-
"pyo3/abi3-py311",
|
|
73
|
-
"pyo3/generate-import-lib",
|
|
74
|
-
]
|
|
75
|
-
sdist-include = [
|
|
76
|
-
"src/**/*",
|
|
77
|
-
"typings/**/*",
|
|
78
|
-
"VERSION",
|
|
79
|
-
"LICENSE",
|
|
80
|
-
]
|
|
81
|
-
sdist-exclude = [
|
|
82
|
-
"src/wl_cli/vendors/**/*",
|
|
83
|
-
]
|
|
84
|
-
python-packages = [ "wl_cli",]
|
|
85
|
-
|
|
86
83
|
[tool.ruff]
|
|
87
84
|
line-length = 88
|
|
88
85
|
target-version = "py310"
|
|
89
86
|
|
|
90
87
|
[tool.ruff.format]
|
|
91
88
|
preview = false
|
|
89
|
+
# Vendored upstream assets are not this repo's code, so they must never redden
|
|
90
|
+
# the format leg -- same 口径 as the existing codespell exclusion
|
|
91
|
+
# (^src/wl_cli/vendors/ in .wl/.pre-commit-config.yaml). `lint` and `format`
|
|
92
|
+
# keep separate exclude lists, so the pattern is written in both; the dual
|
|
93
|
+
# assertion in tests/test_gate_lint_scope.py pins both legs so neither can be
|
|
94
|
+
# silently widened. The glob needs `/**` (ruff matches file paths, so a bare
|
|
95
|
+
# directory path matches nothing).
|
|
96
|
+
exclude = [ "src/wl_cli/vendors/**",]
|
|
92
97
|
|
|
93
98
|
[tool.ruff.lint]
|
|
94
99
|
select = ["E", "W", "F", "I", "C4", "UP", "N", "B", "C90", "TCH"]
|
|
95
100
|
ignore = ["E501", "B904", "E402", "F811", "S607", "N802", "N817"]
|
|
96
|
-
exclude = [ ".git", ".ruff_cache", "__pycache__", "build", "dist", "*.egg-info", "uv.lock", "tmp",]
|
|
101
|
+
exclude = [ ".git", ".ruff_cache", "__pycache__", "build", "dist", "*.egg-info", "uv.lock", "tmp", "src/wl_cli/vendors/**",]
|
|
97
102
|
|
|
98
103
|
# F841 (unused local variable) is enabled for package code as a dead-code
|
|
99
104
|
# backstop, but exempted in tests where unused locals are often scaffolding.
|
|
@@ -16,7 +16,14 @@ def _setup_stdio_encoding() -> None:
|
|
|
16
16
|
characters crash print(). This wraps stdout/stderr with explicit
|
|
17
17
|
UTF-8 encoding so all output works regardless of terminal locale.
|
|
18
18
|
"""
|
|
19
|
-
|
|
19
|
+
# Imported here (with a script-execution fallback, matching the cli_click
|
|
20
|
+
# import below) so this module stays runnable as a plain script.
|
|
21
|
+
try:
|
|
22
|
+
from .utils import platform_adapter
|
|
23
|
+
except ImportError: # pragma: no cover - direct script execution
|
|
24
|
+
from wl_cli.utils import platform_adapter # type: ignore[no-redef]
|
|
25
|
+
|
|
26
|
+
if not platform_adapter.PlatformAdapter.is_windows():
|
|
20
27
|
return
|
|
21
28
|
# PYTHONIOENCODING also helps subprocess pipe encoding
|
|
22
29
|
os.environ.setdefault("PYTHONIOENCODING", "utf-8")
|
|
@@ -105,8 +112,14 @@ except ImportError:
|
|
|
105
112
|
|
|
106
113
|
|
|
107
114
|
def main() -> None:
|
|
108
|
-
"""Main entry point for WL Commands.
|
|
109
|
-
|
|
115
|
+
"""Main entry point for WL Commands.
|
|
116
|
+
|
|
117
|
+
``cli_click.main`` returns the process exit code (0 on success, 1 when a
|
|
118
|
+
command raises), so the entry point must hand that value to the
|
|
119
|
+
interpreter instead of discarding it. Without the ``SystemExit`` every
|
|
120
|
+
``return 1`` path inside ``cli_click.main`` exited 0 (#186).
|
|
121
|
+
"""
|
|
122
|
+
raise SystemExit(cli_main())
|
|
110
123
|
|
|
111
124
|
|
|
112
125
|
# Alias for compatibility with tests
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"""The shared capability registry for the ``wl`` CLI (issues #270, #221).
|
|
2
|
+
|
|
3
|
+
Capabilities are the stable, dotted names a consumer (wlcc) probes instead of
|
|
4
|
+
grepping ``--help`` for an implementation flag (wlcc ADR-0010, decision 6):
|
|
5
|
+
``test.clean_cache`` says *what wl can do*; ``--clean-cache`` is only how it is
|
|
6
|
+
spelled today. The dotted names are the interface -- treat them as stable.
|
|
7
|
+
|
|
8
|
+
The registry lives in the shared layer rather than under ``wl_cli.env`` or
|
|
9
|
+
``wl_cli.commands`` because two commands in different domains must serve the
|
|
10
|
+
same names: ``wl env check`` (``wl_cli.env``) and the deprecated
|
|
11
|
+
``wl self capabilities`` alias (``wl_cli.commands``). The quality domain may
|
|
12
|
+
not import the env domain (#220), so one shared data owner is the only
|
|
13
|
+
arrangement that does not fork the answer.
|
|
14
|
+
|
|
15
|
+
Adding a capability is a data change here plus an entry in the surface table
|
|
16
|
+
of ``tests/test_self_capabilities_270.py`` proving some CLI surface still
|
|
17
|
+
backs it, so a name cannot outlive its implementation.
|
|
18
|
+
|
|
19
|
+
A domain may keep a domain-local view of its own entries
|
|
20
|
+
(``wl_cli.mcp.capabilities.CAPABILITIES``, #224) derived from this mapping;
|
|
21
|
+
the data itself lives here only, and ``tests/test_capability_registry.py``
|
|
22
|
+
pins that the view cannot drift.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
#: Bump only when the payload *shape* changes -- never when a capability is
|
|
28
|
+
#: added. Consumers key off this; adding a capability is backwards compatible.
|
|
29
|
+
SCHEMA_VERSION = 1
|
|
30
|
+
|
|
31
|
+
#: Capability name -> first release that ships its implementation. Adding an
|
|
32
|
+
#: entry is a data change; ``since`` must never be newer than the release this
|
|
33
|
+
#: data ships in (the release bump happens outside this change).
|
|
34
|
+
CAPABILITY_SINCE: dict[str, str] = {
|
|
35
|
+
"cc.check": "0.8.0",
|
|
36
|
+
"cc.hooks": "0.8.0",
|
|
37
|
+
"cc.init": "0.8.0",
|
|
38
|
+
"cc.mcp": "0.8.0",
|
|
39
|
+
"cc.plugins": "0.8.0",
|
|
40
|
+
"cc.repair": "0.8.0",
|
|
41
|
+
"cc.settings": "0.8.0",
|
|
42
|
+
"cc.stamps": "0.8.0",
|
|
43
|
+
"cc.statusline": "0.8.0",
|
|
44
|
+
"cc.upgrade": "0.8.0",
|
|
45
|
+
"env.check": "0.8.0",
|
|
46
|
+
"env.repair": "0.8.0",
|
|
47
|
+
"mcp.gitlab": "0.8.0",
|
|
48
|
+
"mcp.k8s": "0.8.0",
|
|
49
|
+
"test.clean_cache": "0.7.0",
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
#: The advertised names, sorted for stable output. Derived from the mapping so
|
|
53
|
+
#: there is exactly one source of truth.
|
|
54
|
+
CAPABILITIES: tuple[str, ...] = tuple(sorted(CAPABILITY_SINCE))
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def capability_names() -> list[str]:
|
|
58
|
+
"""Return the advertised capability names, sorted for stable output."""
|
|
59
|
+
return list(CAPABILITIES)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def capability_details() -> list[dict[str, str]]:
|
|
63
|
+
"""Return ``[{"name": ..., "since": ...}, ...]`` in sorted-name order."""
|
|
64
|
+
return [{"name": name, "since": CAPABILITY_SINCE[name]} for name in CAPABILITIES]
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def capability_since() -> dict[str, str]:
|
|
68
|
+
"""Return ``{name: since}`` in sorted-name order."""
|
|
69
|
+
return {name: CAPABILITY_SINCE[name] for name in CAPABILITIES}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def capabilities_payload() -> dict[str, object]:
|
|
73
|
+
"""Return the legacy ``wl self capabilities --json`` payload (#270).
|
|
74
|
+
|
|
75
|
+
``wl self capabilities`` is a deprecated alias since #221 and emits the
|
|
76
|
+
``wl env check`` envelope instead, but the old shape stays importable so a
|
|
77
|
+
library consumer does not break in the same release that deprecates it.
|
|
78
|
+
"""
|
|
79
|
+
return {"schema": SCHEMA_VERSION, "capabilities": capability_names()}
|