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

Python 개선 제안 한국어 번역

PEP 566 – Python 소프트웨어 패키지 메타데이터 2.1

Author:
Dustin Ingram <di at python.org>
BDFL-Delegate:
Daniel Holth
Discussions-To:
Distutils-SIG list
Status:
Final
Type:
Standards Track
Topic:
Packaging
Created:
01-Dec-2017
Python-Version:
3.x
Post-History:

Replaces:
345
Resolution:
Distutils-SIG message

Table of Contents

번역·라이선스 안내

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

Important

This PEP is a historical document. The up-to-date, canonical spec, Core metadata specifications, is maintained on the PyPA specs page.

×

See the PyPA specification update process for how to propose changes.

초록

이 PEP는 Python 패키지의 핵심 메타데이터 사양 버전 1.2와 2.1 사이의 변경 사항을 설명합니다. 버전 1.2는 PEP 345에 명시되어 있습니다.

또한 필드 사양의 표준 출처를 필드 이름과 그 의미 및 사용법의 세부 사항을 포함하는 Core Metadata Specification 참조 문서로 변경합니다.

필드

지원되는 각 메타데이터 필드의 이름과 의미에 대한 표준 출처는 Core Metadata Specification 문서입니다.

“(Multiple use)”로 표시된 필드는 하나의 PKG-INFO 파일에서 여러 번 지정할 수 있습니다. 다른 필드는 PKG-INFO 파일에 한 번만 나타날 수 있습니다. “(optional)”로 표시된 필드는 유효한 PKG-INFO 파일에 반드시 나타날 필요가 없으며, 그 밖의 모든 필드는 반드시 존재해야 합니다.

버전 2.1의 새로운 내용

Description-Content-Type (optional)

도구가 설명을 지능적으로 렌더링할 수 있도록 배포판의 설명에 사용된 마크업 구문(있는 경우)을 나타내는 문자열입니다.

역사적으로 PyPI와 같은 도구는 패키지의 설명이 reStructuredText (reST) 형식이라고 가정하며, 설명이 유효한 reST가 아니면 일반 텍스트로 대체합니다.

이 필드가 도입됨으로써 PyPI는 추가적인 마크업 구문 유형을 지원할 수 있으며, 이러한 가정을 할 필요가 없어집니다.

이 필드의 전체 사양은 Core Metadata Specification에 정의되어 있습니다.

Provides-Extra (optional, multiple use)

선택적 기능의 이름을 포함하는 문자열입니다. 유효한 Python 식별자여야 합니다. 선택적 기능이 요청되었는지 여부에 따라 종속성을 조건부로 지정하는 데 사용할 수 있습니다.

이 필드가 도입됨으로써 패키지 설치 도구(예: pip)는 특정 패키지가 제공하는 extras를 확인할 수 있으며, 패키지 게시 도구(예: twine)는 extras를 사용하는 환경 마커의 문제를 검사할 수 있습니다.

이 필드의 전체 사양은 Core Metadata Specification에 정의되어 있습니다.

버전 2.1에서 변경됨

이름

이 필드의 형식 사양은 PEP 508에 정의된 배포판 이름 사양과 이제 동일합니다.

설명

Description 헤더 필드 외에도 배포판의 설명은 메시지 본문에 대신 제공될 수 있습니다(즉, 헤더 다음에 완전히 빈 줄이 이어진 후이며, 들여쓰기나 기타 특수 형식 지정은 필요하지 않습니다).

버전 지정자

버전 번호 지정 요구 사항과 버전 간 비교를 지정하는 의미 체계는 PEP 440에 정의되어 있습니다. 또한 PEP 440에 정의된 직접 참조도 버전 지정자를 대신하여 허용됩니다.

PEP PEP 508에 따라, 이제 Requires-Dist, Provides-Dist, Obsoletes-Dist 또는 Requires-External 필드의 버전 지정자를 괄호로 둘러싸지 않아도 되므로, 예를 들어 requests >= 2.8.1은 이제 유효한 값입니다. 권장 형식은 괄호를 사용하지 않는 것이지만, 메타데이터를 파싱하는 도구는 괄호로 감싼 버전 지정자도 처리할 수 있어야 합니다. 또한, 공개 색인 서버는 이 필드에서 엄격한 버전 일치 절이나 직접 참조를 금지할 수 있습니다(MAY).

버전 지정자의 사용법은 이를 제외하면 PEP 345와 동일합니다.

환경 마커

환경 마커는 실행 환경에 대한 조건을 추가하기 위해 세미콜론(“;”) 뒤에 필드 끝에 추가할 수 있는 마커입니다.

이러한 조건을 선언하는 데 사용되는 환경 마커 형식은 PEP 508의 환경 마커 절에 정의되어 있습니다.

환경 마커의 사용법은 이를 제외하면 PEP 345와 동일합니다.

JSON 호환 메타데이터

JSON과 같이 동일한 키의 중복을 허용하지 않는 데이터 구조에 메타데이터를 저장해야 할 수도 있습니다.

메타데이터 필드를 그러한 데이터 구조로 변환하는 표준 방법은 다음과 같습니다:

  1. 원래의 키-값 형식은 email.parser.HeaderParser로 읽어야 합니다.
  2. 변환된 모든 키는 소문자로 축소해야 합니다. 하이픈은 밑줄로 대체해야 하지만, 그 외의 모든 문자는 유지해야 합니다.
  3. “(Multiple-use”로 표시된 필드의 변환된 값은 해당 키에 대한 모든 원래 값을 담은 단일 리스트여야 합니다.
  4. Keywords 필드는 원래 값을 쉼표로 분리하여 리스트로 변환해야 합니다.
  5. 메시지 본문이 있는 경우, description 키의 값으로 설정해야 합니다.
  6. 결과는 문자열을 키로 하는 딕셔너리로 저장해야 합니다.

PEP 345와의 차이점 요약

  • Metadata-Version은 이제 2.1입니다.
  • 필드는 이제 Core Metadata Specification을 통해 지정됩니다.
  • Description-Content-TypeProvides-Extra 두 개의 새 필드가 추가되었습니다.
  • Name 필드에 허용되는 값은 이제 PEP 508에 따라 지정됩니다.
  • JSON 호환 데이터 구조로의 변환을 위한 정규 방법이 추가되었습니다.

참고 문헌

이 문서는 메타데이터 형식의 버전 2.1을 지정합니다. 버전 1.0은 PEP 241에서 지정됩니다. 버전 1.1은 PEP 314에서 지정됩니다. 버전 1.2는 PEP 345에서 지정됩니다. 버전 2.0은 공식적으로 승인되지는 않았지만 PEP 426에서 지정되었습니다.

Acknowledgements

Thanks to Alyssa Coghlan and Thomas Kluyver for contributing to this PEP.