2001-03-13 11:09:08 -05:00
|
|
|
|
PEP: 241
|
2001-03-13 10:48:04 -05:00
|
|
|
|
Title: Metadata for Python Software Packages
|
|
|
|
|
Version: $Revision$
|
|
|
|
|
Author: A.M. Kuchling <amk1@bigfoot.com>
|
|
|
|
|
Type: Standards Track
|
|
|
|
|
Created: 12-Mar-2001
|
|
|
|
|
Status: Draft
|
|
|
|
|
Post-History:
|
|
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
This PEP describes a mechanism for adding metadata to Python
|
|
|
|
|
packages. It includes specifics of the field names, and their
|
|
|
|
|
semantics and usage.
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Including Metadata in Packages
|
|
|
|
|
|
|
|
|
|
The Distutils 'sdist' command will be modified to extract the
|
|
|
|
|
metadata fields from the arguments and write them to a file in the
|
2001-03-15 13:16:43 -05:00
|
|
|
|
generated zipfile or tarball. This file will be named PKG-INFO
|
2001-03-13 10:48:04 -05:00
|
|
|
|
and will be placed in the top directory of the source
|
|
|
|
|
distribution (where the README, INSTALL, and other files usually
|
|
|
|
|
go).
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Developers may not provide their own PKG-INFO file. The "sdist"
|
|
|
|
|
command will, if it detects an existing PKG-INFO file, terminate
|
2001-03-15 13:16:43 -05:00
|
|
|
|
with an appropriate error message. This should prevent confusion
|
2001-03-17 11:30:28 -05:00
|
|
|
|
caused by the PKG-INFO and setup.py files being out of sync.
|
2001-03-15 13:16:43 -05:00
|
|
|
|
|
|
|
|
|
The PKG-INFO file format is a single set of RFC-822 headers
|
2001-03-13 10:48:04 -05:00
|
|
|
|
parseable by the rfc822.py module. The field names listed in the
|
2001-03-15 13:16:43 -05:00
|
|
|
|
following section are used as the header names. There's no
|
|
|
|
|
extension mechanism in this simple format; the Catalog and Distutils
|
|
|
|
|
SIGs will aim at getting a more flexible format ready for Python 2.2.
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fields
|
|
|
|
|
|
|
|
|
|
This section specifies the names and semantics of each of the
|
|
|
|
|
supported metadata fields.
|
2001-03-17 11:30:28 -05:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
not required to appear in a valid PKG-INFO file, all other
|
|
|
|
|
fields must be present.
|
2001-03-15 13:16:43 -05:00
|
|
|
|
|
|
|
|
|
Metadata-Version
|
|
|
|
|
|
|
|
|
|
Version of the file format; currently "1.0" is the only
|
2001-03-17 11:30:28 -05:00
|
|
|
|
legal value here.
|
2001-03-15 13:16:43 -05:00
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: 'Metadata-Version: 1.0'
|
2001-03-15 13:16:43 -05:00
|
|
|
|
|
2001-03-13 10:48:04 -05:00
|
|
|
|
Name
|
|
|
|
|
|
2001-03-15 13:16:43 -05:00
|
|
|
|
The name of the package.
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: 'Name: BeagleVote'
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: 'Version: 1.0a2'
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Platform (multiple use)
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
A (XXX whitespace? comma?)-separated list of platform
|
|
|
|
|
specifications. Platform specifications are limited to the
|
|
|
|
|
following list:
|
|
|
|
|
|
|
|
|
|
XXX copy list from PPD? SourceForge?
|
|
|
|
|
|
|
|
|
|
Example: 'XXX'
|
|
|
|
|
|
2001-03-15 13:16:43 -05:00
|
|
|
|
Summary
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
A one-line summary of what the package does.
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: "Summary: A module for collecting votes from beagles."
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
2001-03-15 13:16:43 -05:00
|
|
|
|
Description (optional)
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
A longer description of the package that can run to several
|
|
|
|
|
paragraphs. (Software that deals with metadata should not
|
|
|
|
|
assume any maximum size for this field, though one hopes that
|
|
|
|
|
people won't include their instruction manual as the
|
|
|
|
|
long-description.)
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: "Description: This module collects votes from beagles\n
|
|
|
|
|
in order to determine their electoral wishes.\n
|
|
|
|
|
Do NOT try to use this module with basset hounds;
|
|
|
|
|
it makes them grumpy."
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Keywords (optional)
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
A list of additional keywords to be used to assist searching
|
|
|
|
|
for this package in a larger catalog.
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: 'Keywords: dog puppy voting election'
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
Home-page (optional)
|
|
|
|
|
|
|
|
|
|
A string containing the URL for the package's home page.
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: 'Home-page: http://www.example.com/~cschultz/bvote/'
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
Author (optional)
|
|
|
|
|
|
|
|
|
|
A string containing at a minimum the author's name. Contact
|
|
|
|
|
information can also be added, separating each line with
|
|
|
|
|
newlines.
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: 'Author: C. Schultz
|
|
|
|
|
Universal Features Syndicate
|
|
|
|
|
Los Angeles, CA'
|
2001-03-13 10:48:04 -05: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
|
2001-03-15 13:16:43 -05:00
|
|
|
|
'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.
|
|
|
|
|
|
2001-03-17 11:30:28 -05:00
|
|
|
|
Example: 'Author-email: "C. Schultz" <cschultz@example.com>'
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
License
|
|
|
|
|
|
|
|
|
|
A string selected from a short list of choices, specifying the
|
|
|
|
|
license covering the package. Some licenses result in the
|
|
|
|
|
software being freely redistributable, so packagers and
|
|
|
|
|
resellers can automatically know that they're free to
|
|
|
|
|
redistribute the software. Other licenses will require
|
|
|
|
|
a careful reading by a human to determine the software can be
|
|
|
|
|
repackaged and resold.
|
|
|
|
|
|
|
|
|
|
The choices are:
|
|
|
|
|
|
2001-03-17 11:01:48 -05:00
|
|
|
|
Artistic, BSD, DFSG, GNU PL, Lesser GNU PL, "MIT/X11",
|
|
|
|
|
Mozilla PL, "public domain", Python, Qt PL, Zope PL, unknown,
|
|
|
|
|
nocommercial, nosell, nosource, shareware, other
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
2001-03-17 11:01:48 -05:00
|
|
|
|
The definitions are:
|
2001-03-17 11:04:42 -05:00
|
|
|
|
Python Python 1.6 or higher license. Version 1.5.2 and
|
|
|
|
|
earlier are under the MIT/X11 license.
|
2001-03-17 11:01:48 -05:00
|
|
|
|
public domain Software is public domain, not copyrighted.
|
|
|
|
|
unknown Status is not known
|
|
|
|
|
nocommercial Free private use but commercial use not permitted
|
|
|
|
|
nosell Free use but distribution for profit by arrangement
|
|
|
|
|
nosource Freely distributable but no source code
|
|
|
|
|
shareware Payment is requested if software is used
|
|
|
|
|
other General category for other non-DFSG licenses
|
|
|
|
|
|
|
|
|
|
Some of these licenses can be interpreted to mean the software is
|
|
|
|
|
freely redistributable. The list of redistributable licenses is:
|
|
|
|
|
|
|
|
|
|
Artistic, BSD, DFSG, GNU PL, Lesser GNU PL, "MIT/X11",
|
|
|
|
|
Mozilla PL, "public domain", Python, Qt PL, Zope PL,
|
|
|
|
|
nosource, shareware
|
|
|
|
|
|
|
|
|
|
Note that being redistributable does not mean a package
|
|
|
|
|
qualifies as free software, 'nosource' and 'shareware' being
|
|
|
|
|
examples.
|
2001-03-17 11:30:28 -05:00
|
|
|
|
|
|
|
|
|
Example: 'License: MIT/X11'
|
2001-03-17 11:01:48 -05:00
|
|
|
|
|
2001-03-13 10:48:04 -05:00
|
|
|
|
|
|
|
|
|
Copyright
|
|
|
|
|
|
|
|
|
|
This document has been placed in the public domain.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
|
|
mode: indented-text
|
|
|
|
|
indent-tabs-mode: nil
|
|
|
|
|
End:
|