[Python-checkins] python/dist/src/Doc/dist dist.tex,1.89,1.90
fdrake at users.sourceforge.net
fdrake at users.sourceforge.net
Sun Mar 20 23:19:48 CET 2005
Update of /cvsroot/python/python/dist/src/Doc/dist
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6803/Doc/dist
Modified Files:
dist.tex
Log Message:
PEP 314 implementation (client side):
added support for the provides, requires, and obsoletes metadata fields
Index: dist.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/dist/dist.tex,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -d -r1.89 -r1.90
--- dist.tex 10 Mar 2005 03:48:14 -0000 1.89
+++ dist.tex 20 Mar 2005 22:19:46 -0000 1.90
@@ -631,7 +631,83 @@
will automatically add \code{initmodule}
to the list of exported symbols.
+\section{Relationships between Distributions and Packages}
+
+A distribution may relate to packages in three specific ways:
+
+\begin{enumerate}
+ \item It can require packages or modules.
+
+ \item It can provide packages or modules.
+
+ \item It can obsolete packages or modules.
+\end{enumerate}
+
+These relationships can be specified using keyword arguments to the
+\function{distutils.core.setup()} function.
+
+Dependencies on other Python modules and packages can be specified by
+supplying the \var{requires} keyword argument to \function{setup()}.
+The value must be a list of strings. Each string specifies a package
+that is required, and optionally what versions are sufficient.
+
+To specify that any version of a module or package is required, the
+string should consist entirely of the module or package name.
+Examples include \code{'mymodule'} and \code{'xml.parsers.expat'}.
+
+If specific versions are required, a sequence of qualifiers can be
+supplied in parentheses. Each qualifier may consist of a comparison
+operator and a version number. The accepted comparison operators are:
+
+\begin{verbatim}
+< > ==
+<= >= !=
+\end{verbatim}
+
+These can be combined by using multiple qualifiers separated by commas
+(and optional whitespace). In this case, all of the qualifiers must
+be matched; a logical AND is used to combine the evaluations.
+
+Let's look at a bunch of examples:
+
+\begin{tableii}{l|l}{code}{Requires Expression}{Explanation}
+ \lineii{==1.0} {Only version \code{1.0} is compatible}
+ \lineii{>1.0, !=1.5.1, <2.0} {Any version after \code{1.0} and before
+ \code{2.0} is compatible, except
+ \code{1.5.1}}
+\end{tableii}
+
+Now that we can specify dependencies, we also need to be able to
+specify what we provide that other distributions can require. This is
+done using the \var{provides} keyword argument to \function{setup()}.
+The value for this keyword is a list of strings, each of which names a
+Python module or package, and optionally identifies the version. If
+the version is not specified, it is assumed to match that of the
+distribution.
+
+Some examples:
+
+\begin{tableii}{l|l}{code}{Provides Expression}{Explanation}
+ \lineii{mypkg} {Provide \code{mypkg}, using the distribution version}
+ \lineii{mypkg (1.1} {Provide \code{mypkg} version 1.1, regardless of the
+ distribution version}
+\end{tableii}
+
+A package can declare that it obsoletes other packages using the
+\var{obsoletes} keyword argument. The value for this is similar to
+that of the \var{requires} keyword: a list of strings giving module or
+package specifiers. Each specifier consists of a module or package
+name optionally followed by one or more version qualifiers. Version
+qualifiers are given in parentheses after the module or package name.
+
+The versions identified by the qualifiers are those that are obsoleted
+by the distribution being described. If no qualifiers are given, all
+versions of the named module or package are understood to be
+obsoleted.
+
+
\section{Installing Scripts}
+
So far we have been dealing with pure and non-pure Python modules,
which are usually not run by themselves but imported by scripts.
More information about the Python-checkins
mailing list