opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
pre_commit
/
languages
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] __pycache__
N/A
__init__.py
0 bytes
Rename
Delete
conda.py
2.36 KB
Rename
Delete
coursier.py
2.45 KB
Rename
Delete
dart.py
3.04 KB
Rename
Delete
docker.py
4.73 KB
Rename
Delete
docker_image.py
847 bytes
Rename
Delete
dotnet.py
3.38 KB
Rename
Delete
fail.py
685 bytes
Rename
Delete
golang.py
4.55 KB
Rename
Delete
haskell.py
1.62 KB
Rename
Delete
julia.py
4.28 KB
Rename
Delete
lua.py
2.48 KB
Rename
Delete
node.py
3.76 KB
Rename
Delete
perl.py
1.46 KB
Rename
Delete
pygrep.py
3.73 KB
Rename
Delete
python.py
7.15 KB
Rename
Delete
r.py
7.72 KB
Rename
Delete
ruby.py
4.53 KB
Rename
Delete
rust.py
5.36 KB
Rename
Delete
script.py
786 bytes
Rename
Delete
swift.py
1.57 KB
Rename
Delete
system.py
300 bytes
Rename
Delete
from __future__ import annotations import argparse import re import sys from collections.abc import Sequence from re import Pattern from typing import NamedTuple from pre_commit import lang_base from pre_commit import output from pre_commit.prefix import Prefix from pre_commit.xargs import xargs ENVIRONMENT_DIR = None get_default_version = lang_base.basic_get_default_version health_check = lang_base.basic_health_check install_environment = lang_base.no_install in_env = lang_base.no_env def _process_filename_by_line(pattern: Pattern[bytes], filename: str) -> int: retv = 0 with open(filename, 'rb') as f: for line_no, line in enumerate(f, start=1): if pattern.search(line): retv = 1 output.write(f'{filename}:{line_no}:') output.write_line_b(line.rstrip(b'\r\n')) return retv def _process_filename_at_once(pattern: Pattern[bytes], filename: str) -> int: retv = 0 with open(filename, 'rb') as f: contents = f.read() match = pattern.search(contents) if match: retv = 1 line_no = contents[:match.start()].count(b'\n') output.write(f'{filename}:{line_no + 1}:') matched_lines = match[0].split(b'\n') matched_lines[0] = contents.split(b'\n')[line_no] output.write_line_b(b'\n'.join(matched_lines)) return retv def _process_filename_by_line_negated( pattern: Pattern[bytes], filename: str, ) -> int: with open(filename, 'rb') as f: for line in f: if pattern.search(line): return 0 else: output.write_line(filename) return 1 def _process_filename_at_once_negated( pattern: Pattern[bytes], filename: str, ) -> int: with open(filename, 'rb') as f: contents = f.read() match = pattern.search(contents) if match: return 0 else: output.write_line(filename) return 1 class Choice(NamedTuple): multiline: bool negate: bool FNS = { Choice(multiline=True, negate=True): _process_filename_at_once_negated, Choice(multiline=True, negate=False): _process_filename_at_once, Choice(multiline=False, negate=True): _process_filename_by_line_negated, Choice(multiline=False, negate=False): _process_filename_by_line, } def run_hook( prefix: Prefix, entry: str, args: Sequence[str], file_args: Sequence[str], *, is_local: bool, require_serial: bool, color: bool, ) -> tuple[int, bytes]: cmd = (sys.executable, '-m', __name__, *args, entry) return xargs(cmd, file_args, color=color) def main(argv: Sequence[str] | None = None) -> int: parser = argparse.ArgumentParser( description=( 'grep-like finder using python regexes. Unlike grep, this tool ' 'returns nonzero when it finds a match and zero otherwise. The ' 'idea here being that matches are "problems".' ), ) parser.add_argument('-i', '--ignore-case', action='store_true') parser.add_argument('--multiline', action='store_true') parser.add_argument('--negate', action='store_true') parser.add_argument('pattern', help='python regex pattern.') parser.add_argument('filenames', nargs='*') args = parser.parse_args(argv) flags = re.IGNORECASE if args.ignore_case else 0 if args.multiline: flags |= re.MULTILINE | re.DOTALL pattern = re.compile(args.pattern.encode(), flags) retv = 0 process_fn = FNS[Choice(multiline=args.multiline, negate=args.negate)] for filename in args.filenames: retv |= process_fn(pattern, filename) return retv if __name__ == '__main__': raise SystemExit(main())
Save