]> granicus.if.org Git - python/commitdiff
Add the upload command. Make all dist commands register their
authorMartin v. Löwis <martin@v.loewis.de>
Mon, 21 Mar 2005 20:56:35 +0000 (20:56 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Mon, 21 Mar 2005 20:56:35 +0000 (20:56 +0000)
outputs with the distribution object.

Doc/dist/dist.tex
Lib/distutils/command/bdist_dumb.py
Lib/distutils/command/bdist_rpm.py
Lib/distutils/command/bdist_wininst.py
Lib/distutils/command/sdist.py
Lib/distutils/command/upload.py [new file with mode: 0644]
Lib/distutils/dist.py
Misc/NEWS

index bcff1a62efcfb3d1a2e1c4fc6208cbd9f8c5e156..1684265c67a1f6cfbbdb858f24fe68883681a932 100644 (file)
@@ -1715,7 +1715,37 @@ By default PyPI will list all versions of a given package. To hide certain
 versions, the Hidden property should be set to yes. This must be edited
 through the web interface.
 
+\section{The .pypirc file}
+\label{pypirc}
 
+The format of the \file{.pypirc} file is formated as follows:
+
+\begin{verbatim}
+[server-login]
+repository: <repository-url>
+username: <username>
+password: <password>
+\end{verbatim}
+
+\var{repository} can be ommitted and defaults to
+\code{http://www.python.org/pypi}.
+
+\chapter{Uploading Packages to the Package Index}
+\label{package-upload}
+
+The Python Package Index (PyPI) not only stores the package info, but also 
+the package data if the author of the package wishes to. The distutils
+command \command{upload} pushes the distribution files to PyPI.
+
+The command is invokes immediately after building one or more distribution
+files, e.g. as
+
+\begin{verbatim}
+python setup.py sdist bdist_wininst upload
+\end{verbatim}
+
+The \command{upload} command uses the username and password stored in
+in the file \file{$HOME/.pypirc}, see \ref{pypirc}.
 
 \chapter{Examples}
 \label{examples}
@@ -2055,6 +2085,11 @@ line option above, the command \command{bdist\_openpkg} could be
 implemented by the class \class{distcmds.bdist_openpkg.bdist_openpkg}
 or \class{buildcmds.bdist_openpkg.bdist_openpkg}.
 
+\section{Adding new distribution types}
+
+Commands that create distributions (i.e. files in the dist directory)
+need to add (command, filename) pairs to \var{self.distribution.dist_files}
+so that \command{upload} can upload it to PyPI.
 
 \chapter{Command Reference}
 \label{reference}
index 7f498c839612dbd2aef0068f3db688a27e586930..59435516fa507751a765ec8f6d3fb57afec35de7 100644 (file)
@@ -117,8 +117,9 @@ class bdist_dumb (Command):
                                    ensure_relative(install.install_base))
 
         # Make the archive
-        self.make_archive(pseudoinstall_root,
-                          self.format, root_dir=archive_root)
+        filename = self.make_archive(pseudoinstall_root,
+                                     self.format, root_dir=archive_root)
+        self.distribution.dist_files.append(('bdist_dumb', filename))
 
         if not self.keep_temp:
             remove_tree(self.bdist_dir, dry_run=self.dry_run)
index 8eaaff324699c7a083d971793112305f44043341..09bfa43fd0426103083cad284eafe8f2673e0e08 100644 (file)
@@ -297,12 +297,14 @@ class bdist_rpm (Command):
 
         # Make a source distribution and copy to SOURCES directory with
         # optional icon.
+        saved_dist_files = self.distributuion.dist_files[:]
         sdist = self.reinitialize_command('sdist')
         if self.use_bzip2:
             sdist.formats = ['bztar']
         else:
             sdist.formats = ['gztar']
         self.run_command('sdist')
+        self.distribution.dist_files = saved_dist_files
 
         source = sdist.get_archive_files()[0]
         source_dir = rpm_dir['SOURCES']
@@ -355,6 +357,7 @@ class bdist_rpm (Command):
                 assert len(rpms) == 1, \
                        "unexpected number of RPM files found: %s" % rpms
                 self.move_file(rpms[0], self.dist_dir)
+                self.distribution.dist_files.append(('bdist_rpm', rpms[0]))
                 if debuginfo:
                     self.move_file(debuginfo[0], self.dist_dir)
     # run()
index 9b45cf35e837ccce89c9d6e63e9949070bc334ce..a0335feec7e7425d40313ddffd1e2adf2b4c3aef 100644 (file)
@@ -162,6 +162,8 @@ class bdist_wininst (Command):
                                     root_dir=self.bdist_dir)
         # create an exe containing the zip-file
         self.create_exe(arcname, fullname, self.bitmap)
+        self.distribution.dist_files.append(('bdist_wininst', 
+                                             self.get_installer_filename()))
         # remove the zip-file again
         log.debug("removing temporary file '%s'", arcname)
         os.remove(arcname)
index fe6c9139132e5a1f924d6ab9f1a86fd806743283..8b88f22f835bdb2913ed508680f10b56c4789794 100644 (file)
@@ -449,6 +449,7 @@ class sdist (Command):
         for fmt in self.formats:
             file = self.make_archive(base_name, fmt, base_dir=base_dir)
             archive_files.append(file)
+            self.distribution.dist_files.append(('sdist',file))
 
         self.archive_files = archive_files
 
diff --git a/Lib/distutils/command/upload.py b/Lib/distutils/command/upload.py
new file mode 100644 (file)
index 0000000..d14f177
--- /dev/null
@@ -0,0 +1,4 @@
+"""distutils.command.upload
+
+Implements the Distutils 'upload' subcommand (upload package to PyPI)."""
+
index f015874bc43d111adf5114765cd1bd4e692db405..c7ec3830facf208f846408e19bf0ed4397f8e704 100644 (file)
@@ -177,6 +177,11 @@ Common commands: (see '--help-commands' for more)
         #   command_options = { command_name : { option : (source, value) } }
         self.command_options = {}
 
+        # 'dist_files' is the list of (command, file) that have been created
+        # by any dist commands run so far. This is filled regardless
+        # of whether the run is dry or not.
+        self.dist_files = []
+
         # These options are really the business of various commands, rather
         # than of the Distribution itself.  We provide aliases for them in
         # Distribution as a convenience to the developer.
index 9e3ffa4f4aa49039e147cbe26be25c65af043782..1706874c24da2a94b5a381039d10a1e92ce06df9 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -88,6 +88,9 @@ Extension Modules
 Library
 -------
 
+- distutils.commands.upload was added to support uploading distribution
+  files to PyPI.
+
 - Bug #1163325:  Decimal infinities failed to hash.  Attempting to
   hash a NaN raised an InvalidOperation instead of a TypeError.