PEP 314 – Python 소프트웨어 패키지를 위한 메타데이터 1.1
- Author:
- A.M. Kuchling, Richard Jones
- Discussions-To:
- Distutils-SIG list
- Status:
- Superseded
- Type:
- Standards Track
- Topic:
- Packaging
- Created:
- 12-Apr-2003
- Python-Version:
- 2.5
- Post-History:
- 29-Apr-2003
- Replaces:
- 241
- Superseded-By:
- 345
Table of Contents
번역·라이선스 안내
이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판
소개
이 PEP는 Python 패키지에 메타데이터를 추가하는 메커니즘을 설명합니다. 필드 이름과 그 의미 및 사용법에 대한 세부 사항을 포함합니다.
이 문서는 메타데이터 형식의 버전 1.1을 규정합니다. 버전 1.0은 PEP 241에 규정되어 있습니다.
패키지에 메타데이터 포함하기
Distutils sdist 명령은 인자에서 메타데이터 필드를 추출하여 생성된 zipfile이나 tarball 안의 파일에 기록합니다. 이 파일의 이름은 PKG-INFO이며, 소스 배포판의 최상위 디렉터리(README, INSTALL 및 기타 파일이 보통 위치하는 곳)에 놓입니다.
개발자는 자신의 PKG-INFO 파일을 직접 제공할 수 없습니다. sdist 명령은 기존 PKG-INFO 파일이 존재하는 것을 감지하면 적절한 오류 메시지와 함께 종료합니다. 이는 PKG-INFO 파일과 setup.py 파일이 서로 어긋남으로 인해 발생하는 혼란을 방지해야 합니다.
PKG-INFO 파일 형식은 rfc822.py 모듈로 파싱할 수 있는 단일 RFC 822 헤더 집합입니다. 다음 절에 나열된 필드 이름들이 헤더 이름으로 사용됩니다.
필드
이 절은 지원되는 각 메타데이터 필드의 이름과 의미를 규정합니다.
“(Multiple use)”로 표시된 필드는 하나의 PKG-INFO 파일 안에서 여러 번 지정될 수 있습니다. 그 외의 필드는 하나의 PKG-INFO 파일 안에서 한 번만 나타날 수 있습니다. “(optional)”로 표시된 필드는 유효한 PKG-INFO 파일에 반드시 나타나야 하는 것은 아니며, 그 외의 모든 필드는 반드시 있어야 합니다.
Metadata-Version
파일 형식의 버전이며, 현재는 “1.0”과 “1.1”만이 여기서 유효한 값입니다.
예제:
Metadata-Version: 1.1
Name
패키지의 이름입니다.
예제:
Name: BeagleVote
Version
패키지의 버전 번호를 담은 문자열입니다. 이 필드는 distutils.version 모듈에 있는 Version 클래스(StrictVersion 또는 LooseVersion) 중 하나로 파싱 가능해야 합니다.
예제:
Version: 1.0a2
Platform (multiple use)
“Operating System” Trove 분류자에 나열되어 있지 않은, 패키지가 지원하는 운영체제를 요약한 쉼표로 구분된 플랫폼 명세 목록입니다. 아래의 “Classifier”를 참고하십시오.
예시:
Platform: ObscureUnix, RareDOS
Supported-Platform (다중 사용)
PKG-INFO 파일을 포함하는 바이너리 배포판은 메타데이터의 Supported-Platform 필드를 사용하여 바이너리 패키지가 컴파일된 운영체제와 CPU를 지정합니다. Supported-Platform 필드의 의미론은 이 PEP에서 명시되지 않습니다.
예시:
Supported-Platform: RedHat 7.2
Supported-Platform: i386-win32-2791
Summary
패키지가 수행하는 작업에 대한 한 줄 요약입니다.
예시:
Summary: A module for collecting votes from beagles.
Description (선택)
여러 문단에 걸칠 수 있는 패키지에 대한 더 긴 설명입니다. 메타데이터를 다루는 소프트웨어는 이 필드에 대해 어떠한 최대 크기도 가정해서는 안 되지만, 사람들은 설명으로 사용 설명서 전체를 포함해서는 안 됩니다.
이 필드의 내용은 reStructuredText 마크업 [1]을 사용하여 작성될 수 있습니다. 메타데이터를 다루는 프로그램의 경우, 마크업 지원은 선택 사항입니다. 프로그램은 필드의 내용을 있는 그대로 표시할 수도 있습니다. 이는 작성자가 사용하는 마크업에 있어 보수적이어야 함을 의미합니다.
예시:
Description: This module collects votes from beagles
in order to determine their electoral wishes.
Do *not* try to use this module with basset hounds;
it makes them grumpy.
Keywords (선택)
더 큰 카탈로그에서 패키지 검색을 돕기 위해 사용될 추가 키워드 목록입니다.
예시:
Keywords: dog puppy voting election
Home-page (선택 사항)
패키지의 홈페이지 URL을 담고 있는 문자열입니다.
예시:
Home-page: http://www.example.com/~cschultz/bvote/
Download-URL
이 버전의 패키지를 다운로드할 수 있는 URL을 담고 있는 문자열입니다. (즉, URL은 “…/package-latest.tgz”와 같은 형태일 수 없으며, 대신 “../package-0.45.tgz”와 같은 형태여야 합니다.)
라이선스
라이선스가 “License” Trove 분류자 중에서 선택된 것이 아닌 경우, 패키지를 포괄하는 라이선스를 나타내는 텍스트입니다. 아래의 “Classifier”를 참조하십시오.
예:
License: This software may only be obtained by sending the
author a postcard, and then the user promises not
to redistribute it.
Classifier (다중 사용 가능)
각 항목은 패키지에 대한 단일 분류 값을 나타내는 문자열입니다. 분류자는 PEP 301에 설명되어 있습니다.
예:
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console (Text Based)
Requires (다중 사용 가능)
각 항목은 이 패키지가 필요로 하는 다른 모듈이나 패키지를 설명하는 문자열을 포함합니다.
요구 사항 문자열의 형식은 ‘import’ 문에 사용할 수 있는 모듈이나 패키지 이름과 동일하며, 뒤에 괄호로 묶인 버전 선언이 선택적으로 붙을 수 있습니다.
버전 선언은 쉼표로 구분된 조건 연산자와 버전 번호의 나열입니다. 조건 연산자는 “<”, “>”, “<=”, “>=”, “==”, “!=” 중 하나여야 합니다. 버전 번호는 distutils.version.StrictVersion 클래스가 받아들이는 형식이어야 합니다. 즉, 점으로 구분된 두세 개의 숫자 구성 요소로 이루어지며, 끝에 문자 ‘a’ 또는 ‘b’ 뒤에 숫자가 오는 형태의 “pre-release” 태그를 선택적으로 붙일 수 있습니다. 버전 번호의 예로는 “1.0”, “2.3a2”, “1.3.99” 등이 있습니다,
조건 연산자는 몇 개든 지정할 수 있으며, 예를 들어 “>1.0, !=1.3.4, <2.0”이라는 문자열은 유효한 버전 선언입니다.
다음은 모두 가능한 요구사항 문자열입니다: “rfc822”, “zlib (>=1.1.4)”, “zope”.
어떤 문자열을 사용해야 하는지에 대한 표준 목록은 존재하지 않으며, Python 커뮤니티가 자체적으로 표준을 정하도록 남겨져 있습니다.
예제:
Requires: re
Requires: sys
Requires: zlib
Requires: xml.parsers.expat (>1.0)
Requires: psycopg
Provides (다중 사용)
각 항목에는 이 패키지가 설치되면 함께 제공될 패키지나 모듈을 설명하는 문자열이 포함됩니다. 이 문자열은 Requirements 필드에서 사용되는 것과 일치해야 합니다. 버전 선언을 (비교 연산자 없이) 제공할 수 있으며, 지정하지 않으면 패키지의 버전 번호가 암묵적으로 적용됩니다.
예제:
Provides: xml
Provides: xml.utils
Provides: xml.utils.iso8601
Provides: xml.dom
Provides: xmltools (1.3)
Obsoletes (다중 사용)
각 항목에는 이 패키지가 구식으로 만드는 패키지나 모듈을 설명하는 문자열이 포함되며, 이는 두 패키지를 동시에 설치해서는 안 된다는 것을 의미합니다. 버전 선언을 제공할 수 있습니다.
이 필드가 가장 흔히 사용되는 경우는 패키지 이름이 바뀌는 경우입니다. 예를 들어 Gorgon 2.3이 Torqued Python 1.0에 흡수되는 경우입니다. Torqued Python을 설치하면 Gorgon 패키지는 제거되어야 합니다.
예제:
Obsoletes: Gorgon
PEP 241과의 차이점 요약
- Metadata-Version은 이제 1.1입니다.
- Classifiers 필드를 PEP 301에서 추가했습니다.
- 이제 라이선스 및 플랫폼 파일은 플랫폼이나 라이선스를 적절한 Classifier 값으로 처리할 수 없는 경우에만 사용해야 합니다.
- 추가된 필드: Download-URL, Requires, Provides, Obsoletes.
미해결 사항
없습니다.
감사의 말
없습니다.
참고 문헌
Copyright
This document has been placed in the public domain.