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

Python 개선 제안 한국어 번역

PEP 411 – Python 표준 라이브러리의 잠정 패키지

Author:
Alyssa Coghlan <ncoghlan at gmail.com>, Eli Bendersky <eliben at gmail.com>
Status:
Superseded
Type:
Informational
Created:
10-Feb-2012
Python-Version:
3.3
Post-History:
10-Feb-2012, 24-Mar-2012

Table of Contents

번역·라이선스 안내

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

Note

이 PEP는 대체됨으로 표시되었습니다. 이 PEP가 작성된 지 10년이 지난 후, 실제 경험을 통해 표준 라이브러리 관리에서 이 기능이 거의 사용되지 않는다는 사실이 밝혀졌습니다. 또한 사람들이 잠정 모듈에 지나치게 의존하는 것을 막는 데에도 도움이 되지 않았으므로, 변경으로 인해 커뮤니티에 여전히 상당한 문제가 발생할 수 있습니다.

초록

새 패키지를 Python 표준 라이브러리에 포함하는 과정은 패키지가 공식적으로 Python의 일부가 됨으로써 발생하는 API 고정과 하위 호환성 약속으로 인해 어려움을 겪습니다. 이 PEP는 단일 기능 릴리스 기간 동안 표준 라이브러리 패키지를 “잠정”으로 표시하는 방법론을 설명합니다. 잠정 패키지는 “안정” 상태로 “승격”되기 전에 API가 수정될 수 있습니다. 한편으로 이 상태는 패키지가 공식적으로 Python 배포판의 일부가 됨으로써 얻는 이점을 제공합니다. 다른 한편으로 핵심 개발 팀은 다음 릴리스에서 변경될 수 있는 패키지 API의 안정성에 대해 어떠한 약속도 하지 않는다고 명시합니다. 가능성이 낮은 결과로 간주되기는 하지만, API 또는 유지 관리에 관한 우려가 타당한 것으로 입증되면 이러한 패키지는 사용 중단 유예 기간 없이 표준 라이브러리에서 제거될 수도 있습니다.

제안 - 문서화된 잠정 상태

Python 핵심 개발 팀이 새 패키지를 표준 라이브러리에 포함해야 하지만 해당 패키지의 API가 최적인지 완전히 확신하지 못할 때마다, 해당 패키지를 포함하고 “잠정”으로 표시할 수 있습니다.

다음 기능 릴리스에서 패키지는 표준 라이브러리의 일반적인 “안정” 상태로 “승격”되거나, 잠정 상태로 남거나, 거부되어 Python 소스 트리에서 완전히 제거될 수 있습니다. 패키지가 잠정 상태를 거친 후 안정 상태로 승격되면, 축적된 피드백에 따라 API가 변경될 수 있습니다. 핵심 개발 팀은 잠정 패키지의 API 안정성과 하위 호환성에 대해 어떠한 보장도 하지 않는다고 명시합니다.

패키지를 잠정으로 표시하기

패키지는 문서 페이지와 독스트링에 공지를 추가하여 잠정으로 표시합니다. 다음 단락이 문서 페이지 상단에 주석으로 추가됩니다.

<X> 패키지는 “잠정적 기반”으로 표준 라이브러리에 포함되었습니다. 핵심 개발자가 필요하다고 판단하면 하위 호환성이 깨지는 변경(패키지 제거를 포함하여)이 발생할 수 있습니다.

이후 “잠정적 기반”이라는 문구는 다음과 같이 정의된 용어집 항목 “잠정 패키지”로 연결됩니다.

잠정 패키지는 표준 라이브러리의 하위 호환성 보장에서 의도적으로 제외된 패키지입니다. 이러한 패키지에 큰 변경이 예상되지는 않지만, 잠정으로 표시된 동안에는 핵심 개발자가 필요하다고 판단할 경우 하위 호환성이 깨지는 변경(패키지 제거를 포함하여)이 발생할 수 있습니다. 이러한 변경은 이유 없이 이루어지지 않으며 – 패키지가 포함되기 전에 발견하지 못했던 심각한 결함이 밝혀진 경우에만 발생합니다.

이 과정은 문제가 있는 설계 오류를 장기간 고착시키지 않으면서 표준 라이브러리가 시간에 따라 계속 발전할 수 있도록 합니다. 자세한 내용은 PEP 411을 참조하십시오.

다음 내용이 패키지 독스트링의 시작 부분에 추가됩니다.

이 패키지의 API는 현재 잠정적입니다. 자세한 내용은 문서를 참조하십시오.

패키지를 잠정 상태에서 안정 상태로 옮기는 것은 문서 페이지와 독스트링에서 이러한 주석을 제거하는 것만을 의미합니다.

어떤 패키지가 잠정 상태를 거쳐야 하는가

Python 표준 라이브러리에 추가하도록 제안된 대부분의 패키지는 잠정 상태로 기능 릴리스를 거칠 것으로 예상합니다. 그러나 미리 정의된 API를 사용하는 패키지(예를 들어 기존 bz2 패키지의 API를 대체로 따르는 lzma)나 Python 개발 커뮤니티에서 폭넓게 받아들여진 API를 가진 패키지와 같은 일부 예외가 있을 수 있습니다.

어떤 경우든 표준 라이브러리에 추가하도록 제안된 패키지는 잠정 상태를 거치든 직접 추가되든 PEP 2에서 정한 수용 조건을 충족해야 합니다.

“정식 전환” 기준

원칙적으로 대부분의 잠정 패키지는 결국 안정된 표준 라이브러리로 정식 전환되어야 합니다. 정식 전환되지 않는 몇 가지 이유는 다음과 같습니다.

  • 패키지가 불안정하거나 취약한 것으로 판명되고, 이를 유지 관리할 개발자 지원이 충분하지 않을 수 있습니다.
  • 미리 보기 릴리스 중에 훨씬 더 나은 대체 패키지가 발견될 수 있습니다.

기본적으로 결정은 사례별로 핵심 개발자들이 내립니다. 여기서 강조할 점은 어떤 릴리스에서 패키지가 표준 라이브러리에 “잠정적으로” 포함되었다고 해서 다음 릴리스에서도 Python의 일부로 계속 남는다는 보장은 없다는 것입니다. 동시에 잠정 패키지를 변경하기 위한 기준은 상당히 높습니다. 대부분의 잠정 패키지 API 대부분은 정식 전환 시에도 변경되지 않을 것으로 예상합니다. 철회는 드물 것으로 예상합니다.

근거

핵심 개발 팀을 위한 이점

현재 핵심 개발자들은 표준 라이브러리에 새로운 인터페이스를 추가하는 것을 매우 꺼립니다. 릴리스에 게시되는 즉시 하위 호환성 문제로 인해 API 설계상의 실수가 고착되기 때문입니다.

모든 주요 API 추가를 일종의 잠정 메커니즘을 통해 전체 릴리스 동안 진행하도록 하면, 표준 하위 호환성 보장으로 API를 고정하기 전에 커뮤니티 피드백을 받을 수 있는 한 번의 전체 릴리스 주기를 확보할 수 있습니다.

또한 패키지 관리자에게 잠정 패키지를 선택 사항으로 간주해서는 안 된다는 점을 분명히 하는 한, 잠정 패키지를 표준 라이브러리의 나머지 부분과 조기에 통합하기 시작할 수 있습니다. 잠정 API와 표준 라이브러리의 나머지 부분 사이의 유일한 차이는 잠정 API가 일반적인 하위 호환성 보장에서 명시적으로 면제된다는 점입니다.

최종 사용자를 위한 이점

미래의 최종 사용자에게 가장 큰 이점은 더 나은 “즉시 사용 가능한” 경험에 있습니다. “아, 작업 X를 위한 표준 라이브러리 도구는 형편없으니 대신 이 서드파티 라이브러리를 다운로드하십시오”라는 말을 듣는 대신, 우수한 도구를 import 한 번만으로 사용할 수 있을 가능성이 커집니다.

개발자가 업스트림 의존성에 대해 실사를 수행해야 하는 환경(PyPI에 있는 자료의 상당 부분에서 비용 효율성이 심각하게 저하되거나 심지어 사용 자체가 배제되는 환경)에서는, 잠정 상태의 모든 패키지가 최소한 다음 관점에서 python-dev의 명확한 보호 아래 있도록 보장하는 것이 핵심적인 이점입니다.

  • 라이선스: PSF가 Contributor Licensing Agreement에 따라 재배포합니다.
  • 문서화: 패키지의 문서는 표준 Python 문서화 도구를 통해 게시되고 구성됩니다(즉, ReST 소스를 사용하고 Sphinx로 출력을 생성하여 http://docs.python.org에 게시합니다).
  • 테스트: 패키지 테스트 스위트는 python.org 빌드봇 집합에서 실행되며, 결과는 http://www.python.org/dev/buildbot을 통해 게시됩니다.
  • 이슈 관리: 버그 및 기능 요청은 http://bugs.python.org에서 처리됩니다.
  • 소스 제어: 소프트웨어의 마스터 저장소는 http://hg.python.org에 게시됩니다.

표준 라이브러리에 잠정적으로 포함할 후보

Python 3.3에는 현재 명확한 후보가 여러 개 있습니다.

기타 향후 가능한 사용 사례는 다음과 같습니다:

  • 개선된 HTTP 모듈(예: requests)
  • HTML 5 구문 분석 지원(예: html5lib)
  • URL/URI/IRI 구문 분석 개선
  • 표준 이미지 API (PEP 368)
  • 임포트 상태의 캡슐화 개선 (PEP 406)
  • 표준 이벤트 루프 API (PEP 3153)
  • Python 3용 WSGI의 바이너리 버전(예: PEP 444)
  • 제네릭 함수 지원(예: simplegeneric)

거부된 대안 및 변형

다음을 참조하십시오: PEP 408.

참고 문헌