
    wi	                        d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	  G d de
          ZddZddddZddddZddddZdS )    )annotationsN)Mapping)NoReturn)parse_shebang_from_filec                      e Zd ZddZdS )ExecutableNotFoundErrorreturntuple[int, bytes, None]c                F    d| j         d                                         d fS )N   r   )argsencode)selfs    h/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/parse_shebang.py	to_outputz!ExecutableNotFoundError.to_output   s!    49Q<&&(($//    N)r	   r
   )__name__
__module____qualname__r    r   r   r   r   
   s(        0 0 0 0 0 0r   r   filenamestrr	   tuple[str, ...]c                b    t           j                            |           sdS t          |           S )Nr   )ospathexistsr   )r   s    r   parse_filenamer      s+    7>>(## 1r&x000r   envexer    Mapping[str, str] | None
str | Nonec               \    t           j                                        t           j         v r S ||nt           j        }d|v rE|d                             t           j                  }t           fd|D                        fz   }n f}|                    dd                              t           j                  D ]k}|D ]f}t           j        	                    ||          }t           j        
                    |          r%t          j        |t           j                  r|c c S gld S )NPATHEXTc              3  $   K   | ]
} | V  d S )Nr   ).0extr!   s     r   	<genexpr>z"find_executable.<locals>.<genexpr>!   s+      "A"ASc=3=="A"A"A"A"A"Ar   PATH )r   r   normpathsepenvironsplitpathseptuplegetjoinisfileaccessX_OK)r!   r    r.   extspossible_exe_namesr   possible_exe_namejoineds   `       r   find_executabler;      s+    '

3

C	v}}
_cc"*GGy!''
33""A"A"A"AD"A"A"AAASFJ!VFB''--bj99  !3 	 	W\\$(9::Fw~~f%% ")FBG*D*D 	
 tr   origc                   d
 fd}t           j         vr:t           j        rt           j         vr t           |          }| |d           |S t           j                                       r |d           d S t           j                                       s |d           d S t          j         t           j                  s |d	           d S  S )Nmsgr   r	   r   c                .    t          d d|            )NzExecutable `z` )r   )r>   r<   s    r   _errorznormexe.<locals>._error/   s"    %&BT&B&BS&B&BCCCr   r   z	not foundzis a directoryzis not executable)r>   r   r	   r   )	r   r-   altsepr;   r   isdirr4   r5   r6   )r<   r    r@   r!   s   `   r   normexerC   .   s    D D D D D D 
vT29	0E0Ed,,,;F;
	t		      W^^D!! {YtRW%% "#####r   cmdc                   t          | d         |          }t          |          |fz   | dd         z   } t          | d         |          }|f| dd         z   S )zFixes 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
    r   r   r   N)rC   r   )rD   r    r!   s      r   normalize_cmdrF   A   sj     #a&c
"
"
"C 


&QRR
0C #a&c
"
"
"C6CGr   )r   r   r	   r   )r!   r   r    r"   r	   r#   )r<   r   r    r"   r	   r   )rD   r   r    r"   r	   r   )
__future__r   os.pathr   collections.abcr   typingr   identify.identifyr   OSErrorr   r   r;   rC   rF   r   r   r   <module>rM      s   " " " " " "  # # # # # #       5 5 5 5 5 50 0 0 0 0g 0 0 0
1 1 1 1 6:     0 ;?      , )-       r   