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
번역·라이선스 안내
이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판
초록
이 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 등)는 특정 패키지가 어떤 extra를 제공하는지 판단할 수 있고, 패키지 배포 도구(twine 등)는 extra를 사용하는 환경 마커에 문제가 있는지 검사할 수 있습니다.
이 필드의 전체 명세는 Core Metadata Specification에 정의되어 있습니다.
버전 2.1에서 변경된 사항
Name
이제 이 필드의 형식에 대한 명세는 PEP 508에 정의된 배포판 이름 명세와 동일합니다.
설명
Description 헤더 필드 대신 배포판의 설명을 메시지 본문에 제공할 수도 있습니다(즉, 헤더 뒤에 완전히 빈 줄을 하나 둔 다음에 제공하며, 들여쓰기나 그 밖의 특별한 서식은 필요하지 않습니다).
버전 지정자
버전 번호 매기기 요구 사항과 버전 간 비교를 지정하는 방식의 의미는 PEP 440에 정의되어 있습니다. PEP 440에 정의된 직접 참조도 버전 지정자 대신 사용할 수 있습니다.
PEP 508에 따라 Requires-Dist, Provides-Dist, Obsoletes-Dist, Requires-External 필드의 버전 지정자를 더 이상 괄호로 감쌀 필요가 없습니다. 따라서 예를 들어 requests >= 2.8.1도 이제 유효한 값입니다. 괄호 없는 형식을 권장하지만, 메타데이터를 파싱하는 도구는 괄호로 감싼 버전 지정자도 처리할 수 있어야 합니다. 또한 공개 색인 서버는 이 필드들에서 엄격한 버전 일치 절이나 직접 참조를 금지할 수 있습니다(MAY).
그 밖의 버전 지정자 사용법은 PEP 345와 같습니다.
환경 마커
환경 마커는 실행 환경에 관한 조건을 추가하기 위해 필드 끝의 세미콜론(“;”) 뒤에 덧붙일 수 있는 마커입니다.
이러한 조건을 선언하는 데 사용하는 환경 마커 형식은 PEP 508의 환경 마커 절에 정의되어 있습니다.
그 밖의 환경 마커 사용법은 PEP 345와 같습니다.
JSON 호환 메타데이터
JSON과 같이 여러 개의 반복된 키를 허용하지 않는 자료 구조에 메타데이터를 저장해야 할 수도 있습니다.
메타데이터 필드를 그러한 자료 구조로 변환하는 표준 방법은 다음과 같습니다:
- 원래의 키-값 형식은
email.parser.HeaderParser로 읽어야 합니다; - 변환된 키는 모두 소문자로 바꿔야 합니다. 하이픈은 밑줄로 바꿔야 하지만, 그 밖의 문자는 모두 그대로 유지해야 합니다;
- “(Multiple-use”)로 표시된 필드의 변환된 값은 해당 키의 원래 값을 모두 담은 하나의 리스트여야 합니다;
Keywords필드는 원래 값을 쉼표로 나누어 리스트로 변환해야 합니다;- 메시지 본문이 있다면 그 본문을
description키의 값으로 설정해야 합니다. - 결과는 문자열을 키로 하는 딕셔너리로 저장해야 합니다.
PEP 345와의 차이점 요약
- 이제 메타데이터 버전(Metadata-Version)은 2.1입니다.
- 이제 필드는 Core Metadata Specification을 통해 명시됩니다.
Description-Content-Type과Provides-Extra라는 두 가지 새 필드를 추가했습니다.Name필드에 허용되는 값은 이제 PEP 508에 따라 명시됩니다.- JSON 호환 자료 구조로 변환하는 표준 방법을 추가했습니다.
참고 문헌
이 문서는 메타데이터 형식의 버전 2.1을 명시합니다. 버전 1.0은 PEP 241에 명세되어 있습니다. 버전 1.1은 PEP 314에 명세되어 있습니다. 버전 1.2는 PEP 345에 명세되어 있습니다. 버전 2.0은 공식적으로 채택되지는 않았지만 PEP 426에 명시되었습니다.
Copyright
This document has been placed in the public domain.
Acknowledgements
Thanks to Alyssa Coghlan and Thomas Kluyver for contributing to this PEP.