
    kiE                         d Z ddlZddlZddlZddededefdZedk(  rNddl	Z	 e
e	j                        dkD  re	j                  dd ng Z ee      Z e ej                  ed	d
             yy)u   
style_check.py - 코드 스타일 포매팅 verifier
Python 파일에 대해 black과 isort를 실행하여 포매팅 위반을 검출
    N
file_pathstimeoutreturnc                    | sddgdS t        j                  d      }t        j                  d      }||ddgdS |ddgdS |dd	gdS | D cg c]  }|j                  d
      s| }}|sddgdS g }g }	 t        j                  |ddg|z   dd|      }|j
                  dk(  r|j                  d       n|j                  j                         D 	cg c]  }	|	j                         s|	 }
}	t        |
D cg c]	  }d|v s| c}      }|dkD  r|j                  d| d       n|j                  d       |j                  |       	 t        j                  |ddg|z   dd|      }|j
                  dk(  r|j                  d       n|j                   j                         D 	cg c]#  }	|	j                         s|	j                         % }}	|rt        |      n
t        |      }|j                  d| d       |D ]  }||vs|j                  |        |sd|dS |j                  d       |D ]  }|j                  d | d!|         t        |      d"k\  r#|j                  d#t        |       d$       d%|dS d&|dS c c}w c c}	w c c}w # t        j                  $ r dd| dgdcY S t        $ r)}ddt        |      j                   d| gdcY d}~S d}~ww xY wc c}	w # t        j                  $ r dd| dgdcY S t        $ r)}ddt        |      j                   d| gdcY d}~S d}~ww xY w)'u&  
    지정된 Python 파일들에 대해 black과 isort 스타일 체크를 실행합니다.

    Args:
        file_paths: 검사할 파일 경로 목록
        timeout: 최대 실행 시간 (초), 초과 시 SKIP

    Returns:
        {"status": "PASS"|"WARN"|"SKIP", "details": [...]}
    SKIPz"No files specified for style check)statusdetailsblackisortNz!black and isort are not installedzblack is not installedzisort is not installedz.pyz#No Python files found in file_pathsz--checkz--quietT)capture_outputtextr   r   z	black: OKzwould reformatzblack: z file(s) need reformattingzblack: files need reformattingzTimeout after u"   s — skipping style check (black)z Unexpected error running black: z: z	isort: OKzisort: u"   s — skipping style check (isort)z Unexpected error running isort: PASSzTo fix formatting, run:z  black z
 && isort    zFAIL: z' files need reformatting (threshold: 5)FAILWARN)shutilwhichendswith
subprocessrun
returncodeappendstderr
splitlinesstriplenextendTimeoutExpired	Exceptiontype__name__stdout)r   r   	black_bin	isort_binfpy_filesr	   needs_reformatblack_resultlinereformat_lineslcounteisort_resultchanged_filess                   :/home/jay/workspace/teams/dev1/qc/verifiers/style_check.pyverifyr1      s     .R-STTW%IW%IY. .Q-RSS .F-GHH .F-GHH%;aE):;H; .S-TUUGN
!~~	9-8	
 ""a'NN;' 0</B/B/M/M/O`tSWS]S]S_d`N`NLq6F!6KLMEqy/IJK?@!!(+
!~~	9-8	
 ""a'NN;' 7C6I6I6T6T6VgdZ^ZdZdZfTZZ\gMg*7C&S]ENNWUG+EFG -N*"))!,-   W55 NN,- 4!Jqc234 >aN 344[\] W5511i <( aL $$ 
(	1STU
 	
  
:47;K;K:LBqcRS
 	

& h $$ 
(	1STU
 	
  
:47;K;K:LBqcRS
 	

s   J(J;AJ J-J1J <	JJ
AJ AK2 +K-K-8K2 K2 
J K*9K*K%K*%K*-K2 2MML=7M=M__main__   F   )ensure_asciiindent)<   )__doc__jsonr   r   listintdictr1   r!   sysr   argvfilesresultprintdumps     r0   <module>rE      s   
   l2t l2c l24 l2^ zMA-CHHQRL2EE]F	*$**V%
:; rD   