2010-02-26 5 views
3

해석 된 파일의 탭 사용이 일관되지 않으면 파이썬 인터프리터를 -tt으로 시작하여 예외를 발생시킬 수 있습니다.일관성없는 탭 사용으로 파이썬 파일을 거부하는 SVN 사전 커밋 훅

이 예외를 발생시키는 파일을 거부하는 SVN에 대한 사전 커밋 훅을 작성하려고합니다. python -tt에 커밋되는 파일을 전달할 수 있지만 내 문제는 파일이 검사되는 것 외에도 실행된다는 것입니다. 파이썬에게 "파일을 분석하고 실행하지 마라"고 말할 수있는 방법이 있습니까? 아니면 내가 원하는 것을 성취하기위한 다른 방법이 더 좋을 수도 있습니다.

답변

5

당신은 py_compile 모듈을 사용하여이 작업을 수행 할 수 있습니다

$ python -tt -c "import py_compile; py_compile.compile('test.py', doraise=True)" 

doraise=True는 예외가 발생하고 쉽게 사전 커밋 후크에서 테스트 할 수 있습니다 0이 아닌 종료 코드를 반환합니다.

+0

위대한 해결책, 고마워요! –

2

파이썬에서 선호하는 탭 사용법은 전혀 탭을 사용하지 않습니다 (들여 쓰기에 4 개의 공백 사용). 이것이 코딩 스타일이라면 코드에 탭이 있는지 확인하는 것이 문제가 될 수 있습니다. 그리고 이것은 'grep'을 사용해도 간단한 정규 표현식으로 쉽게 할 수 있으므로 인터프리터를 실행할 필요조차 없습니다.

그러나 'py_compile'방법은 다른 장점이 있습니다. Python 코드 구문도 검사하기 때문에 (SVN 서버의 계산 능력이 약간 들지만) 바람직합니다.

+0

나는 공간이 PEP8에 따라 선호된다는 것을 알고있다. 그러나 여전히 실용적이고 간단한 해결책으로 보이며 많은 파일과 에디터 설정을 공간 (파이썬에만 해당)을 사용하도록 변경하지 않고 스크립트가 올바른지 확인합니다. –

관련 문제