
    Vh5                        d Z ddlmZ ddlZddlZddlmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZ dd	lmZmZmZmZ dd
lmZ ddlmZ ddlmZ  G d de      Zy)9Sanity test for PEP 8 style guidelines using pycodestyle.    )annotationsN   )SanitySingleVersionSanityMessageSanityFailureSanitySuccessSanityTargetsSANITY_ROOT   )
TestResult)
TestTarget)SubprocessErrorread_lines_without_commentsparse_to_list_of_dict	is_subdir)run_command)SanityConfig)PythonConfigc                  2    e Zd ZdZedd       ZddZddZy)	Pep8Testr   c                     y)zError code for ansible-test matching the format used by the underlying test program, or None if the program does not use error codes.A100 )selfs    [/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_internal/commands/sanity/pep8.py
error_codezPep8Test.error_code/   s         c                    |D cg c]J  }t         j                  j                  |j                        d   dk(  st        |j                  d      sI|L c}S c c}w )z\Return the given list of test targets, filtered to include only those relevant for the test.r   z.pybin)ospathsplitextr   )r   targetstargets      r   filter_targetszPep8Test.filter_targets4   sH    %,{60@0@0Ma0PTY0Y]fgmgrgrty]z{{{s   A
AAc                   t         j                  j                  t        dd      }t	        t        |d            }| j                  |      }|j                  D cg c]  }|j                   }}|j                  ddddd	d
ddj                  t	        |            g	|z   }	|r%	 t        ||	d      \  }
}d}|rt        |	|||
      d }
|j                  rt        | j                        S |
rd}t!        ||
      }ng }|D cg c]J  }t#        |d   |d   t%        |d         t%        |d         |d   j'                  d      rdnd|d         L }}|j)                  ||      }|rt+        | j                  |      S t        | j                        S c c}w # t        $ r/}|j                  }
|j                  }|j                  }Y d }~d }~ww xY wc c}w )Npep8zcurrent-ignore.txtT)remove_blank_linesz-mpycodestylez--max-line-length160z--configz	/dev/nullz--ignore,)capturer   )cmdstatusstderrstdoutz]^(?P<path>[^:]*):(?P<line>[0-9]+):(?P<column>[0-9]+): (?P<code>[WE][0-9]{3}) (?P<message>.*)$messager"   linecolumncodeWwarningerror)r2   r"   r3   r4   levelr5   )messages)r!   r"   joinr   sortedr   load_processorincluder   r   r1   r0   r/   explainr	   namer   r   int
startswithprocess_errorsr   )r   argsr$   pythoncurrent_ignore_filecurrent_ignoresettingsr%   pathsr.   r1   r0   r/   expatternresultsrr:   errorss                      r   testzPep8Test.test8   s    ggll;@TU ;<Odh ij&&t,+2??;;; KK-!78
  #!,T3!E %#fVTZ[[F<< ++uG+GV<GG   "iL6QvYq{# y33C8)g6
   ((59 V<<TYY''a < # ##(s%   F#F AG	G $G

GN)returnzt.Optional[str])r$   list[TestTarget]rP   rQ   )rD   r   r$   r
   rE   r   rP   r   )__name__
__module____qualname____doc__propertyr   r&   rO   r   r   r   r   r   ,   s"    C |6(r   r   )rU   
__future__r   r!   typingt r   r   r   r	   r
   r   rO   r   r%   r   utilr   r   r   r   util_commonr   configr   host_configsr   r   r   r   r   <module>r_      sM    ? " 	   
B(" B(r   