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 3000에 대비하는 절차를 설명합니다. 정비 작업에는 여러 단계가 있을 수 있으며, 각 단계는 아래의 각 절에서 설명합니다. 물론 모든 모듈에 대해 모든 단계를 수행해야 하는 것은 아닙니다.

낡은 모듈 제거

2.x 버전에서 폐지 예정으로 표시된 모든 모듈은 Python 3000에서 제거해야 합니다. 오늘날 낡은 것으로 여겨지지만 너무 널리 쓰여서 폐지 예정으로 표시하거나 제거할 수 없는 모듈에도 똑같이 적용됩니다. Python 3000은 이러한 모듈을 없앨 절호의 기회입니다.

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

모듈 이름 변경

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

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

이름 변경이 Python 2.x 시리즈의 다음 릴리스에 맞춰 이루어진다면, 전환을 쉽게 하기 위해 2.x 브랜치에 새 이름을 도입하는 것을 고려해 볼 만합니다.

코드 정리

Python으로 작성된 라이브러리 모듈 대부분은 잘 돌아가는 시스템은 절대 건드리지 않는다는 방침에 따라 버그 수정 외에는 손대지 않았기 때문에, 그중 상당수는 최신 언어 기능을 반영하지 못한 코드를 담고 있을 수 있으며, 이러한 코드는 더 간결하고 현대적인 Python으로 다시 작성할 수 있습니다.

PyChecker를 라이브러리 전체에 실행했을 때 아무 경고도 나오지 않아야 합니다. 신중하게 조정한 설정 파일을 사용하여, PyLint도 가능한 한 적은 경고를 내도록 해야 합니다.

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

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

단위 테스트의 코드 커버리지는 모듈마다 크게 다릅니다. 각 테스트 스위트가 빠짐없이 갖춰져 있는지 점검해야 하며, 남아 있는 고전적인 테스트는 PyUnit(또는 Python 3000과 함께 제공될 새롭고 멋진 테스트 프레임워크, 어쩌면 py.test?)으로 변환해야 합니다.

또한 공개된 각 함수에 의미 있는 독스트링이 있는지, 이상적으로는 그 독스트링에 여러 개의 doctest가 들어 있는지도 확인해야 합니다.

테스트 커버리지를 높이는 데에는 문서를 변경할 필요가 없습니다.

모듈 메타데이터 통일

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

이 단계 역시 문서 변경이 필요하지 않습니다.

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

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

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

인터페이스 변경

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

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

참고 문헌

아직 없습니다.