
    oiZ                         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!|         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 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/dev7/qc/verifiers.bak/style_check.pyverifyr/      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 11_ <( aL $$ 
(	1STU
 	
  
:47;K;K:LBqcRS
 	

& h $$ 
(	1STU
 	
  
:47;K;K:LBqcRS
 	

s   I(I;AI) I-I1I) <	I$I$
AI) AK +J<J<8K K 
I) )J9J9J4.J94J9<K L L(LLL__main__   F   )ensure_asciiindent)<   )__doc__jsonr   r   listintdictr/   r   sysr   argvfilesresultprintdumps     r.   <module>rC      s   
   g2t g2c g24 g2T zMA-CHHQRL2EE]F	*$**V%
:; rB   