mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-04-15 01:51:46 +04:00
Remove pre_commit.five
This commit is contained in:
parent
f33716cc17
commit
67c2dcd90d
10 changed files with 33 additions and 60 deletions
|
|
@ -173,7 +173,7 @@ def _run_single_hook(
|
||||||
|
|
||||||
if out.strip():
|
if out.strip():
|
||||||
output.write_line()
|
output.write_line()
|
||||||
output.write_line(out.strip(), logfile_name=hook.log_file)
|
output.write_line_b(out.strip(), logfile_name=hook.log_file)
|
||||||
output.write_line()
|
output.write_line()
|
||||||
|
|
||||||
return files_modified or bool(retcode)
|
return files_modified or bool(retcode)
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,9 @@ import os.path
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Union
|
from typing import Optional
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
from pre_commit import five
|
|
||||||
from pre_commit import output
|
from pre_commit import output
|
||||||
from pre_commit.store import Store
|
from pre_commit.store import Store
|
||||||
|
|
||||||
|
|
@ -15,25 +14,24 @@ class FatalError(RuntimeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def _to_bytes(exc: BaseException) -> bytes:
|
|
||||||
return str(exc).encode()
|
|
||||||
|
|
||||||
|
|
||||||
def _log_and_exit(msg: str, exc: BaseException, formatted: str) -> None:
|
def _log_and_exit(msg: str, exc: BaseException, formatted: str) -> None:
|
||||||
error_msg = b''.join((
|
error_msg = b''.join((
|
||||||
five.to_bytes(msg), b': ',
|
msg.encode(), b': ',
|
||||||
five.to_bytes(type(exc).__name__), b': ',
|
type(exc).__name__.encode(), b': ',
|
||||||
_to_bytes(exc),
|
str(exc).encode(),
|
||||||
))
|
))
|
||||||
output.write_line(error_msg)
|
output.write_line_b(error_msg)
|
||||||
store = Store()
|
store = Store()
|
||||||
log_path = os.path.join(store.directory, 'pre-commit.log')
|
log_path = os.path.join(store.directory, 'pre-commit.log')
|
||||||
output.write_line(f'Check the log at {log_path}')
|
output.write_line(f'Check the log at {log_path}')
|
||||||
|
|
||||||
with open(log_path, 'wb') as log:
|
with open(log_path, 'wb') as log:
|
||||||
def _log_line(s: Union[None, str, bytes] = None) -> None:
|
def _log_line(s: Optional[str] = None) -> None:
|
||||||
output.write_line(s, stream=log)
|
output.write_line(s, stream=log)
|
||||||
|
|
||||||
|
def _log_line_b(s: Optional[bytes] = None) -> None:
|
||||||
|
output.write_line_b(s, stream=log)
|
||||||
|
|
||||||
_log_line('### version information')
|
_log_line('### version information')
|
||||||
_log_line()
|
_log_line()
|
||||||
_log_line('```')
|
_log_line('```')
|
||||||
|
|
@ -50,7 +48,7 @@ def _log_and_exit(msg: str, exc: BaseException, formatted: str) -> None:
|
||||||
_log_line('### error information')
|
_log_line('### error information')
|
||||||
_log_line()
|
_log_line()
|
||||||
_log_line('```')
|
_log_line('```')
|
||||||
_log_line(error_msg)
|
_log_line_b(error_msg)
|
||||||
_log_line('```')
|
_log_line('```')
|
||||||
_log_line()
|
_log_line()
|
||||||
_log_line('```')
|
_log_line('```')
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
|
|
||||||
def to_text(s: Union[str, bytes]) -> str:
|
|
||||||
return s if isinstance(s, str) else s.decode()
|
|
||||||
|
|
||||||
|
|
||||||
def to_bytes(s: Union[str, bytes]) -> bytes:
|
|
||||||
return s if isinstance(s, bytes) else s.encode()
|
|
||||||
|
|
||||||
|
|
||||||
n = to_text
|
|
||||||
|
|
@ -27,7 +27,7 @@ def _process_filename_by_line(pattern: Pattern[bytes], filename: str) -> int:
|
||||||
if pattern.search(line):
|
if pattern.search(line):
|
||||||
retv = 1
|
retv = 1
|
||||||
output.write(f'{filename}:{line_no}:')
|
output.write(f'{filename}:{line_no}:')
|
||||||
output.write_line(line.rstrip(b'\r\n'))
|
output.write_line_b(line.rstrip(b'\r\n'))
|
||||||
return retv
|
return retv
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,7 +44,7 @@ def _process_filename_at_once(pattern: Pattern[bytes], filename: str) -> int:
|
||||||
matched_lines = match[0].split(b'\n')
|
matched_lines = match[0].split(b'\n')
|
||||||
matched_lines[0] = contents.split(b'\n')[line_no]
|
matched_lines[0] = contents.split(b'\n')[line_no]
|
||||||
|
|
||||||
output.write_line(b'\n'.join(matched_lines))
|
output.write_line_b(b'\n'.join(matched_lines))
|
||||||
return retv
|
return retv
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ from typing import Union
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
from pre_commit import color
|
from pre_commit import color
|
||||||
from pre_commit import five
|
|
||||||
from pre_commit import git
|
from pre_commit import git
|
||||||
from pre_commit.commands.autoupdate import autoupdate
|
from pre_commit.commands.autoupdate import autoupdate
|
||||||
from pre_commit.commands.clean import clean
|
from pre_commit.commands.clean import clean
|
||||||
|
|
@ -155,7 +154,6 @@ def _adjust_args_and_chdir(args: argparse.Namespace) -> None:
|
||||||
|
|
||||||
def main(argv: Optional[Sequence[str]] = None) -> int:
|
def main(argv: Optional[Sequence[str]] = None) -> int:
|
||||||
argv = argv if argv is not None else sys.argv[1:]
|
argv = argv if argv is not None else sys.argv[1:]
|
||||||
argv = [five.to_text(arg) for arg in argv]
|
|
||||||
parser = argparse.ArgumentParser(prog='pre-commit')
|
parser = argparse.ArgumentParser(prog='pre-commit')
|
||||||
|
|
||||||
# https://stackoverflow.com/a/8521644/812183
|
# https://stackoverflow.com/a/8521644/812183
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
import contextlib
|
import contextlib
|
||||||
import sys
|
import sys
|
||||||
|
from typing import Any
|
||||||
from typing import IO
|
from typing import IO
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from pre_commit import color
|
from pre_commit import color
|
||||||
from pre_commit import five
|
|
||||||
|
|
||||||
|
|
||||||
def get_hook_message(
|
def get_hook_message(
|
||||||
|
|
@ -60,12 +59,12 @@ def get_hook_message(
|
||||||
|
|
||||||
|
|
||||||
def write(s: str, stream: IO[bytes] = sys.stdout.buffer) -> None:
|
def write(s: str, stream: IO[bytes] = sys.stdout.buffer) -> None:
|
||||||
stream.write(five.to_bytes(s))
|
stream.write(s.encode())
|
||||||
stream.flush()
|
stream.flush()
|
||||||
|
|
||||||
|
|
||||||
def write_line(
|
def write_line_b(
|
||||||
s: Union[None, str, bytes] = None,
|
s: Optional[bytes] = None,
|
||||||
stream: IO[bytes] = sys.stdout.buffer,
|
stream: IO[bytes] = sys.stdout.buffer,
|
||||||
logfile_name: Optional[str] = None,
|
logfile_name: Optional[str] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
@ -77,6 +76,10 @@ def write_line(
|
||||||
|
|
||||||
for output_stream in output_streams:
|
for output_stream in output_streams:
|
||||||
if s is not None:
|
if s is not None:
|
||||||
output_stream.write(five.to_bytes(s))
|
output_stream.write(s)
|
||||||
output_stream.write(b'\n')
|
output_stream.write(b'\n')
|
||||||
output_stream.flush()
|
output_stream.flush()
|
||||||
|
|
||||||
|
|
||||||
|
def write_line(s: Optional[str] = None, **kwargs: Any) -> None:
|
||||||
|
write_line_b(s.encode() if s is not None else s, **kwargs)
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ from typing import Set
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
from pre_commit import five
|
|
||||||
from pre_commit.clientlib import load_manifest
|
from pre_commit.clientlib import load_manifest
|
||||||
from pre_commit.clientlib import LOCAL
|
from pre_commit.clientlib import LOCAL
|
||||||
from pre_commit.clientlib import MANIFEST_HOOK_DICT
|
from pre_commit.clientlib import MANIFEST_HOOK_DICT
|
||||||
|
|
@ -49,7 +48,7 @@ def _write_state(prefix: Prefix, venv: str, state: object) -> None:
|
||||||
state_filename = _state_filename(prefix, venv)
|
state_filename = _state_filename(prefix, venv)
|
||||||
staging = state_filename + 'staging'
|
staging = state_filename + 'staging'
|
||||||
with open(staging, 'w') as state_file:
|
with open(staging, 'w') as state_file:
|
||||||
state_file.write(five.to_text(json.dumps(state)))
|
state_file.write(json.dumps(state))
|
||||||
# Move the file into place atomically to indicate we've installed
|
# Move the file into place atomically to indicate we've installed
|
||||||
os.rename(staging, state_filename)
|
os.rename(staging, state_filename)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ from typing import Tuple
|
||||||
from typing import Type
|
from typing import Type
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
from pre_commit import five
|
|
||||||
from pre_commit import parse_shebang
|
from pre_commit import parse_shebang
|
||||||
|
|
||||||
if sys.version_info >= (3, 7): # pragma: no cover (PY37+)
|
if sys.version_info >= (3, 7): # pragma: no cover (PY37+)
|
||||||
|
|
@ -116,19 +115,9 @@ class CalledProcessError(RuntimeError):
|
||||||
return self.__bytes__().decode()
|
return self.__bytes__().decode()
|
||||||
|
|
||||||
|
|
||||||
def _cmd_kwargs(
|
def _setdefault_kwargs(kwargs: Dict[str, Any]) -> None:
|
||||||
*cmd: str,
|
|
||||||
**kwargs: Any,
|
|
||||||
) -> Tuple[Tuple[str, ...], Dict[str, Any]]:
|
|
||||||
# py2/py3 on windows are more strict about the types here
|
|
||||||
cmd = tuple(five.n(arg) for arg in cmd)
|
|
||||||
kwargs['env'] = {
|
|
||||||
five.n(key): five.n(value)
|
|
||||||
for key, value in kwargs.pop('env', {}).items()
|
|
||||||
} or None
|
|
||||||
for arg in ('stdin', 'stdout', 'stderr'):
|
for arg in ('stdin', 'stdout', 'stderr'):
|
||||||
kwargs.setdefault(arg, subprocess.PIPE)
|
kwargs.setdefault(arg, subprocess.PIPE)
|
||||||
return cmd, kwargs
|
|
||||||
|
|
||||||
|
|
||||||
def cmd_output_b(
|
def cmd_output_b(
|
||||||
|
|
@ -136,7 +125,7 @@ def cmd_output_b(
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> Tuple[int, bytes, Optional[bytes]]:
|
) -> Tuple[int, bytes, Optional[bytes]]:
|
||||||
retcode = kwargs.pop('retcode', 0)
|
retcode = kwargs.pop('retcode', 0)
|
||||||
cmd, kwargs = _cmd_kwargs(*cmd, **kwargs)
|
_setdefault_kwargs(kwargs)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cmd = parse_shebang.normalize_cmd(cmd)
|
cmd = parse_shebang.normalize_cmd(cmd)
|
||||||
|
|
@ -205,7 +194,7 @@ if os.name != 'nt': # pragma: windows no cover
|
||||||
) -> Tuple[int, bytes, Optional[bytes]]:
|
) -> Tuple[int, bytes, Optional[bytes]]:
|
||||||
assert kwargs.pop('retcode') is None
|
assert kwargs.pop('retcode') is None
|
||||||
assert kwargs['stderr'] == subprocess.STDOUT, kwargs['stderr']
|
assert kwargs['stderr'] == subprocess.STDOUT, kwargs['stderr']
|
||||||
cmd, kwargs = _cmd_kwargs(*cmd, **kwargs)
|
_setdefault_kwargs(kwargs)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cmd = parse_shebang.normalize_cmd(cmd)
|
cmd = parse_shebang.normalize_cmd(cmd)
|
||||||
|
|
|
||||||
|
|
@ -256,9 +256,8 @@ class Fixture:
|
||||||
def cap_out():
|
def cap_out():
|
||||||
stream = FakeStream()
|
stream = FakeStream()
|
||||||
write = functools.partial(output.write, stream=stream)
|
write = functools.partial(output.write, stream=stream)
|
||||||
write_line = functools.partial(output.write_line, stream=stream)
|
write_line_b = functools.partial(output.write_line_b, stream=stream)
|
||||||
with mock.patch.object(output, 'write', write):
|
with mock.patch.multiple(output, write=write, write_line_b=write_line_b):
|
||||||
with mock.patch.object(output, 'write_line', write_line):
|
|
||||||
yield Fixture(stream)
|
yield Fixture(stream)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import cfgv
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
from pre_commit import five
|
|
||||||
from pre_commit.clientlib import CONFIG_SCHEMA
|
from pre_commit.clientlib import CONFIG_SCHEMA
|
||||||
from pre_commit.clientlib import load_manifest
|
from pre_commit.clientlib import load_manifest
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
|
|
@ -119,7 +118,7 @@ def test_python_hook(tempdir_factory, store):
|
||||||
_test_hook_repo(
|
_test_hook_repo(
|
||||||
tempdir_factory, store, 'python_hooks_repo',
|
tempdir_factory, store, 'python_hooks_repo',
|
||||||
'foo', [os.devnull],
|
'foo', [os.devnull],
|
||||||
b"['" + five.to_bytes(os.devnull) + b"']\nHello World\n",
|
f'[{os.devnull!r}]\nHello World\n'.encode(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -154,7 +153,7 @@ def test_python_hook_weird_setup_cfg(in_git_dir, tempdir_factory, store):
|
||||||
_test_hook_repo(
|
_test_hook_repo(
|
||||||
tempdir_factory, store, 'python_hooks_repo',
|
tempdir_factory, store, 'python_hooks_repo',
|
||||||
'foo', [os.devnull],
|
'foo', [os.devnull],
|
||||||
b"['" + five.to_bytes(os.devnull) + b"']\nHello World\n",
|
f'[{os.devnull!r}]\nHello World\n'.encode(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -163,7 +162,7 @@ def test_python_venv(tempdir_factory, store): # pragma: no cover (no venv)
|
||||||
_test_hook_repo(
|
_test_hook_repo(
|
||||||
tempdir_factory, store, 'python_venv_hooks_repo',
|
tempdir_factory, store, 'python_venv_hooks_repo',
|
||||||
'foo', [os.devnull],
|
'foo', [os.devnull],
|
||||||
b"['" + five.to_bytes(os.devnull) + b"']\nHello World\n",
|
f'[{os.devnull!r}]\nHello World\n'.encode(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -188,7 +187,7 @@ def test_versioned_python_hook(tempdir_factory, store):
|
||||||
tempdir_factory, store, 'python3_hooks_repo',
|
tempdir_factory, store, 'python3_hooks_repo',
|
||||||
'python3-hook',
|
'python3-hook',
|
||||||
[os.devnull],
|
[os.devnull],
|
||||||
b"3\n['" + five.to_bytes(os.devnull) + b"']\nHello World\n",
|
f'3\n[{os.devnull!r}]\nHello World\n'.encode(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue