
    yIf
                         d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	m
Z
mZ dee         defdZdee         dee         fd	Z	 	 	 	 	 ddededededeee                  defdZdS )zDefines a git hook to allow pre-commit warnings and errors about import order.

usage:
    exit_code = git_hook(strict=True|False, modify=True|False)
    N)Path)ListOptional)Configapi
exceptionscommandreturnc                 v    t          j        | t           j        d          }|j                                        S )zRun a command and return raw output

    :param str command: the command to run
    :returns: the stdout output of the command
    T)stdoutcheck)
subprocessrunPIPEr   decode)r	   results     ?/var/www/piapp/venv/lib/python3.11/site-packages/isort/hooks.py
get_outputr      s0     ^GJO4HHHF=!!!    c                 \    t          |           }d |                                D             S )zRun a command and return lines of output

    :param str command: the command to run
    :returns: list of whitespace-stripped lines output by command
    c                 6    g | ]}|                                 S  )strip).0lines     r   
<listcomp>zget_lines.<locals>.<listcomp>   s     999TDJJLL999r   )r   
splitlines)r	   r   s     r   	get_linesr      s1       F99V%6%6%8%89999r   F strictmodifylazysettings_filedirectoriesc           	      P   g d}|r|                     d           |r|                    |           t          |          }|sdS d}t          |t          j                            t          j                            |d                                       }|D ]}	|	                    d          roddd|	 g}
t          |
          }	 t          j        |t          |	          |	          s|d
z  }|rt          j        |	|           q# t          j        $ r Y w xY w| r|ndS )a;  Git pre-commit hook to check staged files for isort errors

    :param bool strict - if True, return number of errors on exit,
        causing the hook to fail. If False, return zero so it will
        just act as a warning.
    :param bool modify - if True, fix the sources if they are not
        sorted properly. If False, only report result without
        modifying anything.
    :param bool lazy - if True, also check/fix unstaged files.
        This is useful if you frequently use ``git commit -a`` for example.
        If False, only check/fix the staged files for isort errors.
    :param str settings_file - A path to a file to be used as
                               the configuration file for this run.
        When settings_file is the empty string, the configuration file
        will be searched starting at the directory containing the first
        staged file, if any, and going upward in the directory structure.
    :param list[str] directories - A list of directories to restrict the hook to.

    :return number of errors if in strict mode, 0 otherwise.
    )gitz
diff-index--cachedz--name-onlyz--diff-filter=ACMRTUXBHEADr'   r   )r#   settings_pathz.pyr&   show:)	file_pathconfig   )r-   )removeextendr   r   ospathdirnameabspathendswithr   r   check_code_stringr   	sort_filer   FileSkipped)r    r!   r"   r#   r$   diff_cmdfiles_modifiederrorsr-   filename
staged_cmdstaged_contentss               r   git_hookr?   "   sr   8 baaH $
### %$$$x((N qF#goobgoonQ6G&H&HII  F #  U## 	X8J(44O,#tH~~f   ? aKF ?hv>>>>)   	 "66"s   
ADDD)FFFr   N)__doc__r1   r   pathlibr   typingr   r   isortr   r   r   strr   r   boolintr?   r   r   r   <module>rG      s3   
 
			           ! ! ! ! ! ! ! ! ) ) ) ) ) ) ) ) ) )"S	 "c " " " ":tCy :T#Y : : : : '+;# ;#;#;# ;# 	;#
 $s)$;# 	;# ;# ;# ;# ;# ;#r   