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

Python 개선 제안 한국어 번역

PEP 715 – PyPI에서 bdist_egg 배포 업로드 비활성화

Author:
William Woodruff <william at yossarian.net>
Sponsor:
Donald Stufft <donald at stufft.io>
PEP-Delegate:
Donald Stufft <donald at stufft.io>
Discussions-To:
Discourse thread
Status:
Final
Type:
Standards Track
Topic:
Packaging
Created:
06-Jun-2023
Post-History:
09-Jun-2023
Resolution:
24-Jun-2023

Table of Contents

번역·라이선스 안내

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

초록

이 PEP는 PyPI에서 bdist_egg 배포 유형의 신규 업로드를 먼저 폐지 예정(deprecated)으로 지정한 다음 비활성화할 것을 권고합니다. 이와 함께, 이 PEP는 .egg 접미사를 가진 배포 파일 이름의 신규 업로드도 먼저 폐지 예정으로 지정한 다음 비활성화할 것을 권고합니다.

이 PEP 이후 PyPI는 sdist 및 bdist_wheel 유형의 신규 업로드만 허용합니다. 이 두 유형은 각각 .tar.gz/.zip 접미사와 .whl 접미사를 가진 파일에 해당합니다.

이 PEP는 이전에 업로드된 bdist_egg 배포나 .egg 접미사를 가진 파일을 제거하거나 그 밖의 방식으로 영향을 주는 것을 권고하지 않습니다.

근거

이전 작업

이 제안의 기반은 PEP 527에서 마련되었습니다. 해당 PEP는 거의 사용되지 않거나 전혀 사용되지 않는 몇몇 파일 확장자와 배포 유형의 업로드 지원을 폐지 예정으로 지정하고 최종적으로 제거할 것을 제안했습니다.

특히 PEP 527은 bdist_dumb, bdist_rpm, bdist_dmg, bdist_msi, bdist_wininst 배포 유형과 함께 배포 파일 이름의 .tar, .tar.bz2, .tar.xz, .tar.Z, .tgz, .tbz 파일 확장자를 제거할 것을 제안했습니다.

PEP 527은 2020년 4월 13일에 병합된 Warehouse의 PR #7529로 완전히 시행되었습니다.

bdist_egg 형식

bdist_egg 파일 유형은 egg 형식의 배포를 나타냅니다. egg 형식은 2004년 setuptools가 도입했으며, 기능 면에서 wheel 형식과 대체로 동등합니다. wheel 형식은 2012년 PEP 427에서 빌드된 배포를 위한 표준화된 형식으로 처음 도입되었습니다.

오랜 역사에도 불구하고 egg 형식은 PyPI에서 제한적으로만 채택되었습니다. 해당 이슈에서 나온 몇 가지 관찰 결과는 다음과 같습니다:

  • 2023년 5월 한 달 동안 bdist_egg 업로드는 PyPI 전체 배포 업로드의 0.2%를 차지했습니다;
  • pip은 2016년에 --egg 옵션을 폐지 예정으로 지정했습니다;
  • setuptools는 2019년부터 egg 지원을 폐지 예정으로 간주해 왔습니다;
  • build는 sdist 및 bdist_wheel 파일 유형만 지원합니다.

이상을 고려하여, 이 PEP는 PEP 527에서 제시된 것과 같은 근거로 bdist_egg 형식의 제거를 제안합니다. 그 근거는 다음과 같습니다:

  • egg 배포는 더 넓은 생태계에서 쓰임새가 제한적이므로, 돌아오는 것 없는 일방적인 유지 관리 부담이 됩니다;
  • 빌드된 배포 형식이 하나 더 있으면 최종 사용자에게 혼란을 주며, 사용자가 wheel 형식 대신 이 형식을 잘못 선택할 수 있습니다;

이 PEP는 추가로 표준화와 중복에 근거한 제거 인자를 제시합니다: egg 형식은 어떤 PEP나 다른 커뮤니티 표준으로도 표준화되지 않았으며, 표준화되어 잘 지원되는 대안(wheel)과 상당 부분 겹칩니다.

.egg 파일 확장자

.egg 파일 확장자는 bdist_egg 형식의 배포에만 사용됩니다. 따라서 PyPI가 bdist_egg 배포의 신규 업로드를 비활성화하는 상황에서는 이 확장자가 아무 쓸모가 없습니다.

제거 절차

이 PEP는 PyPI에서 기존 파일을 제거하는 것을 제안하지 않으며, 새 파일의 업로드를 허용하지 않는 것만 제안합니다.

PyPI는 한 달의 폐지 예정 기간을 둡니다. 폐지 기간이 시작되면 2023년 1월 1일 이후 egg 배포를 하나 이상 업로드한 프로젝트의 유지 관리자는 이메일을 한 번 받게 됩니다. 이 이메일은 egg 배포 업로드 지원이 곧 종료된다는 것을 알립니다.

폐지 기간 동안 사용자는 새 프로젝트와 기존 프로젝트에 egg 배포를 계속 업로드할 수 있습니다. 이 기간 동안 egg 배포를 업로드하면 해당 프로젝트의 모든 유지 관리자에게도 위와 비슷한 이메일이 발송됩니다. 이 이메일은 지원이 곧 종료된다는 것을 다시 알립니다.

폐지 기간이 끝나면 PyPI는 egg 배포 업로드를 더 이상 지원하지 않습니다.

선행 사례

위의 제거 절차는 PEP 527의 절차를 바탕으로 하되, 다음과 같이 변경되었습니다:

  • 폐지 기간 동안에는 이전에 egg를 업로드한 적이 있는 프로젝트뿐 아니라 모든 프로젝트가 egg를 계속 업로드할 수 있습니다.
  • 폐지 기간 동안 egg를 업로드하면 처음에 보내는 일회성 이메일과 별도로 유지 관리자에게 이메일이 추가로 발송됩니다.

하위 호환성

제한적인 영향

근거 절에서 언급했듯이 이 PEP는 대다수의 PyPI 사용자와 프로젝트에 아무런 영향을 미치지 않을 것으로 예상되며, 남아 있는 소수의 사용 사례에 미치는 영향을 최소화하기 위해 지난 1년 반 동안 상당한 커뮤니티 차원의 조율이 이루어졌습니다.

호스팅된 파일

이 PEP는 이미 PyPI에 업로드된 egg 배포판의 삭제를 제안하지 않습니다. 이전에 업로드된 모든 egg 배포판은 계속 다운로드할 수 있으므로, 기존 사용자는 앞으로도 이를 다운로드할 수 있습니다.

폐지 기간

이 PEP는 위에 설명한 제거 절차를 따릅니다. 이 절차에서는 이전에 PyPI에 egg 배포를 업로드한 프로젝트에 1개월의 폐지 기간을 둡니다.

폐지 기간이 끝나면 PyPI는 새 egg 배포 업로드를 더 이상 지원하지 않습니다.

보안 영향

이 PEP는 egg 배포판 업로드 지원 제거와 관련하여 긍정적이든 부정적이든 어떠한 보안 영향도 확인하지 못했습니다.

교육 방법

제거 절차의 하나로, PyPI는 2023년에 egg 배포를 업로드한 적이 있는 프로젝트의 모든 유지 관리자에게 이메일을 보냅니다.

또한 PyPI는 PyPI blog에 글을 올려 폐지 기간의 시작과 끝을 공개적으로 알립니다.