opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
pre_commit
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] __pycache__
N/A
[DIR] commands
N/A
[DIR] languages
N/A
[DIR] meta_hooks
N/A
[DIR] resources
N/A
__init__.py
0 bytes
Rename
Delete
__main__.py
127 bytes
Rename
Delete
all_languages.py
1.38 KB
Rename
Delete
clientlib.py
14.92 KB
Rename
Delete
color.py
3.14 KB
Rename
Delete
constants.py
282 bytes
Rename
Delete
envcontext.py
1.56 KB
Rename
Delete
error_handler.py
2.56 KB
Rename
Delete
errors.py
78 bytes
Rename
Delete
file_lock.py
2.29 KB
Rename
Delete
git.py
8.32 KB
Rename
Delete
hook.py
1.48 KB
Rename
Delete
lang_base.py
5.12 KB
Rename
Delete
logging_handler.py
1019 bytes
Rename
Delete
main.py
15.20 KB
Rename
Delete
output.py
911 bytes
Rename
Delete
parse_shebang.py
2.42 KB
Rename
Delete
prefix.py
495 bytes
Rename
Delete
repository.py
7.43 KB
Rename
Delete
staged_files_only.py
4.06 KB
Rename
Delete
store.py
9.17 KB
Rename
Delete
util.py
6.87 KB
Rename
Delete
xargs.py
5.41 KB
Rename
Delete
yaml.py
561 bytes
Rename
Delete
yaml_rewrite.py
1.31 KB
Rename
Delete
from __future__ import annotations import os.path from collections.abc import Mapping from typing import NoReturn from identify.identify import parse_shebang_from_file class ExecutableNotFoundError(OSError): def to_output(self) -> tuple[int, bytes, None]: return (1, self.args[0].encode(), None) def parse_filename(filename: str) -> tuple[str, ...]: if not os.path.exists(filename): return () else: return parse_shebang_from_file(filename) def find_executable( exe: str, *, env: Mapping[str, str] | None = None, ) -> str | None: exe = os.path.normpath(exe) if os.sep in exe: return exe environ = env if env is not None else os.environ if 'PATHEXT' in environ: exts = environ['PATHEXT'].split(os.pathsep) possible_exe_names = tuple(f'{exe}{ext}' for ext in exts) + (exe,) else: possible_exe_names = (exe,) for path in environ.get('PATH', '').split(os.pathsep): for possible_exe_name in possible_exe_names: joined = os.path.join(path, possible_exe_name) if os.path.isfile(joined) and os.access(joined, os.X_OK): return joined else: return None def normexe(orig: str, *, env: Mapping[str, str] | None = None) -> str: def _error(msg: str) -> NoReturn: raise ExecutableNotFoundError(f'Executable `{orig}` {msg}') if os.sep not in orig and (not os.altsep or os.altsep not in orig): exe = find_executable(orig, env=env) if exe is None: _error('not found') return exe elif os.path.isdir(orig): _error('is a directory') elif not os.path.isfile(orig): _error('not found') elif not os.access(orig, os.X_OK): # pragma: win32 no cover _error('is not executable') else: return orig def normalize_cmd( cmd: tuple[str, ...], *, env: Mapping[str, str] | None = None, ) -> tuple[str, ...]: """Fixes for the following issues on windows - https://bugs.python.org/issue8557 - windows does not parse shebangs This function also makes deep-path shebangs work just fine """ # Use PATH to determine the executable exe = normexe(cmd[0], env=env) # Figure out the shebang from the resulting command cmd = parse_filename(exe) + (exe,) + cmd[1:] # This could have given us back another bare executable exe = normexe(cmd[0], env=env) return (exe,) + cmd[1:]
Save