Upgrading pre-commit 1 to 2
Breaking1.21.0 → 2.21.0Breaking4Platform4Deprecated2New43Changed27Fixed91Other6
BreakingUpgrade verdict
4 breaking changes and 4 platform requirement changes.
In plain terms
- Four pre-commit sub-commands no longer accept a --config flag that did nothing.
- Hooks configured with the pcre language no longer work and must switch to pygrep.
- The autoupdate command no longer accepts the --tags-only flag, which had no effect anyway.
- pre-commit now returns different exit codes depending on the kind of failure, so scripts checking for a nonzero exit may need updating.
Must act Top 5 of 10 that need code or config changes
Python requirement changed in 2.18.0: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7 → >=3.7.
Drops aspy-yaml, six, toml.
Installs 10 packages in all (was 13).
What you must change
Breaking4
Removes the unused
--config option from the gc, sample-config, validate-config and validate-manifest sub-commands.--configgcsample-configvalidate-configvalidate-manifestRemoves the
pcre language; use pygrep instead.pcrepygrepRemoves the
--tags-only argument to pre-commit autoupdate, which has done nothing since 0.14.0.--tags-onlypre-commit autoupdateExits with distinct codes: 1 for user error, 3 for unexpected error, 130 for ^C.
Platform4
Removes python3.6 support; pre-commit itself now requires python 3.7+.
Upgrades the supported Ruby versions.
Requires python>=3.6.1 (previously 3.6.0).
Removes python2 and python3.5 support; pre-commit itself now requires python 3.6+, though hooks written in python2 still run.
Deprecations to plan for
Deprecated2
Adds
pre-commit validate-config and pre-commit validate-manifest subcommands and deprecates the standalone pre-commit-validate-config and pre-commit-validate-manifest commands.pre-commit validate-configpre-commit validate-manifestpre-commit-validate-configpre-commit-validate-manifestMakes language: python_venv an alias to language: python, to be removed in a future version.
language: python_venvlanguage: pythonAPI changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- changed:
class MigrateShaToRev(object) → class MigrateShaToRev - changed:
function check_min_version(version) → function check_min_version(version: str) -> None - changed:
function check_type_tag(tag) → function check_type_tag(tag: str) -> None - changed:
function ordered_load_normalize_legacy_config(contents) → function ordered_load_normalize_legacy_config(contents: str) -> dict[str, Any] - changed:
function validate_config_main(argv=…) → function validate_config_main(argv: Sequence[str] | None=…) -> int - changed:
function validate_manifest_main(argv=…) → function validate_manifest_main(argv: Sequence[str] | None=…) -> int - changed:
function warn_unknown_keys_repo(extra, orig_keys, dct) → function warn_unknown_keys_repo(extra: Sequence[str], orig_keys: Sequence[str], dct: dict[str, str]) -> None - changed:
function warn_unknown_keys_root(extra, orig_keys, dct) → function warn_unknown_keys_root(extra: Sequence[str], orig_keys: Sequence[str], dct: dict[str, str]) -> None - changed:
method MigrateShaToRev.apply_default(dct) → method MigrateShaToRev.apply_default(dct: dict[str, Any]) -> None - changed:
method MigrateShaToRev.check(dct) → method MigrateShaToRev.check(dct: dict[str, Any]) -> None - added:
class NotAllowed(cfgv.OptionalNoDefault) - added:
class OptionalSensibleRegexAtHook(cfgv.OptionalNoDefault) - added:
class OptionalSensibleRegexAtTop(cfgv.OptionalNoDefault) - added:
class WarnMutableRev(cfgv.ConditionalOptional) - added:
method NotAllowed.check(dct: dict[str, Any]) -> None - added:
method OptionalSensibleRegexAtHook.check(dct: dict[str, Any]) -> None - added:
method OptionalSensibleRegexAtTop.check(dct: dict[str, Any]) -> None - added:
method WarnMutableRev.check(dct: dict[str, Any]) -> None - added:
variable LOCAL_HOOK_DICT
- removed:
class InvalidColorSetting(ValueError) - changed:
function format_color(text, color, use_color_setting) → function format_color(text: str, color: str, use_color_setting: bool) -> str - changed:
function use_color(setting) → function use_color(setting: str) -> bool - added:
function add_color_option(parser: argparse.ArgumentParser) -> None
- removed:
function bool_errcheck(result, func, args) - removed:
function enable_virtual_terminal_processing() - removed:
variable ENABLE_VIRTUAL_TERMINAL_PROCESSING - removed:
variable GetConsoleMode - removed:
variable GetStdHandle - removed:
variable STD_OUTPUT_HANDLE - removed:
variable SetConsoleMode
- removed:
variable REV_LINE_FMT - changed:
class RevInfo(collections.namedtuple('RevInfo', ('repo', 'rev', 'frozen'))) → class RevInfo(NamedTuple) - changed:
function autoupdate(config_file, store, tags_only, freeze, repos=…) → function autoupdate(config_file: str, store: Store, tags_only: bool, freeze: bool, repos: Sequence[str]=…) -> int - changed:
method RevInfo.update(tags_only, freeze) → method RevInfo.update(tags_only: bool, freeze: bool) -> RevInfo - changed:
static method RevInfo.from_config(config) → static method RevInfo.from_config(config: dict[str, Any]) -> RevInfo - added:
field RevInfo.frozen: str | None - added:
field RevInfo.repo: str - added:
field RevInfo.rev: str
- changed:
function clean(store) → function clean(store: Store) -> int
- changed:
function gc(store) → function gc(store: Store) -> int
- added:
function hook_impl(store: Store, *, config: str, color: bool, hook_type: str, hook_dir: str, skip_on_missing_config: bool, args: Sequence[str]) -> int - added:
variable Z40
- changed:
function init_templatedir(config_file, store, directory, hook_types) → function init_templatedir(config_file: str, store: Store, directory: str, hook_types: list[str] | None, skip_on_missing_config: bool=…) -> int
- removed:
function shebang() - changed:
function install(config_file, store, hook_types, overwrite=…, hooks=…, skip_on_missing_config=…, git_dir=…) → function install(config_file: str, store: Store, hook_types: list[str] | None, overwrite: bool=…, hooks: bool=…, skip_on_missing_config: bool=…, git_dir: str | None=…) -> int - changed:
function install_hooks(config_file, store) → function install_hooks(config_file: str, store: Store) -> int - changed:
function is_our_script(filename) → function is_our_script(filename: str) -> bool - changed:
function uninstall(hook_types) → function uninstall(config_file: str, hook_types: list[str] | None) -> int
- changed:
function migrate_config(config_file, quiet=…) → function migrate_config(config_file: str, quiet: bool=…) -> int
- changed:
class Classifier(object) → class Classifier - changed:
constructor Classifier(filenames) → constructor Classifier(filenames: Collection[str]) -> None - changed:
function filter_by_include_exclude(names, include, exclude) → function filter_by_include_exclude(names: Collection[str], include: str, exclude: str) -> list[str] - changed:
function run(config_file, store, args, environ=…) → function run(config_file: str, store: Store, args: argparse.Namespace, environ: MutableMapping[str, str]=…) -> int - changed:
method Classifier.by_types(names, types, exclude_types) → method Classifier.by_types(names: Sequence[str], types: Collection[str], types_or: Collection[str], exclude_types: Collection[str]) -> list[str] - changed:
method Classifier.filenames_for_hook(hook) → method Classifier.filenames_for_hook(hook: Hook) -> tuple[str, ...] - added:
static method Classifier.from_config(filenames: Collection[str], include: str, exclude: str) -> Classifier
- changed:
function sample_config() → function sample_config() -> int
- changed:
function try_repo(args) → function try_repo(args: argparse.Namespace) -> int
- added:
function validate_config(filenames: list[str]) -> int
- added:
function validate_manifest(filenames: list[str]) -> int
- removed:
variable YAML_DUMP_KWARGS - added:
variable HOOK_TYPES
- removed:
variable Var - changed:
function envcontext(patch, _env=…) → function envcontext(patch: PatchesT, _env: MutableMapping[str, str] | None=…) -> Generator[None, None, None] - changed:
function format_env(parts, env) → function format_env(parts: SubstitutionT, env: MutableMapping[str, str]) -> str - added:
class Var(NamedTuple) - added:
field Var.default: str - added:
field Var.name: str - added:
variable PatchesT - added:
variable SubstitutionT - added:
variable ValueT
- removed:
class FatalError(RuntimeError) - changed:
function error_handler() → function error_handler() -> Generator[None, None, None]
- added:
class FatalError(RuntimeError)
- changed:
function lock(path, blocked_cb) → function lock(path: str, blocked_cb: Callable[[], None]) -> Generator[None, None, None]
- removed:
function to_bytes(s) - removed:
function to_text(s) - removed:
variable n
- changed:
function check_for_cygwin_mismatch() → function check_for_cygwin_mismatch() -> None - changed:
function commit(repo=…) → function commit(repo: str=…) -> None - changed:
function get_all_files() → function get_all_files() -> list[str] - changed:
function get_changed_files(new, old) → function get_changed_files(old: str, new: str) -> list[str] - changed:
function get_conflicted_files() → function get_conflicted_files() -> set[str] - changed:
function get_git_dir(git_root=…) → function get_git_dir(git_root: str=…) -> str - changed:
function get_remote_url(git_root) → function get_remote_url(git_root: str) -> str - changed:
function get_root() → function get_root() -> str - changed:
function get_staged_files(cwd=…) → function get_staged_files(cwd: str | None=…) -> list[str] - changed:
function git_path(name, repo=…) → function git_path(name: str, repo: str=…) -> str - changed:
function has_core_hookpaths_set() → function has_core_hookpaths_set() -> bool - changed:
function has_diff(*args, **kwargs) → function has_diff(*args: str, repo: str=…) -> bool - changed:
function head_rev(remote) → function head_rev(remote: str) -> str - changed:
function init_repo(path, remote) → function init_repo(path: str, remote: str) -> None - changed:
function intent_to_add_files() → function intent_to_add_files() -> list[str] - changed:
function is_in_merge_conflict() → function is_in_merge_conflict() -> bool - changed:
function no_git_env(_env=…) → function no_git_env(_env: Mapping[str, str] | None=…) -> dict[str, str] - changed:
function parse_merge_msg_for_conflicts(merge_msg) → function parse_merge_msg_for_conflicts(merge_msg: bytes) -> list[str] - changed:
function zsplit(s) → function zsplit(s: str) -> list[str] - added:
function get_best_candidate_tag(rev: str, git_repo: str) -> str - added:
function get_git_common_dir(git_root: str=…) -> str - added:
variable NO_FS_MONITOR
- added:
class Hook(NamedTuple) - added:
field Hook.additional_dependencies: Sequence[str] - added:
field Hook.alias: str - added:
field Hook.always_run: bool - added:
field Hook.args: Sequence[str] - added:
field Hook.description: str - added:
field Hook.entry: str - added:
field Hook.exclude: str - added:
field Hook.exclude_types: Sequence[str] - added:
field Hook.fail_fast: bool - added:
field Hook.files: str - added:
field Hook.id: str - added:
field Hook.language: str - added:
field Hook.language_version: str - added:
field Hook.log_file: str - added:
field Hook.minimum_pre_commit_version: str - added:
field Hook.name: str - added:
field Hook.pass_filenames: bool - added:
field Hook.prefix: Prefix - added:
field Hook.require_serial: bool - added:
field Hook.src: str - added:
field Hook.stages: Sequence[str] - added:
field Hook.types: Sequence[str] - added:
field Hook.types_or: Sequence[str] - added:
field Hook.verbose: bool - added:
property Hook.cmd -> tuple[str, ...] - added:
property Hook.install_key -> tuple[Prefix, str, str, tuple[str, ...]] - added:
static method Hook.create(src: str, prefix: Prefix, dct: dict[str, Any]) -> Hook - added:
variable logger
- added:
class Language(NamedTuple) - added:
field Language.ENVIRONMENT_DIR: str | None - added:
field Language.get_default_version: Callable[[], str] - added:
field Language.health_check: Callable[[Prefix, str], str | None] - added:
field Language.install_environment: Callable[[Prefix, str, Sequence[str]], None] - added:
field Language.name: str - added:
field Language.run_hook: Callable[[Hook, Sequence[str], bool], tuple[int, bytes]]
- removed:
variable healthy - changed:
function get_env_patch(env) → function get_env_patch(env: str) -> PatchesT - changed:
function in_env(prefix, language_version) → function in_env(prefix: Prefix, language_version: str) -> Generator[None, None, None] - changed:
function install_environment(prefix, version, additional_dependencies) → function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable health_check
- added:
function get_env_patch(target_dir: str) -> PatchesT - added:
function in_env(prefix: Prefix) -> Generator[None, None, None] - added:
function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - added:
function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable ENVIRONMENT_DIR - added:
variable get_default_version - added:
variable health_check
- added:
function get_env_patch(venv: str) -> PatchesT - added:
function in_env(prefix: Prefix) -> Generator[None, None, None] - added:
function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - added:
function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable ENVIRONMENT_DIR - added:
variable get_default_version - added:
variable health_check
- removed:
function assert_docker_available() - removed:
function docker_is_running() - removed:
variable healthy - changed:
function build_docker_image(prefix, **kwargs) → function build_docker_image(prefix: Prefix, *, pull: bool) -> None - changed:
function docker_cmd() → function docker_cmd() -> tuple[str, ...] - changed:
function docker_tag(prefix) → function docker_tag(prefix: Prefix) -> str - changed:
function get_docker_user() → function get_docker_user() -> tuple[str, ...] - changed:
function install_environment(prefix, version, additional_dependencies) → function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - changed:
function md5(s) → function md5(s: str) -> str - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable health_check
- removed:
variable healthy - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable health_check
- added:
function get_env_patch(venv: str) -> PatchesT - added:
function in_env(prefix: Prefix) -> Generator[None, None, None] - added:
function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - added:
function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable BIN_DIR - added:
variable ENVIRONMENT_DIR - added:
variable get_default_version - added:
variable health_check
- removed:
variable healthy - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable health_check
- removed:
variable healthy - changed:
function get_env_patch(venv) → function get_env_patch(venv: str) -> PatchesT - changed:
function guess_go_dir(remote_url) → function guess_go_dir(remote_url: str) -> str - changed:
function in_env(prefix) → function in_env(prefix: Prefix) -> Generator[None, None, None] - changed:
function install_environment(prefix, version, additional_dependencies) → function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable health_check
- removed:
function basic_healthy(prefix, language_version) - changed:
function assert_no_additional_deps(lang, additional_deps) → function assert_no_additional_deps(lang: str, additional_deps: Sequence[str]) -> None - changed:
function assert_version_default(binary, version) → function assert_version_default(binary: str, version: str) -> None - changed:
function basic_get_default_version() → function basic_get_default_version() -> str - changed:
function environment_dir(ENVIRONMENT_DIR, language_version) → function environment_dir(d: None, language_version: str) -> None | (d: str, language_version: str) -> str - changed:
function no_install(prefix, version, additional_dependencies) → function no_install(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> NoReturn - changed:
function run_setup_cmd(prefix, cmd) → function run_setup_cmd(prefix: Prefix, cmd: tuple[str, ...], **kwargs: Any) -> None - changed:
function run_xargs(hook, cmd, file_args, **kwargs) → function run_xargs(hook: Hook, cmd: tuple[str, ...], file_args: Sequence[str], **kwargs: Any) -> tuple[int, bytes] - changed:
function target_concurrency(hook) → function target_concurrency(hook: Hook) -> int - added:
function basic_health_check(prefix: Prefix, language_version: str) -> str | None - added:
function exe_exists(exe: str) -> bool - added:
variable SHIMS_RE
- added:
function get_env_patch(d: str) -> PatchesT - added:
function in_env(prefix: Prefix) -> Generator[None, None, None] - added:
function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - added:
function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable ENVIRONMENT_DIR - added:
variable get_default_version - added:
variable health_check
- removed:
variable get_default_version - removed:
variable healthy - changed:
function get_env_patch(venv) → function get_env_patch(venv: str) -> PatchesT - changed:
function in_env(prefix, language_version) → function in_env(prefix: Prefix, language_version: str) -> Generator[None, None, None] - changed:
function install_environment(prefix, version, additional_dependencies) → function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
function get_default_version() -> str - added:
function health_check(prefix: Prefix, language_version: str) -> str | None
- removed:
function run_hook(hook, file_args, color) - removed:
variable ENVIRONMENT_DIR - removed:
variable GREP - removed:
variable get_default_version - removed:
variable healthy - removed:
variable install_environment
- added:
function get_env_patch(venv: str) -> PatchesT - added:
function in_env(prefix: Prefix, language_version: str) -> Generator[None, None, None] - added:
function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - added:
function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable ENVIRONMENT_DIR - added:
variable get_default_version - added:
variable health_check
- removed:
variable healthy - changed:
function main(argv=…) → function main(argv: Sequence[str] | None=…) -> int - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
class Choice(NamedTuple) - added:
field Choice.multiline: bool - added:
field Choice.negate: bool - added:
variable FNS - added:
variable health_check
- removed:
function make_venv(envdir, python) - removed:
function py_interface(_dir, _make_venv) - removed:
variable healthy - removed:
variable in_env - removed:
variable install_environment - removed:
variable run_hook - changed:
function bin_dir(venv) → function bin_dir(venv: str) -> str - changed:
function get_default_version() → function get_default_version() -> str - changed:
function get_env_patch(venv) → function get_env_patch(venv: str) -> PatchesT - changed:
function norm_version(version) → function norm_version(version: str) -> str | None - added:
function health_check(prefix: Prefix, language_version: str) -> str | None - added:
function in_env(prefix: Prefix, language_version: str) -> Generator[None, None, None] - added:
function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - added:
function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes]
- removed:
function get_default_version() - removed:
function make_venv(envdir, python) - removed:
function orig_py_exe(exe) - removed:
variable ENVIRONMENT_DIR - removed:
variable healthy - removed:
variable in_env - removed:
variable install_environment - removed:
variable run_hook
- added:
function get_env_patch(venv: str) -> PatchesT - added:
function in_env(prefix: Prefix, language_version: str) -> Generator[None, None, None] - added:
function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - added:
function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable ENVIRONMENT_DIR - added:
variable RSCRIPT_OPTS - added:
variable get_default_version - added:
variable health_check
- removed:
variable get_default_version - removed:
variable healthy - changed:
function get_env_patch(venv, language_version) → function get_env_patch(venv: str, language_version: str) -> PatchesT - changed:
function in_env(prefix, language_version) → function in_env(prefix: Prefix, language_version: str) -> Generator[None, None, None] - changed:
function install_environment(prefix, version, additional_dependencies) → function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
function get_default_version() -> str - added:
variable health_check
- removed:
variable get_default_version - removed:
variable healthy - changed:
function get_env_patch(target_dir) → function get_env_patch(target_dir: str, version: str) -> PatchesT - changed:
function in_env(prefix) → function in_env(prefix: Prefix, language_version: str) -> Generator[None, None, None] - changed:
function install_environment(prefix, version, additional_dependencies) → function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
function get_default_version() -> str - added:
function install_rust_with_toolchain(toolchain: str) -> None - added:
variable health_check
- removed:
variable healthy - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable health_check
- removed:
variable healthy - changed:
function get_env_patch(venv) → function get_env_patch(venv: str) -> PatchesT - changed:
function in_env(prefix) → function in_env(prefix: Prefix) -> Generator[None, None, None] - changed:
function install_environment(prefix, version, additional_dependencies) → function install_environment(prefix: Prefix, version: str, additional_dependencies: Sequence[str]) -> None - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable health_check
- removed:
variable healthy - changed:
function run_hook(hook, file_args, color) → function run_hook(hook: Hook, file_args: Sequence[str], color: bool) -> tuple[int, bytes] - added:
variable health_check
- changed:
constructor LoggingHandler(use_color) → constructor LoggingHandler(use_color: bool) -> None - changed:
function logging_handler(*args, **kwargs) → function logging_handler(use_color: bool) -> Generator[None, None, None] - changed:
method LoggingHandler.emit(record) → method LoggingHandler.emit(record: logging.LogRecord) -> None
- removed:
class AppendReplaceDefault(argparse.Action) - removed:
constructor AppendReplaceDefault(*args, **kwargs) - changed:
function main(argv=…) → function main(argv: Sequence[str] | None=…) -> int
- removed:
function main(argv=…) - removed:
function make_archive(name, repo, ref, destdir) - removed:
variable REPOS
- changed:
function check_all_hooks_match_files(config_file) → function check_all_hooks_match_files(config_file: str) -> int - changed:
function main(argv=…) → function main(argv: Sequence[str] | None=…) -> int
- changed:
function check_useless_excludes(config_file) → function check_useless_excludes(config_file: str) -> int - changed:
function exclude_matches_any(filenames, include, exclude) → function exclude_matches_any(filenames: Sequence[str], include: str, exclude: str) -> bool - changed:
function main(argv=…) → function main(argv: Sequence[str] | None=…) -> int
- changed:
function main(argv=…) → function main(argv: Sequence[str] | None=…) -> int
- removed:
function get_hook_message(start, postfix=…, end_msg=…, end_len=…, end_color=…, use_color=…, cols=…) - removed:
variable stdout_byte_stream - changed:
function write(s, stream=…) → function write(s: str, stream: IO[bytes]=…) -> None - changed:
function write_line(s=…, stream=…, logfile_name=…) → function write_line(s: str | None=…, **kwargs: Any) -> None - added:
function write_line_b(s: bytes | None=…, stream: IO[bytes]=…, logfile_name: str | None=…) -> None
- changed:
function find_executable(exe, _environ=…) → function find_executable(exe: str, _environ: Mapping[str, str] | None=…) -> str | None - changed:
function normalize_cmd(cmd) → function normalize_cmd(cmd: tuple[str, ...]) -> tuple[str, ...] - changed:
function normexe(orig) → function normexe(orig: str) -> str - changed:
function parse_filename(filename) → function parse_filename(filename: str) -> tuple[str, ...] - changed:
method ExecutableNotFoundError.to_output() → method ExecutableNotFoundError.to_output() -> tuple[int, bytes, None]
- changed:
class Prefix(collections.namedtuple('Prefix', ('prefix_dir',))) → class Prefix(NamedTuple) - changed:
method Prefix.exists(*parts) → method Prefix.exists(*parts: str) -> bool - changed:
method Prefix.path(*parts) → method Prefix.path(*parts: str) -> str - changed:
method Prefix.star(end) → method Prefix.star(end: str) -> tuple[str, ...] - added:
field Prefix.prefix_dir: str
- removed:
class Hook(collections.namedtuple('Hook', ('src', 'prefix') + _KEYS)) - removed:
method Hook.install() - removed:
method Hook.installed() - removed:
method Hook.run(file_args, color) - removed:
property Hook.cmd - removed:
property Hook.install_key - removed:
static method Hook.create(src, prefix, dct) - changed:
function all_hooks(root_config, store) → function all_hooks(root_config: dict[str, Any], store: Store) -> tuple[Hook, ...] - changed:
function install_hook_envs(hooks, store) → function install_hook_envs(hooks: Sequence[Hook], store: Store) -> None
- changed:
function staged_files_only(patch_dir) → function staged_files_only(patch_dir: str) -> Generator[None, None, None]
- changed:
class Store(object) → class Store - changed:
constructor Store(directory=…) → constructor Store(directory: str | None=…) -> None - changed:
method Store.clone(repo, ref, deps=…) → method Store.clone(repo: str, ref: str, deps: Sequence[str]=…) -> str - changed:
method Store.connect(db_path=…) → method Store.connect(db_path: str | None=…) -> Generator[sqlite3.Connection, None, None] - changed:
method Store.delete_configs(configs) → method Store.delete_configs(configs: list[str]) -> None - changed:
method Store.delete_repo(db_repo_name, ref, path) → method Store.delete_repo(db_repo_name: str, ref: str, path: str) -> None - changed:
method Store.exclusive_lock() → method Store.exclusive_lock() -> Generator[None, None, None] - changed:
method Store.make_local(deps) → method Store.make_local(deps: Sequence[str]) -> str - changed:
method Store.mark_config_used(path) → method Store.mark_config_used(path: str) -> None - changed:
method Store.select_all_configs() → method Store.select_all_configs() -> list[str] - changed:
method Store.select_all_repos() → method Store.select_all_repos() -> list[tuple[str, str, str]] - changed:
static method Store.db_repo_name(repo, deps) → static method Store.db_repo_name(repo: str, deps: Sequence[str]) -> str
- removed:
function mkdirp(path) - removed:
function noop_context() - removed:
method CalledProcessError.to_bytes() - removed:
method CalledProcessError.to_text() - changed:
class Pty(object) → class Pty - changed:
constructor CalledProcessError(returncode, cmd, expected_returncode, stdout, stderr) → constructor CalledProcessError(returncode: int, cmd: tuple[str, ...], stdout: bytes, stderr: bytes | None) -> None - changed:
constructor Pty() → constructor Pty() -> None - changed:
function clean_path_on_failure(path) → function clean_path_on_failure(path: str) -> Generator[None, None, None] - changed:
function cmd_output(*cmd, **kwargs) → function cmd_output(*cmd: str, **kwargs: Any) -> tuple[int, str, str | None] - changed:
function cmd_output_b(*cmd, **kwargs) → function cmd_output_b(*cmd: str, check: bool=…, **kwargs: Any) -> tuple[int, bytes, bytes | None] - changed:
function cmd_output_p(*cmd, **kwargs) → function cmd_output_p(*cmd: str, check: bool=…, **kwargs: Any) -> tuple[int, bytes, bytes | None] - changed:
function make_executable(filename) → function make_executable(filename: str) -> None - changed:
function parse_version(s) → function parse_version(s: str) -> tuple[int, ...] - changed:
function resource_bytesio(filename) → function resource_bytesio(filename: str) -> IO[bytes] - changed:
function resource_text(filename) → function resource_text(filename: str) -> str - changed:
function rmtree(path) → function rmtree(path: str) -> None - changed:
function tmpdir() → function tmpdir() -> Generator[str, None, None] - changed:
method Pty.close_r() → method Pty.close_r() -> None - changed:
method Pty.close_w() → method Pty.close_w() -> None - added:
function force_bytes(exc: Any) -> bytes - added:
function win_exe(s: str) -> str - added:
function yaml_dump(o: Any, **kwargs: Any) -> str - added:
variable Dumper - added:
variable Loader - added:
variable yaml_load
- changed:
function partition(cmd, varargs, target_concurrency, _max_length=…) → function partition(cmd: Sequence[str], varargs: Sequence[str], target_concurrency: int, _max_length: int | None=…) -> tuple[tuple[str, ...], ...] - changed:
function xargs(cmd, varargs, **kwargs) → function xargs(cmd: tuple[str, ...], varargs: Sequence[str], *, color: bool=…, target_concurrency: int=…, _max_length: int=…, **kwargs: Any) -> tuple[int, bytes] - added:
variable TArg - added:
variable TRet