
    uIi                        d Z ddlZddlZddlZddlZdededz  fdZh d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   
pyright_check.py - pyright LSP 타입 체크 verifier
Python 파일에 대해 pyright를 실행하여 타입 에러를 검출
    N
file_pathsreturnc                 V   | syt         j                  j                  t         j                  j                  | d               }	 t         j                  j	                  t         j                  j                  |d            r|S t         j                  j                  |      }||k(  ry|}g)u   
    첫 번째 파일의 디렉토리에서 시작하여 부모 디렉토리를 순회하며
    pyrightconfig.json이 존재하는 디렉토리를 반환합니다.
    찾지 못하면 None을 반환합니다.
    Nr   zpyrightconfig.json)ospathdirnameabspathisfilejoin)r   	directoryparents      @/home/jay/workspace/teams/dev6/qc/verifiers.bak/pyright_check.py_find_project_rootr      s}     
1 >?I
77>>"'',,y2FGH+Y	     >   reportCallIssuereportIndexIssuereportReturnTypereportArgumentTypereportMissingImportstimeoutc           	         | sddgdS t        j                  d      }|ddgdS | D cg c]  }|j                  d      s| }}|sddgdS |d	g|z   }t        |      }	 t	        j
                  |d
d
||      }	 t        j                  |j                        }|j                  dg       }	|	D 
cg c]  }
|
j                  d      dk(  s|
 }}
|	D 
cg c]  }
|
j                  d      dk(  s|
 }}
t        |       dt        |       dg}|	D ]  }|j                  d      dvr|j                  dd      }|j                  di       j                  di       j                  dd      }|j                  dd      }|j                  dd      }|rd| d nd}|j                  | d!| d"| |         t        |      dk(  rd#|dS t        d$ |D              }|rd%|dS d|dS c c}w # t        j                  $ r ddd|j                  dd  gdcY S w xY 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)*u#  
    지정된 Python 파일들에 대해 pyright 타입 체크를 실행합니다.

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

    Returns:
        {"status": "PASS"|"WARN"|"FAIL"|"SKIP", "details": [...]}
    SKIPz$No files specified for pyright check)statusdetailspyrightNzpyright not installedz.pyz#No Python files found in file_pathsz--outputjsonT)capture_outputtextr   cwdFAILz#Failed to parse pyright JSON outputzstdout: i,  generalDiagnosticsseverityerrorwarningz	 errors, z warnings found)r"   r#   file rangestartliner   messagerulez ():z - PASSc              3   J   K   | ]  }|j                  d       t        v   yw)r*   N)getMINOR_RULES).0diags     r   	<genexpr>zverify.<locals>.<genexpr>h   s     KD(K7Ks   !#WARNzTimeout after u   s — skipping pyright checkz"Unexpected error running pyright: z: )shutilwhichendswithr   
subprocessrunjsonloadsstdoutJSONDecodeErrorr/   lenappendallTimeoutExpired	Exceptiontype__name__)r   r   pyright_binfpy_filescmdproject_rootresultoutputdiagnosticsderrorswarningsr   r2   	file_pathr(   r)   r*   rule_suffix	all_minores                         r   verifyrT   '   s     .T-UVV,,y)K .E-FGG%;aE):;H; .S-TUU
'(
2C%h/L7

		ZZ.F jj!5r:(IAEE*,=,H!II*M!aeeJ.?9.LAMM&k])CM?/JK 	KDxx
#+??,I88GR(,,Wb9==faHDhhy"-G88FB'D*.BtfA,BKNNi[$s7)K=IJ	K v;!$99KFKK	$99 W55g <& ## 	 9v}}Tc234 	 JM. $$ 
(	1MNO
 	

  
<T!W=M=M<NbQRPSTU
 	

s   G*G*"H) =G/ H) 2HHH) H$0H$4CH) H) %H) /*HH) HH) )I9I9I4.I94I9__main__   F   )ensure_asciiindent)<   )__doc__r:   r   r5   r8   liststrr   r0   intdictrT   rD   sysr>   argvfilesrJ   printdumps r   r   <module>rf      s   
  	  4 C$J $Q
t Q
c Q
4 Q
h zMA-CHHQRL2EE]F	*$**V%
:; r   