py-wlcli 0.6.13__tar.gz → 0.6.14__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.6.13/rust → py_wlcli-0.6.14}/LICENSE +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/PKG-INFO +20 -20
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/README.md +17 -17
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/pyproject.toml +8 -4
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/rust/Cargo.lock +21 -54
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/rust/Cargo.toml +3 -2
- py_wlcli-0.6.14/rust/deny.toml +14 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/__init__.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/__main__.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/__init__.py +1 -1
- py_wlcli-0.6.14/src/wl_cli/commands/buildcommands/__init__.py +1 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/dist.py +12 -9
- py_wlcli-0.6.14/src/wl_cli/commands/clean/__init__.py +1 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/clean.py +0 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/clean_utils.py +11 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/dead_code/dead_code_command.py +0 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/dead_code/detector.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/cleanup.py +7 -4
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/debug/debug_cache.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/__init__.py +0 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/format_command.py +1 -5
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/format_coordinator.py +11 -4
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/format_executor.py +0 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/format_path_handler.py +4 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/git/config.py +5 -5
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/git/git_facts.py +18 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/common/error_handler.py +3 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/cargo_sync.py +1 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/config_manager.py +6 -6
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git/git_utility.py +22 -13
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git/gitignore_manager.py +0 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/config_generator.py +63 -37
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/directory_creator.py +0 -9
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/template_manager.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/pyproject_generator.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/config.py +12 -11
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/initializer.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/watcher.py +7 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lint/lint_command.py +1 -2
- py_wlcli-0.6.14/src/wl_cli/commands/lint/mypy_config.py +51 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/self_command.py +5 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/services/pypi_updater.py +4 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/services/windows_update.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/cache_manager.py +7 -11
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/coverage_analyzer.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/coverage_cache_manager.py +3 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/single_test_executor.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/speed_checker.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/test_commands.py +2 -8
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/test_utils.py +2 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/utils/coverage_parser.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/utils/env_info.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/services/__init__.py +0 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/services/backup_manager.py +0 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/services/component_manager.py +0 -9
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/services/conflict_resolver.py +2 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/services/vendors_updater.py +4 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/services/version_tracker.py +3 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/update_command.py +3 -129
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/workflow.py +10 -6
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/infrastructure/dependency_injection.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/lib/rust_utils.py +2 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/config/config_loader.py +3 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/config/core.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/config/defaults.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/config/validation.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/error_handler.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/file_copier.py +2 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/file_operations.py +5 -4
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/logging.py +2 -2
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logging/config.py +19 -16
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logging/formatters.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/test_utils/test_filter.py +3 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/uv_workspace.py +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/version/pypi_version_checker.py +2 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/version/version_detectors.py +15 -5
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/version/version_service.py +0 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/wl_dir_updater.py +91 -26
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/config/mypy.ini +4 -3
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/config/template_config.toml +1 -1
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/git/.gitignore +3 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-push +25 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/project/.gitignore +3 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/rust/lib/rust_utils.py +3 -1
- py_wlcli-0.6.14/src/wl_cli/vendors/sop_doc/git-dev-sop.md +220 -0
- py_wlcli-0.6.13/src/wl_cli/commands/buildcommands/__init__.py +0 -4
- py_wlcli-0.6.13/src/wl_cli/commands/clean/__init__.py +0 -6
- py_wlcli-0.6.13/src/wl_cli/commands/lint/mypy_config.py +0 -20
- py_wlcli-0.6.13/src/wl_cli/commands/update/services/gstack_updater.py +0 -576
- py_wlcli-0.6.13/src/wl_cli/vendors/config/.coveragerc +0 -16
- {py_wlcli-0.6.13 → py_wlcli-0.6.14/rust}/LICENSE +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/rust/build.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/rust/rust-analyzer.json +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/rust/src/lib.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/rust/src/main.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/cli_click.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/base.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/build.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/build_utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/builders/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/builders/cleanup.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/builders/coordinator.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/builders/environment.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/builders/rust_builder.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/builders/stubs.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/buildcommands/test.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/build.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/core.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/dead_code/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/dead_code/fixer.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/dead_code/reporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/dead_code/utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/lfs.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/python.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/rust.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/clean/venv.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/click_base.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/config/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/config/config.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/debug/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/debug/debug.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/debug/debug_subagent.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/debug/output_formatter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/debug/source_hasher.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/dependency_resolver.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/format_cache.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/format_progress.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/format_reporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/python_formatter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/format/rust_formatter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/git/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/git/git_flow.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/git/hook.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/git/policy.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/common/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/common/check_git_bash.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/common/exceptions.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/directory_utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git/branch_creator.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git/git_flow_interface.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git/git_flow_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git/git_lfs_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git/pre_commit_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/git_initializer.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/i18n_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/log_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/hooks_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/readme_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/rust_files_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/setup_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/sop_generator.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/project_structure/template_copier.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/rust_initializer.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/symlink_cleaner.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/symlink_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/components/venv_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/initenv.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/services/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/services/environment_initializer.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/services/git_lfs_initializer.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/initenv/services/project_structure_initializer.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/README.md +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/cli.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/hook.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lfs/policy.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lint/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lint/lint.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lint/lint_executor.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/lint/lint_reporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/registry.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/common/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/common/config.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/common/version_cache.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/handlers/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/handlers/base_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/handlers/install_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/handlers/status_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/handlers/uninstall_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/handlers/update_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/handlers/version_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/services/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/services/installation_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/self/services/local_installer.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/base_dependency_analyzer.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/batch_processor.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/progress_manager.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/python_env_detector.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/report_generator.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/test_command_builder.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/test_reporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/test_result_handler.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/test_runner.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/utils/junit_parser.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/utils/markdown_utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/testcommands/utils/project_root.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/update/utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/version/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/commands/version/version_command.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/exceptions.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/lib/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/cache.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/config/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/config/env_exporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/config/env_parser.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/language_utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/lazy_import.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/log_levels.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/log_rotators.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/output_context.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/performance/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/performance/decorators.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/performance/exporter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/performance/models.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/performance/monitor.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/performance_monitor.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/platform_adapter.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/project_root.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logger.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logging/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logging/core.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logging/filtering.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logging/filters.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logging/handlers.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/structured_logging/logger.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/subprocess.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/subprocess_utils.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/test_utils/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/uv_tool.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/version/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/version/version_comparator.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/version/version_updater.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/workspace_detector/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/workspace_detector/core.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/workspace_detector/detection_strategies.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/workspace_detector/exceptions.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/workspace_detector/types.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/utils/workspace_detector/venv_resolver.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/config/.codespellrc +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/config/dependencies.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/config/pyproject_defaults.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/config/tool_configs.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/git/.pre-commit-config.yaml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/applypatch-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/commit-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/fsmonitor-watchman.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/post-update.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/pre-applypatch.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/pre-commit +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/pre-commit.legacy +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/pre-commit.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/pre-merge-commit.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/pre-push.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/pre-rebase.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/pre-receive.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/prepare-commit-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/push-to-checkout.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/sendemail-validate.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/applypatch-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/check_lockfile.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/check_lockfile.sh +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/commit-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/fsmonitor-watchman.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/post-update.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-applypatch.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-commit +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-commit.legacy +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-commit.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-commit.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-merge-commit.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-push.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-rebase.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/pre-receive.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/unix/prepare-commit-msg.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/update.sample +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/hooks/win/work.bat +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/project/.python-version +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/project/LICENSE +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/project/README.md +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/project/pyproject.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/project/pyproject_no_workspace.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/project/pyproject_workspace.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/readme/README.md +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/rust/Cargo.toml +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/rust/lib/__init__.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/rust/src/lib.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/rust/src/main.rs +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/rust/tests/test_rust_fallback.py +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/sop_doc/industrial-standard-sop.md +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/sop_doc/python-sop.md +0 -0
- {py_wlcli-0.6.13 → py_wlcli-0.6.14}/src/wl_cli/vendors/sop_doc/rust-readme.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: py_wlcli
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.14
|
|
4
4
|
Requires-Dist: toml>=0.10.2
|
|
5
5
|
Requires-Dist: click>=8.1.0
|
|
6
6
|
Requires-Dist: tqdm>=4.66.0
|
|
@@ -27,8 +27,8 @@ Author-email: WL Admin <wl.admin@example.com>
|
|
|
27
27
|
License-Expression: MIT
|
|
28
28
|
Requires-Python: >=3.11
|
|
29
29
|
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
30
|
-
Project-URL: Homepage, https://gitlab.gewinnrobo.com/Humuyuan/
|
|
31
|
-
Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/
|
|
30
|
+
Project-URL: Homepage, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli
|
|
31
|
+
Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/wl-cli/-/issues
|
|
32
32
|
|
|
33
33
|
# wl_cli(`wl` CLI)
|
|
34
34
|
|
|
@@ -46,11 +46,11 @@ Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/py_wlcommands/-/issu
|
|
|
46
46
|
| `wl format` | 格式化 Python 与 Rust 代码 |
|
|
47
47
|
| `wl lint` | 代码质量检查(ruff/mypy 等) |
|
|
48
48
|
| `wl clean` | 清理构建产物与临时文件 |
|
|
49
|
-
| `wl debug` |
|
|
49
|
+
| `wl debug` | (已弃用)质量门 — 改用 `wl test -s` 与 `wl format -s` |
|
|
50
50
|
| `wl self` | 自管理命令 |
|
|
51
51
|
|
|
52
52
|
命令行别名:`b`→build、`c`→clean、`f`→format、`i`→init。
|
|
53
|
-
完整命令参考见 [CLI_COMMANDS.md](https://github.com/CharlieZi/
|
|
53
|
+
完整命令参考见 [CLI_COMMANDS.md](https://github.com/CharlieZi/wl-cli/blob/main/CLI_COMMANDS.md)。
|
|
54
54
|
|
|
55
55
|
## 环境要求
|
|
56
56
|
|
|
@@ -63,23 +63,23 @@ Project-URL: Issues, https://gitlab.gewinnrobo.com/Humuyuan/py_wlcommands/-/issu
|
|
|
63
63
|
### 稳定版(PyPI)
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
pip install
|
|
66
|
+
pip install py-wlcli
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
按需安装可选 extra:`pip install "
|
|
70
|
-
`pip install "
|
|
71
|
-
详见[安装文档](https://github.com/CharlieZi/
|
|
69
|
+
按需安装可选 extra:`pip install "py-wlcli[lfs]"`(LFS watch)、
|
|
70
|
+
`pip install "py-wlcli[test]"`(测试套件)、`pip install "py-wlcli[dev]"`(开发工具)。
|
|
71
|
+
详见[安装文档](https://github.com/CharlieZi/wl-cli/blob/main/docs/user/installation.md)。
|
|
72
72
|
|
|
73
73
|
### 开发版(从源码)
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
76
|
# 以 GitLab 为主仓(origin),GitHub 为镜像
|
|
77
|
-
git clone https://gitlab.gewinnrobo.com/Humuyuan/
|
|
77
|
+
git clone https://gitlab.gewinnrobo.com/Humuyuan/wl-cli.git
|
|
78
78
|
cd wl_cli
|
|
79
79
|
uv pip install -e ".[dev,test]"
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
GitHub 镜像:<https://github.com/CharlieZi/
|
|
82
|
+
GitHub 镜像:<https://github.com/CharlieZi/wl-cli.git>
|
|
83
83
|
|
|
84
84
|
## 快速开始
|
|
85
85
|
|
|
@@ -102,25 +102,25 @@ pytest tests/ -v # 指定文件(pytest 直跑)
|
|
|
102
102
|
```
|
|
103
103
|
|
|
104
104
|
提交前请确保 pre-commit 通过(ruff、codespell、lockfile 一致性等)。
|
|
105
|
-
开发约束详见 [CLAUDE.md](https://github.com/CharlieZi/
|
|
106
|
-
贡献流程见 [CONTRIBUTING.md](https://github.com/CharlieZi/
|
|
105
|
+
开发约束详见 [CLAUDE.md](https://github.com/CharlieZi/wl-cli/blob/main/CLAUDE.md),
|
|
106
|
+
贡献流程见 [CONTRIBUTING.md](https://github.com/CharlieZi/wl-cli/blob/main/CONTRIBUTING.md)。
|
|
107
107
|
|
|
108
108
|
## 文档
|
|
109
109
|
|
|
110
|
-
- [CLI_COMMANDS.md](https://github.com/CharlieZi/
|
|
111
|
-
- [CONTEXT.md](https://github.com/CharlieZi/
|
|
112
|
-
- [docs/](https://github.com/CharlieZi/
|
|
113
|
-
- [安装文档](https://github.com/CharlieZi/
|
|
110
|
+
- [CLI_COMMANDS.md](https://github.com/CharlieZi/wl-cli/blob/main/CLI_COMMANDS.md) — 命令参考
|
|
111
|
+
- [CONTEXT.md](https://github.com/CharlieZi/wl-cli/blob/main/CONTEXT.md) — 架构术语(Click 迁移语境)
|
|
112
|
+
- [docs/](https://github.com/CharlieZi/wl-cli/tree/main/docs) — 设计、ADR、章节与 CICD/发布文档
|
|
113
|
+
- [安装文档](https://github.com/CharlieZi/wl-cli/blob/main/docs/user/installation.md) — 安装细节与 shell 补全
|
|
114
114
|
|
|
115
115
|
## 架构速览
|
|
116
116
|
|
|
117
|
-
Click CLI([src/
|
|
117
|
+
Click CLI([src/wl_cli/cli_click.py](https://github.com/CharlieZi/wl-cli/blob/main/src/wl_cli/cli_click.py)
|
|
118
118
|
经 `setup_commands()` 直接注册)→ 各命令实现(`commands/<group>/`)→ 业务逻辑;
|
|
119
119
|
Rust 原生扩展(`rust/`、`src/wl_cli/lib/`)经 maturin 编译为 `wl_cli_native`;
|
|
120
120
|
依赖注入容器集中管理共享服务(`infrastructure/dependency_injection.py`)。
|
|
121
|
-
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/
|
|
121
|
+
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/wl-cli/blob/main/docs/superpowers/specs/2026-06-02-full-click-migration-design.md)。
|
|
122
122
|
|
|
123
123
|
## 许可证
|
|
124
124
|
|
|
125
|
-
MIT,见 [LICENSE](https://github.com/CharlieZi/
|
|
125
|
+
MIT,见 [LICENSE](https://github.com/CharlieZi/wl-cli/blob/main/LICENSE)。
|
|
126
126
|
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
| `wl format` | 格式化 Python 与 Rust 代码 |
|
|
15
15
|
| `wl lint` | 代码质量检查(ruff/mypy 等) |
|
|
16
16
|
| `wl clean` | 清理构建产物与临时文件 |
|
|
17
|
-
| `wl debug` |
|
|
17
|
+
| `wl debug` | (已弃用)质量门 — 改用 `wl test -s` 与 `wl format -s` |
|
|
18
18
|
| `wl self` | 自管理命令 |
|
|
19
19
|
|
|
20
20
|
命令行别名:`b`→build、`c`→clean、`f`→format、`i`→init。
|
|
21
|
-
完整命令参考见 [CLI_COMMANDS.md](https://github.com/CharlieZi/
|
|
21
|
+
完整命令参考见 [CLI_COMMANDS.md](https://github.com/CharlieZi/wl-cli/blob/main/CLI_COMMANDS.md)。
|
|
22
22
|
|
|
23
23
|
## 环境要求
|
|
24
24
|
|
|
@@ -31,23 +31,23 @@
|
|
|
31
31
|
### 稳定版(PyPI)
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
pip install
|
|
34
|
+
pip install py-wlcli
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
按需安装可选 extra:`pip install "
|
|
38
|
-
`pip install "
|
|
39
|
-
详见[安装文档](https://github.com/CharlieZi/
|
|
37
|
+
按需安装可选 extra:`pip install "py-wlcli[lfs]"`(LFS watch)、
|
|
38
|
+
`pip install "py-wlcli[test]"`(测试套件)、`pip install "py-wlcli[dev]"`(开发工具)。
|
|
39
|
+
详见[安装文档](https://github.com/CharlieZi/wl-cli/blob/main/docs/user/installation.md)。
|
|
40
40
|
|
|
41
41
|
### 开发版(从源码)
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
44
|
# 以 GitLab 为主仓(origin),GitHub 为镜像
|
|
45
|
-
git clone https://gitlab.gewinnrobo.com/Humuyuan/
|
|
45
|
+
git clone https://gitlab.gewinnrobo.com/Humuyuan/wl-cli.git
|
|
46
46
|
cd wl_cli
|
|
47
47
|
uv pip install -e ".[dev,test]"
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
GitHub 镜像:<https://github.com/CharlieZi/
|
|
50
|
+
GitHub 镜像:<https://github.com/CharlieZi/wl-cli.git>
|
|
51
51
|
|
|
52
52
|
## 快速开始
|
|
53
53
|
|
|
@@ -70,24 +70,24 @@ pytest tests/ -v # 指定文件(pytest 直跑)
|
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
提交前请确保 pre-commit 通过(ruff、codespell、lockfile 一致性等)。
|
|
73
|
-
开发约束详见 [CLAUDE.md](https://github.com/CharlieZi/
|
|
74
|
-
贡献流程见 [CONTRIBUTING.md](https://github.com/CharlieZi/
|
|
73
|
+
开发约束详见 [CLAUDE.md](https://github.com/CharlieZi/wl-cli/blob/main/CLAUDE.md),
|
|
74
|
+
贡献流程见 [CONTRIBUTING.md](https://github.com/CharlieZi/wl-cli/blob/main/CONTRIBUTING.md)。
|
|
75
75
|
|
|
76
76
|
## 文档
|
|
77
77
|
|
|
78
|
-
- [CLI_COMMANDS.md](https://github.com/CharlieZi/
|
|
79
|
-
- [CONTEXT.md](https://github.com/CharlieZi/
|
|
80
|
-
- [docs/](https://github.com/CharlieZi/
|
|
81
|
-
- [安装文档](https://github.com/CharlieZi/
|
|
78
|
+
- [CLI_COMMANDS.md](https://github.com/CharlieZi/wl-cli/blob/main/CLI_COMMANDS.md) — 命令参考
|
|
79
|
+
- [CONTEXT.md](https://github.com/CharlieZi/wl-cli/blob/main/CONTEXT.md) — 架构术语(Click 迁移语境)
|
|
80
|
+
- [docs/](https://github.com/CharlieZi/wl-cli/tree/main/docs) — 设计、ADR、章节与 CICD/发布文档
|
|
81
|
+
- [安装文档](https://github.com/CharlieZi/wl-cli/blob/main/docs/user/installation.md) — 安装细节与 shell 补全
|
|
82
82
|
|
|
83
83
|
## 架构速览
|
|
84
84
|
|
|
85
|
-
Click CLI([src/
|
|
85
|
+
Click CLI([src/wl_cli/cli_click.py](https://github.com/CharlieZi/wl-cli/blob/main/src/wl_cli/cli_click.py)
|
|
86
86
|
经 `setup_commands()` 直接注册)→ 各命令实现(`commands/<group>/`)→ 业务逻辑;
|
|
87
87
|
Rust 原生扩展(`rust/`、`src/wl_cli/lib/`)经 maturin 编译为 `wl_cli_native`;
|
|
88
88
|
依赖注入容器集中管理共享服务(`infrastructure/dependency_injection.py`)。
|
|
89
|
-
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/
|
|
89
|
+
架构演进背景见 [Click 迁移设计](https://github.com/CharlieZi/wl-cli/blob/main/docs/superpowers/specs/2026-06-02-full-click-migration-design.md)。
|
|
90
90
|
|
|
91
91
|
## 许可证
|
|
92
92
|
|
|
93
|
-
MIT,见 [LICENSE](https://github.com/CharlieZi/
|
|
93
|
+
MIT,见 [LICENSE](https://github.com/CharlieZi/wl-cli/blob/main/LICENSE)。
|
|
@@ -49,8 +49,8 @@ build-backend = "maturin"
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
[project.urls]
|
|
52
|
-
Homepage = "https://gitlab.gewinnrobo.com/Humuyuan/
|
|
53
|
-
Issues = "https://gitlab.gewinnrobo.com/Humuyuan/
|
|
52
|
+
Homepage = "https://gitlab.gewinnrobo.com/Humuyuan/wl-cli"
|
|
53
|
+
Issues = "https://gitlab.gewinnrobo.com/Humuyuan/wl-cli/-/issues"
|
|
54
54
|
|
|
55
55
|
[tool.maturin]
|
|
56
56
|
manifest-path = "rust/Cargo.toml"
|
|
@@ -92,9 +92,14 @@ preview = false
|
|
|
92
92
|
|
|
93
93
|
[tool.ruff.lint]
|
|
94
94
|
select = ["E", "W", "F", "I", "C4", "UP", "N", "B", "C90", "TCH"]
|
|
95
|
-
ignore = ["E501", "B904", "
|
|
95
|
+
ignore = ["E501", "B904", "E402", "F811", "S607", "N802", "N817"]
|
|
96
96
|
exclude = [ ".git", ".ruff_cache", "__pycache__", "build", "dist", "*.egg-info", "uv.lock", "tmp",]
|
|
97
97
|
|
|
98
|
+
# F841 (unused local variable) is enabled for package code as a dead-code
|
|
99
|
+
# backstop, but exempted in tests where unused locals are often scaffolding.
|
|
100
|
+
[tool.ruff.lint.per-file-ignores]
|
|
101
|
+
"tests/*" = ["F841"]
|
|
102
|
+
|
|
98
103
|
[tool.ruff.lint.mccabe]
|
|
99
104
|
max-complexity = 14
|
|
100
105
|
|
|
@@ -133,5 +138,4 @@ omit = [
|
|
|
133
138
|
"tests/*",
|
|
134
139
|
"*/__pycache__/*",
|
|
135
140
|
".venv/*",
|
|
136
|
-
"wl_cli/commands/selfcommands/*",
|
|
137
141
|
]
|
|
@@ -2,22 +2,6 @@
|
|
|
2
2
|
# It is not intended for manual editing.
|
|
3
3
|
version = 4
|
|
4
4
|
|
|
5
|
-
[[package]]
|
|
6
|
-
name = "cc"
|
|
7
|
-
version = "1.4.5"
|
|
8
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
-
checksum = "005ec2760ca554fae18df7a11195552ec576cd665632a881bc011d5bb2fd4d80"
|
|
10
|
-
dependencies = [
|
|
11
|
-
"find-msvc-tools",
|
|
12
|
-
"shlex",
|
|
13
|
-
]
|
|
14
|
-
|
|
15
|
-
[[package]]
|
|
16
|
-
name = "find-msvc-tools"
|
|
17
|
-
version = "0.1.12"
|
|
18
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
19
|
-
checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d"
|
|
20
|
-
|
|
21
5
|
[[package]]
|
|
22
6
|
name = "heck"
|
|
23
7
|
version = "0.5.0"
|
|
@@ -26,9 +10,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
|
26
10
|
|
|
27
11
|
[[package]]
|
|
28
12
|
name = "libc"
|
|
29
|
-
version = "0.2.
|
|
13
|
+
version = "0.2.186"
|
|
30
14
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
31
|
-
checksum = "
|
|
15
|
+
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
|
32
16
|
|
|
33
17
|
[[package]]
|
|
34
18
|
name = "once_cell"
|
|
@@ -38,24 +22,24 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
|
38
22
|
|
|
39
23
|
[[package]]
|
|
40
24
|
name = "portable-atomic"
|
|
41
|
-
version = "1.
|
|
25
|
+
version = "1.13.1"
|
|
42
26
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
43
|
-
checksum = "
|
|
27
|
+
checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
|
|
44
28
|
|
|
45
29
|
[[package]]
|
|
46
30
|
name = "proc-macro2"
|
|
47
|
-
version = "1.0.
|
|
31
|
+
version = "1.0.106"
|
|
48
32
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
49
|
-
checksum = "
|
|
33
|
+
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
50
34
|
dependencies = [
|
|
51
35
|
"unicode-ident",
|
|
52
36
|
]
|
|
53
37
|
|
|
54
38
|
[[package]]
|
|
55
39
|
name = "pyo3"
|
|
56
|
-
version = "0.
|
|
40
|
+
version = "0.29.2"
|
|
57
41
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
58
|
-
checksum = "
|
|
42
|
+
checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
|
|
59
43
|
dependencies = [
|
|
60
44
|
"libc",
|
|
61
45
|
"once_cell",
|
|
@@ -67,19 +51,18 @@ dependencies = [
|
|
|
67
51
|
|
|
68
52
|
[[package]]
|
|
69
53
|
name = "pyo3-build-config"
|
|
70
|
-
version = "0.
|
|
54
|
+
version = "0.29.2"
|
|
71
55
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
72
|
-
checksum = "
|
|
56
|
+
checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
|
|
73
57
|
dependencies = [
|
|
74
|
-
"python3-dll-a",
|
|
75
58
|
"target-lexicon",
|
|
76
59
|
]
|
|
77
60
|
|
|
78
61
|
[[package]]
|
|
79
62
|
name = "pyo3-ffi"
|
|
80
|
-
version = "0.
|
|
63
|
+
version = "0.29.2"
|
|
81
64
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
82
|
-
checksum = "
|
|
65
|
+
checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
|
|
83
66
|
dependencies = [
|
|
84
67
|
"libc",
|
|
85
68
|
"pyo3-build-config",
|
|
@@ -87,9 +70,9 @@ dependencies = [
|
|
|
87
70
|
|
|
88
71
|
[[package]]
|
|
89
72
|
name = "pyo3-macros"
|
|
90
|
-
version = "0.
|
|
73
|
+
version = "0.29.2"
|
|
91
74
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
92
|
-
checksum = "
|
|
75
|
+
checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
|
|
93
76
|
dependencies = [
|
|
94
77
|
"proc-macro2",
|
|
95
78
|
"pyo3-macros-backend",
|
|
@@ -99,46 +82,30 @@ dependencies = [
|
|
|
99
82
|
|
|
100
83
|
[[package]]
|
|
101
84
|
name = "pyo3-macros-backend"
|
|
102
|
-
version = "0.
|
|
85
|
+
version = "0.29.2"
|
|
103
86
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
104
|
-
checksum = "
|
|
87
|
+
checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
|
|
105
88
|
dependencies = [
|
|
106
89
|
"heck",
|
|
107
90
|
"proc-macro2",
|
|
108
|
-
"pyo3-build-config",
|
|
109
91
|
"quote",
|
|
110
92
|
"syn",
|
|
111
93
|
]
|
|
112
94
|
|
|
113
|
-
[[package]]
|
|
114
|
-
name = "python3-dll-a"
|
|
115
|
-
version = "0.2.15"
|
|
116
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
117
|
-
checksum = "d80ba7540edb18890d444c5aa8e1f1f99b1bdf26fb26ae383135325f4a36042b"
|
|
118
|
-
dependencies = [
|
|
119
|
-
"cc",
|
|
120
|
-
]
|
|
121
|
-
|
|
122
95
|
[[package]]
|
|
123
96
|
name = "quote"
|
|
124
|
-
version = "1.0.
|
|
97
|
+
version = "1.0.46"
|
|
125
98
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
126
|
-
checksum = "
|
|
99
|
+
checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
|
|
127
100
|
dependencies = [
|
|
128
101
|
"proc-macro2",
|
|
129
102
|
]
|
|
130
103
|
|
|
131
|
-
[[package]]
|
|
132
|
-
name = "shlex"
|
|
133
|
-
version = "2.0.1"
|
|
134
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
135
|
-
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
|
136
|
-
|
|
137
104
|
[[package]]
|
|
138
105
|
name = "syn"
|
|
139
|
-
version = "2.0.
|
|
106
|
+
version = "2.0.118"
|
|
140
107
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
141
|
-
checksum = "
|
|
108
|
+
checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
|
|
142
109
|
dependencies = [
|
|
143
110
|
"proc-macro2",
|
|
144
111
|
"quote",
|
|
@@ -159,7 +126,7 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
|
159
126
|
|
|
160
127
|
[[package]]
|
|
161
128
|
name = "wl_cli_native"
|
|
162
|
-
version = "0.6.
|
|
129
|
+
version = "0.6.14"
|
|
163
130
|
dependencies = [
|
|
164
131
|
"pyo3",
|
|
165
132
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
[package]
|
|
3
3
|
name = "wl_cli_native"
|
|
4
|
-
version = "0.6.
|
|
4
|
+
version = "0.6.14"
|
|
5
5
|
edition = "2024"
|
|
6
6
|
description = "wl_cli - Python项目"
|
|
7
7
|
authors = ["WL Admin <wl.admin@example.com>"]
|
|
@@ -10,7 +10,8 @@ license = "MIT"
|
|
|
10
10
|
[dependencies]
|
|
11
11
|
# 与 pyproject.toml [tool.maturin] features 保持同步(lockstep)——二者取并集,改动需同步。
|
|
12
12
|
# Keep in lockstep with [tool.maturin] features in pyproject.toml — cargo unions both sets.
|
|
13
|
-
|
|
13
|
+
# IS-5: 0.28.3 had RUSTSEC-2026-0176/-0177 (fixed in >=0.29.0); 0.29 keeps the same features.
|
|
14
|
+
pyo3 = { version = "0.29.0", features = ["extension-module", "abi3", "abi3-py311", "generate-import-lib"] }
|
|
14
15
|
|
|
15
16
|
[lib]
|
|
16
17
|
name = "wl_cli_native"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# cargo-deny license policy (IS-16).
|
|
2
|
+
# Allow list covers every license in the resolved rust/Cargo.lock graph
|
|
3
|
+
# (pyo3 + its proc-macro/build deps). Derived from `cargo metadata`:
|
|
4
|
+
# MIT OR Apache-2.0 pyo3 & friends, heck, libc, once_cell, ...
|
|
5
|
+
# Apache-2.0 OR MIT portable-atomic
|
|
6
|
+
# Apache-2.0 WITH LLVM-exception target-lexicon
|
|
7
|
+
# (MIT OR Apache-2.0) AND Unicode-3.0 unicode-ident
|
|
8
|
+
[licenses]
|
|
9
|
+
allow = [
|
|
10
|
+
"MIT",
|
|
11
|
+
"Apache-2.0",
|
|
12
|
+
"Apache-2.0 WITH LLVM-exception",
|
|
13
|
+
"Unicode-3.0",
|
|
14
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Build commands package (registered lazily via COMMAND_TABLE)."""
|
|
@@ -5,7 +5,7 @@ import shutil
|
|
|
5
5
|
import subprocess
|
|
6
6
|
import sys
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from typing import TYPE_CHECKING, Any
|
|
8
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
9
9
|
|
|
10
10
|
if TYPE_CHECKING:
|
|
11
11
|
from wl_cli.utils.workspace_detector.types import WorkspaceDetectionRules
|
|
@@ -94,14 +94,17 @@ class BuildDistCommand(Command):
|
|
|
94
94
|
log_error(f"Unexpected error creating virtual environment: {e}")
|
|
95
95
|
raise CommandError(f"Failed to create virtual environment: {e}")
|
|
96
96
|
|
|
97
|
-
def _build_rules(self, kwargs: dict[str, object]) ->
|
|
98
|
-
return
|
|
99
|
-
"
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
def _build_rules(self, kwargs: dict[str, object]) -> "WorkspaceDetectionRules":
|
|
98
|
+
return cast(
|
|
99
|
+
"WorkspaceDetectionRules",
|
|
100
|
+
{
|
|
101
|
+
"uv_tree_min_roots": kwargs.get("ws_min_roots", 2),
|
|
102
|
+
"use_uv_tree": not kwargs.get("ws_disable_tree", False),
|
|
103
|
+
"use_uv_init": not kwargs.get("ws_disable_init", False),
|
|
104
|
+
"use_pyproject": not kwargs.get("ws_disable_pyproject", False),
|
|
105
|
+
"use_uv_lock": not kwargs.get("ws_disable_uv_lock", False),
|
|
106
|
+
},
|
|
107
|
+
)
|
|
105
108
|
|
|
106
109
|
def _validate_workspace(
|
|
107
110
|
self, detector: WorkspaceDetector, is_workspace: bool, kwargs: dict[str, object]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Clean command module."""
|
|
@@ -44,6 +44,17 @@ _remove_virtual_environments = remove_virtual_environments
|
|
|
44
44
|
_remove_auto_activation_scripts = remove_auto_activation_scripts
|
|
45
45
|
_remove_uv_lock = remove_uv_lock
|
|
46
46
|
|
|
47
|
+
#: Public re-export surface consumed by ``clean/clean.py`` (ruff: F401).
|
|
48
|
+
__all__ = [
|
|
49
|
+
"clean_all_artifacts",
|
|
50
|
+
"clean_build_artifacts",
|
|
51
|
+
"clean_cache_artifacts",
|
|
52
|
+
"clean_lfs_artifacts",
|
|
53
|
+
"clean_logs_artifacts",
|
|
54
|
+
"clean_rust_artifacts",
|
|
55
|
+
"clean_venv_artifacts",
|
|
56
|
+
]
|
|
57
|
+
|
|
47
58
|
|
|
48
59
|
def clean_all_artifacts(
|
|
49
60
|
dry_run: bool = False, config: str | None = None, parallel: bool = False
|
|
@@ -8,7 +8,7 @@ from pathlib import Path
|
|
|
8
8
|
from typing import Any
|
|
9
9
|
|
|
10
10
|
from ....utils.logging import log_error
|
|
11
|
-
from ....utils.subprocess_utils import SubprocessExecutor
|
|
11
|
+
from ....utils.subprocess_utils import SubprocessExecutor
|
|
12
12
|
from .reporter import DeadCodeIssue
|
|
13
13
|
|
|
14
14
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Shortcut command for dead code cleanup."""
|
|
2
2
|
|
|
3
3
|
import sys
|
|
4
|
-
from typing import Any,
|
|
4
|
+
from typing import Any, cast
|
|
5
5
|
|
|
6
6
|
import click
|
|
7
7
|
|
|
@@ -32,9 +32,12 @@ class CleanupCommand(Command):
|
|
|
32
32
|
command = DeadCodeCommand()
|
|
33
33
|
scan_without_fixing = dry_run or scan_only
|
|
34
34
|
|
|
35
|
-
return
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
return cast(
|
|
36
|
+
"int",
|
|
37
|
+
command.run(
|
|
38
|
+
dry_run=scan_without_fixing,
|
|
39
|
+
json=json,
|
|
40
|
+
),
|
|
38
41
|
)
|
|
39
42
|
|
|
40
43
|
|
|
@@ -26,13 +26,13 @@ class DebugCache:
|
|
|
26
26
|
# First try to load from old JSON for backward compatibility
|
|
27
27
|
if self.cache_path.exists():
|
|
28
28
|
with self.cache_path.open("r", encoding="utf-8") as f:
|
|
29
|
-
data = json.load(f)
|
|
29
|
+
data: dict = json.load(f)
|
|
30
30
|
# Also save to new format for next time
|
|
31
31
|
self._disk_cache.set(self.CACHE_KEY, data)
|
|
32
32
|
return data
|
|
33
33
|
|
|
34
34
|
# Fallback to new DiskCache
|
|
35
|
-
cached_data = self._disk_cache.get(self.CACHE_KEY)
|
|
35
|
+
cached_data: dict | None = self._disk_cache.get(self.CACHE_KEY)
|
|
36
36
|
if cached_data is not None:
|
|
37
37
|
return cached_data
|
|
38
38
|
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"""Format command implementation using Click decorators."""
|
|
2
2
|
|
|
3
3
|
import sys
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Optional, Union
|
|
6
4
|
|
|
7
5
|
import click
|
|
8
6
|
|
|
9
7
|
from ...utils.logging import log_info
|
|
10
|
-
from ...utils.project_root import find_project_root
|
|
11
|
-
from ...utils.subprocess_utils import SubprocessResult
|
|
12
8
|
from .format_coordinator import FormatCoordinator
|
|
13
9
|
from .format_executor import FormatExecutor
|
|
14
10
|
from .format_reporter import FormatReporter
|
|
@@ -38,7 +34,7 @@ class FormatCommand:
|
|
|
38
34
|
def execute(
|
|
39
35
|
self,
|
|
40
36
|
quiet: bool = False,
|
|
41
|
-
paths: tuple[str, ...] = None,
|
|
37
|
+
paths: tuple[str, ...] | None = None,
|
|
42
38
|
unsafe: bool = True,
|
|
43
39
|
report: bool = False,
|
|
44
40
|
step_by_step: bool = False,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import os
|
|
4
4
|
import sys
|
|
5
5
|
from pathlib import Path
|
|
6
|
+
from typing import cast
|
|
6
7
|
|
|
7
8
|
from ...utils.output_context import get_output_config
|
|
8
9
|
from .format_path_handler import FormatPathHandler
|
|
@@ -80,16 +81,22 @@ class FormatCoordinator:
|
|
|
80
81
|
self, paths, env, quiet, unsafe=False, step_by_step=False
|
|
81
82
|
) -> bool:
|
|
82
83
|
"""Alias for path_handler.format_specified_paths."""
|
|
83
|
-
return
|
|
84
|
-
|
|
84
|
+
return cast(
|
|
85
|
+
"bool",
|
|
86
|
+
self.path_handler.format_specified_paths(
|
|
87
|
+
paths, env, quiet, unsafe, step_by_step
|
|
88
|
+
),
|
|
85
89
|
)
|
|
86
90
|
|
|
87
91
|
def format_defaults(
|
|
88
92
|
self, current_path, env, quiet, unsafe, for_lint, step_by_step=False
|
|
89
93
|
) -> bool:
|
|
90
94
|
"""Alias for path_handler.format_defaults."""
|
|
91
|
-
return
|
|
92
|
-
|
|
95
|
+
return cast(
|
|
96
|
+
"bool",
|
|
97
|
+
self.path_handler.format_defaults(
|
|
98
|
+
current_path, env, quiet, unsafe, for_lint, step_by_step
|
|
99
|
+
),
|
|
93
100
|
)
|
|
94
101
|
|
|
95
102
|
def generate_format_report(self, quiet, unsafe, paths, env):
|