2003-04-12 16:16:20 -04:00
|
|
|
|
PEP: 314
|
|
|
|
|
Title: Metadata for Python Software Packages v1.1
|
2003-04-12 15:45:01 -04:00
|
|
|
|
Version: $Revision$
|
2003-04-29 13:02:46 -04:00
|
|
|
|
Last-Modified: $Date$
|
2005-02-02 21:30:53 -05:00
|
|
|
|
Author: A.M. Kuchling <amk@amk.ca>, Richard Jones
|
2003-04-29 13:02:46 -04:00
|
|
|
|
Status: Draft
|
2003-04-12 15:45:01 -04:00
|
|
|
|
Type: Standards Track
|
2003-04-29 13:02:46 -04:00
|
|
|
|
Content-type: text/plain
|
2003-04-12 16:16:20 -04:00
|
|
|
|
Created: 12-Apr-2003
|
2003-04-29 13:02:46 -04:00
|
|
|
|
Python-Version: 2.3
|
2003-04-29 13:37:08 -04:00
|
|
|
|
Post-History: 29-Apr-2003
|
2003-05-14 13:12:55 -04:00
|
|
|
|
Replaces: 241
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
|
|
|
|
|
|
This PEP describes a mechanism for adding metadata to Python
|
|
|
|
|
packages. It includes specifics of the field names, and their
|
|
|
|
|
semantics and usage.
|
|
|
|
|
|
2003-04-12 16:16:20 -04:00
|
|
|
|
This document specifies version 1.1 of the metadata format.
|
|
|
|
|
Version 1.0 is specified in PEP 241.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
2003-04-29 13:31:16 -04:00
|
|
|
|
|
2003-04-12 15:45:01 -04:00
|
|
|
|
Including Metadata in Packages
|
|
|
|
|
|
2003-04-29 13:31:16 -04:00
|
|
|
|
The Distutils 'sdist' command will extract the metadata fields
|
|
|
|
|
from the arguments and write them to a file in the generated
|
|
|
|
|
zipfile or tarball. This file will be named PKG-INFO and will be
|
|
|
|
|
placed in the top directory of the source distribution (where the
|
|
|
|
|
README, INSTALL, and other files usually go).
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Developers may not provide their own PKG-INFO file. The "sdist"
|
|
|
|
|
command will, if it detects an existing PKG-INFO file, terminate
|
|
|
|
|
with an appropriate error message. This should prevent confusion
|
|
|
|
|
caused by the PKG-INFO and setup.py files being out of sync.
|
|
|
|
|
|
|
|
|
|
The PKG-INFO file format is a single set of RFC-822 headers
|
|
|
|
|
parseable by the rfc822.py module. The field names listed in the
|
2003-05-14 13:12:55 -04:00
|
|
|
|
following section are used as the header names.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fields
|
|
|
|
|
|
|
|
|
|
This section specifies the names and semantics of each of the
|
|
|
|
|
supported metadata fields.
|
|
|
|
|
|
|
|
|
|
Fields marked with "(Multiple use)" may be specified multiple
|
|
|
|
|
times in a single PKG-INFO file. Other fields may only occur
|
|
|
|
|
once in a PKG-INFO file. Fields marked with "(optional)" are
|
2003-05-14 13:12:55 -04:00
|
|
|
|
not required to appear in a valid PKG-INFO file; all other
|
2003-04-12 15:45:01 -04:00
|
|
|
|
fields must be present.
|
|
|
|
|
|
|
|
|
|
Metadata-Version
|
|
|
|
|
|
2003-04-12 16:16:20 -04:00
|
|
|
|
Version of the file format; currently "1.0" and "1.1" are the
|
|
|
|
|
only legal values here.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
2003-04-12 16:16:20 -04:00
|
|
|
|
Metadata-Version: 1.1
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Name
|
|
|
|
|
|
|
|
|
|
The name of the package.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Name: BeagleVote
|
|
|
|
|
|
|
|
|
|
Version
|
|
|
|
|
|
|
|
|
|
A string containing the package's version number. This
|
|
|
|
|
field should be parseable by one of the Version classes
|
|
|
|
|
(StrictVersion or LooseVersion) in the distutils.version
|
|
|
|
|
module.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Version: 1.0a2
|
|
|
|
|
|
|
|
|
|
Platform (multiple use)
|
|
|
|
|
|
|
|
|
|
A comma-separated list of platform specifications, summarizing
|
2005-02-02 21:27:01 -05:00
|
|
|
|
the operating systems supported by the package which are not
|
|
|
|
|
listed in the "Operating System" Trove classifiers. See
|
|
|
|
|
"Classifier" below.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
2005-02-02 21:27:01 -05:00
|
|
|
|
Platform: ObscureUnix, RareDOS
|
2003-05-07 10:50:49 -04:00
|
|
|
|
|
2003-05-14 13:12:55 -04:00
|
|
|
|
Supported-Platform (multiple use)
|
2003-05-07 12:34:52 -04:00
|
|
|
|
|
|
|
|
|
Binary distributions containing a PKG-INFO file will use the
|
|
|
|
|
Supported-Platform field in their metadata to specify the OS and
|
|
|
|
|
CPU for which the binary package was compiled. The semantics of
|
|
|
|
|
the Supported-Platform field are not specified in this PEP.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Supported-Platform: RedHat 7.2
|
|
|
|
|
Supported-Platform: i386-win32-2791
|
|
|
|
|
|
2003-04-12 15:45:01 -04:00
|
|
|
|
Summary
|
|
|
|
|
|
|
|
|
|
A one-line summary of what the package does.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Summary: A module for collecting votes from beagles.
|
|
|
|
|
|
|
|
|
|
Description (optional)
|
|
|
|
|
|
|
|
|
|
A longer description of the package that can run to several
|
2003-05-07 12:53:28 -04:00
|
|
|
|
paragraphs. Software that deals with metadata should not assume
|
|
|
|
|
any maximum size for this field, though people shouldn't include
|
|
|
|
|
their instruction manual as the description.
|
|
|
|
|
|
|
|
|
|
The contents of this field can be written using reStructuredText
|
|
|
|
|
markup [1]. For programs that work with the metadata,
|
|
|
|
|
supporting markup is optional; programs can also display the
|
|
|
|
|
contents of the field as-is. This means that authors should be
|
|
|
|
|
conservative in the markup they use.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Description: This module collects votes from beagles
|
|
|
|
|
in order to determine their electoral wishes.
|
2003-05-07 12:53:28 -04:00
|
|
|
|
Do *not* try to use this module with basset hounds;
|
2003-04-12 15:45:01 -04:00
|
|
|
|
it makes them grumpy.
|
|
|
|
|
|
|
|
|
|
Keywords (optional)
|
|
|
|
|
|
|
|
|
|
A list of additional keywords to be used to assist searching
|
|
|
|
|
for the package in a larger catalog.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Keywords: dog puppy voting election
|
|
|
|
|
|
|
|
|
|
Home-page (optional)
|
|
|
|
|
|
|
|
|
|
A string containing the URL for the package's home page.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Home-page: http://www.example.com/~cschultz/bvote/
|
|
|
|
|
|
2003-05-07 10:50:49 -04:00
|
|
|
|
Download-URL
|
|
|
|
|
|
|
|
|
|
A string containing the URL from which this version of the package
|
|
|
|
|
can be downloaded. (This means that the URL can't be something like
|
|
|
|
|
".../package-latest.tgz", but instead must be "../package-0.45.tgz".)
|
|
|
|
|
|
2003-04-12 15:45:01 -04:00
|
|
|
|
Author (optional)
|
|
|
|
|
|
2003-05-07 10:50:49 -04:00
|
|
|
|
A string containing the author's name at a minimum; additional
|
|
|
|
|
contact information may be provided.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
2003-05-07 10:50:49 -04:00
|
|
|
|
Author: C. Schultz, Universal Features Syndicate,
|
|
|
|
|
Los Angeles, CA <cschultz@peanuts.example.com>
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Author-email
|
|
|
|
|
|
|
|
|
|
A string containing the author's e-mail address. It can contain
|
|
|
|
|
a name and e-mail address in the legal forms for a RFC-822
|
|
|
|
|
'From:' header. It's not optional because cataloging systems
|
|
|
|
|
can use the e-mail portion of this field as a unique key
|
|
|
|
|
representing the author. A catalog might provide authors the
|
|
|
|
|
ability to store their GPG key, personal home page, and other
|
|
|
|
|
additional metadata *about the author*, and optionally the
|
|
|
|
|
ability to associate several e-mail addresses with the same
|
|
|
|
|
person. Author-related metadata fields are not covered by this
|
|
|
|
|
PEP.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Author-email: "C. Schultz" <cschultz@example.com>
|
|
|
|
|
|
|
|
|
|
License
|
|
|
|
|
|
2005-02-02 21:27:01 -05:00
|
|
|
|
Text indicating the license covering the package where the license
|
|
|
|
|
is not a selection from the "License" Trove classifiers. See
|
|
|
|
|
"Classifier" below.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
2005-02-02 21:27:01 -05:00
|
|
|
|
License: This software may only be obtained by sending the
|
|
|
|
|
author a postcard, and then the user promises not
|
|
|
|
|
to redistribute it.
|
2003-04-29 13:31:16 -04:00
|
|
|
|
|
|
|
|
|
Classifier (multiple use)
|
|
|
|
|
|
|
|
|
|
Each entry is a string giving a single classification value
|
2003-05-07 12:53:28 -04:00
|
|
|
|
for the package. Classifiers are described in PEP 301 [2].
|
2003-04-29 13:31:16 -04:00
|
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
|
|
Classifier: Development Status :: 4 - Beta
|
|
|
|
|
Classifier: Environment :: Console (Text Based)
|
|
|
|
|
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
2003-04-12 16:16:20 -04:00
|
|
|
|
Requires (multiple use)
|
|
|
|
|
|
2005-02-02 21:27:01 -05:00
|
|
|
|
Each entry contains a string describing some other module or
|
|
|
|
|
package required by this package.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
2005-02-03 07:30:44 -05:00
|
|
|
|
The format of a requirement string is identical to that of a
|
|
|
|
|
module or package name usable with the 'import' statement,
|
|
|
|
|
optionally followed by a version declaration within parentheses.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
2003-04-12 16:16:20 -04:00
|
|
|
|
A version declaration is a series of conditional operators and
|
|
|
|
|
version numbers, separated by commas. Conditional operators
|
2003-04-29 13:02:46 -04:00
|
|
|
|
must be one of "<", ">", "<=", ">=", "==", and "!=". Version
|
2003-04-12 16:16:20 -04:00
|
|
|
|
numbers must be in the format accepted by the
|
|
|
|
|
distutils.version.StrictVersion class: two or three
|
|
|
|
|
dot-separated numeric components, with an optional "pre-release"
|
|
|
|
|
tag on the end consisting of the letter 'a' or 'b' followed by a
|
|
|
|
|
number. Example version numbers are "1.0", "2.3a2", "1.3.99",
|
|
|
|
|
|
|
|
|
|
Any number of conditional operators can be specified, e.g.
|
2003-04-29 13:02:46 -04:00
|
|
|
|
the string ">1.0, !=1.3.4, <2.0" is a legal version declaration.
|
2003-04-12 16:16:20 -04:00
|
|
|
|
|
|
|
|
|
All of the following are possible requirement strings: "rfc822",
|
2005-02-02 21:27:01 -05:00
|
|
|
|
"zlib (>=1.1.4)", "zope".
|
2003-04-12 16:16:20 -04:00
|
|
|
|
|
|
|
|
|
There's no canonical list of what strings should be used; the
|
|
|
|
|
Python community is left to choose its own standards.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Requires: re
|
|
|
|
|
Requires: sys
|
|
|
|
|
Requires: zlib
|
|
|
|
|
Requires: pyexpat (>1.0)
|
2005-02-02 21:27:01 -05:00
|
|
|
|
Requires: psycopg
|
2003-04-12 16:16:20 -04:00
|
|
|
|
|
|
|
|
|
Provides (multiple use)
|
|
|
|
|
|
2005-02-02 21:27:01 -05:00
|
|
|
|
Each entry contains a string describing a package or
|
2003-04-12 16:16:20 -04:00
|
|
|
|
module that will be provided by this package once it is
|
|
|
|
|
installed. These strings should match the ones used in
|
|
|
|
|
Requirements fields. Version declarations cannot be supplied;
|
|
|
|
|
instead the package's version number will be used.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Provides: xml
|
|
|
|
|
Provides: xml.utils
|
|
|
|
|
Provides: xml.utils.iso8601
|
|
|
|
|
Provides: xml.dom
|
|
|
|
|
|
2003-04-12 17:16:50 -04:00
|
|
|
|
Obsoletes (multiple use)
|
|
|
|
|
|
2005-02-02 21:27:01 -05:00
|
|
|
|
Each entry contains a string describing a package or module
|
2003-04-12 17:16:50 -04:00
|
|
|
|
that this package renders obsolete, meaning that the two packages
|
|
|
|
|
should not be installed at the same time. Version declarations
|
2003-04-29 13:17:04 -04:00
|
|
|
|
can be supplied.
|
2003-04-12 17:16:50 -04:00
|
|
|
|
|
|
|
|
|
The most common use of this field will be in case a package name
|
|
|
|
|
changes, e.g. Gorgon 2.3 gets subsumed into Torqued Python 1.0.
|
|
|
|
|
When you install Torqued Python, the Gorgon package should be
|
|
|
|
|
removed.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
Obsoletes: Gorgon
|
|
|
|
|
|
|
|
|
|
|
2003-04-29 13:31:16 -04:00
|
|
|
|
Summary of Differences From PEP 241
|
|
|
|
|
|
|
|
|
|
* Metadata-Version is now 1.1.
|
|
|
|
|
|
|
|
|
|
* Added the Classifiers field from PEP 301.
|
|
|
|
|
|
2005-02-02 21:30:53 -05:00
|
|
|
|
* The License and Platform files should now only be used if the
|
|
|
|
|
platform or license can't be handled by an appropriate Classifier
|
|
|
|
|
value.
|
|
|
|
|
|
|
|
|
|
* Added fields: Download-URL, Requires, Provides, Obsoletes.
|
2003-04-29 13:31:16 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Open issues
|
|
|
|
|
|
2005-02-02 21:27:01 -05:00
|
|
|
|
None.
|
2003-04-29 13:31:16 -04:00
|
|
|
|
|
|
|
|
|
|
2003-04-12 16:16:20 -04:00
|
|
|
|
Acknowledgements
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
2005-02-02 21:30:53 -05:00
|
|
|
|
None.
|
2003-04-12 15:45:01 -04:00
|
|
|
|
|
2003-04-12 17:16:50 -04:00
|
|
|
|
|
2003-04-29 13:31:16 -04:00
|
|
|
|
References
|
|
|
|
|
|
2003-05-07 17:35:05 -04:00
|
|
|
|
[1] reStructuredText
|
2003-05-07 12:53:28 -04:00
|
|
|
|
http://docutils.sourceforge.net/
|
|
|
|
|
|
|
|
|
|
[2] PEP 301
|
2003-04-29 13:31:16 -04:00
|
|
|
|
http://www.python.org/peps/pep-0301.html
|
|
|
|
|
|
|
|
|
|
|
2003-04-12 15:45:01 -04:00
|
|
|
|
Copyright
|
|
|
|
|
|
|
|
|
|
This document has been placed in the public domain.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
|
|
mode: indented-text
|
|
|
|
|
indent-tabs-mode: nil
|
|
|
|
|
End:
|