[Python-checkins] r55032 - peps/trunk/pep-0000.txt peps/trunk/pep-0365.txt
phillip.eby
python-checkins at python.org
Tue May 1 02:24:54 CEST 2007
Author: phillip.eby
Date: Tue May 1 02:24:48 2007
New Revision: 55032
Added:
peps/trunk/pep-0365.txt (contents, props changed)
Modified:
peps/trunk/pep-0000.txt
Log:
Added pkg_resources PEP
Modified: peps/trunk/pep-0000.txt
==============================================================================
--- peps/trunk/pep-0000.txt (original)
+++ peps/trunk/pep-0000.txt Tue May 1 02:24:48 2007
@@ -110,6 +110,7 @@
S 355 Path - Object oriented filesystem paths Lindqvist
S 362 Function Signature Object Cannon, Seo
S 364 Transitioning to the Py3K Standard Library Warsaw
+ S 365 Adding the pkg_resources module Eby
S 754 IEEE 754 Floating Point Special Values Warnes
S 3101 Advanced String Formatting Talin
S 3108 Standard Library Reorganization Cannon
@@ -455,6 +456,7 @@
S 362 Function Signature Object Cannon, Seo
SR 363 Syntax For Dynamic Attribute Access North
S 364 Transitioning to the Py3K Standard Library Warsaw
+ S 365 Adding the pkg_resources module Eby
SR 666 Reject Foolish Indentation Creighton
S 754 IEEE 754 Floating Point Special Values Warnes
P 3000 Python 3000 GvR
Added: peps/trunk/pep-0365.txt
==============================================================================
--- (empty file)
+++ peps/trunk/pep-0365.txt Tue May 1 02:24:48 2007
@@ -0,0 +1,127 @@
+PEP: 365
+Title: Adding the pkg_resources module
+Version: $Revision$
+Last-Modified: $Date$
+Author: Phillip J. Eby <pje at telecommunity.com>
+Status: Draft
+Type: Standards Track
+Content-Type: text/x-rst
+Created: 30-Apr-2007
+Post-History: 30-Apr-2007
+
+
+Abstract
+========
+
+This PEP proposes adding an enhanced version of the ``pkg_resources``
+module to the standard library.
+
+``pkg_resources`` is a module used to find and manage Python
+package/version dependencies and access bundled files and resources,
+including those inside of zipped ``.egg`` files. Currently,
+``pkg_resources`` is only available through installing the entire
+``setuptools`` distribution, but it does not depend on any other part
+of setuptools; in effect, it comprises the entire runtime support
+library for Python Eggs, and is independently useful.
+
+In addition, with one feature addition, this module could support
+easy bootstrap installation of several Python package management
+tools, including ``setuptools``, ``workingenv``, and ``zc.buildout``.
+
+
+Proposal
+========
+
+Rather than proposing to include ``setuptools`` in the standard
+library, this PEP proposes only that ``pkg_resources`` be added to the
+standard library for Python 2.6 and 3.0. ``pkg_resources`` is
+considerably more stable than the rest of setuptools, with virtually
+no new features being added in the last 12 months.
+
+However, this PEP also proposes that a new feature be added to
+``pkg_resources``, before being added to the stdlib. Specifically, it
+should be possible to do something like::
+
+ python -m pkg_resources SomePackage==1.2
+
+to request downloading and installation of ``SomePackage`` from PyPI.
+This feature would *not* be a replacement for ``easy_install``;
+instead, it would rely on ``SomePackage`` having pure-Python ``.egg``
+files listed for download via the PyPI XML-RPC API, and the eggs would
+be placed in the ``$PYTHONEGGS`` cache, where they would **not** be
+importable by default. (And no scripts would be installed) However,
+if the download egg contains installation bootstrap code, it will be
+given a chance to run.
+
+These restrictions would allow the code to be extremely simple, yet
+still powerful enough to support users downloading package management
+tools such as ``setuptools``, ``workingenv`` and ``zc.buildout``,
+simply by supplying the tool's name on the command line.
+
+
+Rationale
+=========
+
+Many users have requested that ``setuptools`` be included in the
+standard library, to save users needing to go through the awkward
+process of bootstrapping it. However, most of the bootstrapping
+complexity comes from the fact that setuptools-installed code cannot
+use the ``pkg_resources`` runtime module unless setuptools is already
+installed. Thus, installing setuptools requires (in a sense) that
+setuptools already be installed.
+
+Other Python package management tools, such as ``workingenv`` and
+``zc.buildout``, have similar bootstrapping issues, since they both
+make use of setuptools, but also want to provide users with something
+approaching a "one-step install". The complexity of creating bootstrap
+utilities for these and any other such tools that arise in future, is
+greatly reduced if ``pkg_resources`` is already present, and is also
+able to download pre-packaged eggs from PyPI.
+
+(It would also mean that setuptools would not need to be installed
+in order to simply *use* eggs, as opposed to building them.)
+
+Finally, in addition to providing access to eggs built via setuptools
+or other packaging tools, it should be noted that since Python 2.5,
+the distutils install package metadata (aka ``PKG-INFO``) files that
+can be read by ``pkg_resources`` to identify what distributions are
+already on ``sys.path``. In environments where Python packages are
+installed using system package tools (like RPM), the ``pkg_resources``
+module provides an API for detecting what versions of what packages
+are installed, even if those packages were installed via the distutils
+instead of setuptools.
+
+
+Implementation and Documentation
+================================
+
+The ``pkg_resources`` implementation is maintained in the Python
+SVN repository under ``/sandbox/trunk/setuptools/``; see
+``pkg_resources.py`` and ``pkg_resources.txt``. Documentation for the
+egg format(s) supported by ``pkg_resources`` can be found in
+``doc/formats.txt``. HTML versions of these documents are available
+at:
+
+* http://peak.telecommunity.com/DevCenter/PkgResources and
+
+* http://peak.telecommunity.com/DevCenter/EggFormats
+
+(These HTML versions are for setuptools 0.6; they may not reflect all
+of the changes found in the Subversion trunk's ``.txt`` versions.)
+
+
+Copyright
+=========
+
+This document has been placed in the public domain.
+
+
+
+..
+ Local Variables:
+ mode: indented-text
+ indent-tabs-mode: nil
+ sentence-end-double-space: t
+ fill-column: 70
+ coding: utf-8
+ End:
More information about the Python-checkins
mailing list