Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 3001 – 표준 라이브러리 모듈을 검토하고 개선하기 위한 절차

Author:
Georg Brandl <georg at python.org>
Status:
Withdrawn
Type:
Process
Created:
05-Apr-2006
Post-History:


Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

초록

이 PEP는 표준 라이브러리 모듈, 특히 Python으로 작성된 모듈을 검토하고 개선하여 Python 3000에 사용할 수 있도록 준비하는 절차를 설명합니다. 개선 작업에는 여러 단계가 있을 수 있으며, 각 단계는 아래의 한 절에서 설명합니다. 물론 모든 모듈에 모든 단계를 수행해야 하는 것은 아닙니다.

오래된 모듈 제거

2.x 버전에서 사용 중단으로 표시된 모든 모듈은 Python 3000에서 제거해야 합니다. 현재는 오래된 것으로 여겨지지만 너무 널리 사용되어 사용 중단 또는 제거할 수 없는 모듈에도 동일하게 적용됩니다. Python 3000은 이러한 모듈을 제거할 절호의 기회입니다.

제거된 모든 모듈을 나열하고 가능한 대체물 또는 대안에 대한 정보를 함께 제공하는 문서가 있어야 합니다. 이 정보는 PEP XXX에서 언급된 포팅 도우미 스크립트 python3warn.py에서도 제공해야 합니다.

모듈 이름 변경

계층적 라이브러리 네임스페이스 또는 표준 모듈을 임포트할 최상위 패키지를 도입하는 “대규모 stdlib 이름 변경” 제안이 있습니다. 이러한 가능성과는 별개로, 일부 모듈의 이름은 잘못 선택된 것으로 알려져 있으며, 이는 2.x 시리즈에서는 결코 수정할 수 없었던 실수입니다. 예로는 “StringIO” 또는 “Cookie”와 같은 이름이 있습니다. Python 3000에서는 이러한 모듈에 덜 혼란스럽고 더 일관성 있는 이름을 부여할 수 있습니다.

물론 각 이름 변경 사항은 해당 모듈의 문서와, 필요하다면 1단계의 전체 문서에 명시해야 합니다. 또한 python3warn.py 스크립트는 이전 모듈 이름을 인식하고 그에 따라 사용자에게 알립니다.

이름 변경이 다른 Python 2.x 시리즈 릴리스에 맞춰 이루어진다면, 전환을 쉽게 하기 위해 2.x 브랜치에 새 이름을 도입하는 방안을 고려할 가치가 있습니다.

코드 정리

Python으로 작성된 대부분의 라이브러리 모듈은 실행 중인 시스템을 절대 변경하지 않는다는 정책에 따라 버그 수정 외에는 손대지 않았으므로, 그중 상당수에는 최신 언어 기능을 활용하지 못하는 코드가 포함되어 있을 수 있으며 더 간결하고 현대적인 Python 코드로 다시 작성할 수 있습니다.

PyChecker가 라이브러리 전체에서 문제없이 실행되어야 합니다. 신중하게 조정한 구성 파일을 사용하면 PyLint도 가능한 한 적은 경고를 출력해야 합니다.

이러한 변경으로 모듈의 인터페이스와 동작이 변경되지 않는 한 문서를 갱신할 필요는 없습니다.

테스트 및 문서 커버리지 향상

단위 테스트에 의한 코드 커버리지는 모듈마다 크게 다릅니다. 각 테스트 모음의 완전성을 점검하고, 남아 있는 기존 테스트는 PyUnit(또는 Python 3000과 함께 제공될 새롭고 멋진 테스트 프레임워크, 어쩌면 py.test?)으로 변환해야 합니다.

또한 공개적으로 볼 수 있는 각 함수에 의미 있는 독스트링이 있으며, 이상적으로는 여러 독테스트를 포함하는지 확인해야 합니다.

테스트 커버리지를 향상하기 위해 문서를 변경할 필요는 없습니다.

모듈 메타데이터 통일

작고 아마 그다지 중요하지 않은 단계입니다. 모듈에서 저자, 버전 및 이와 유사한 메타데이터를 제공하려는 다양한 시도가 있었습니다(예: “__version__” 전역 변수). 이를 표준화하여 라이브러리 전체에서 사용할 수 있습니다.

이 단계에서도 문서 변경은 필요하지 않습니다.

하위 호환성을 깨뜨리는 버그 수정

수년에 걸쳐 표준 라이브러리 모듈의 버그를 지적하는 많은 버그 보고서가 제출되었지만, 수정하면 Python 2.x 계열에서 허용할 수 없는 중대한 비호환성이 발생했을 것이므로 이후 “Won’t fix”로 종결되었습니다. Python 3000에서는 인터페이스 자체가 여전히 허용 가능하다면 수정 사항을 적용할 수 있습니다.

이러한 수정으로 인해 발생하는 각각의 사소한 동작 변경 사항을 문서에서 언급해야 하며, “Changed in Version 3.0” 단락을 사용할 수도 있습니다.

인터페이스 변경

마지막이자 가장 큰 영향을 미치는 변경은 모듈의 공개 인터페이스를 전면 개편하는 것입니다. 모듈의 인터페이스를 변경하려면 사전에 그 근거를 제시하거나 PEP를 작성해야 합니다.

변경 사항은 “New in Version 3.0”으로 완전히 문서화해야 하며, python3warn.py 스크립트에서도 이를 알고 있어야 합니다.

참고 자료

아직 없습니다.