/usr/lib/python2.6/site-packages/setuptools/command
NameSizeModeActions
alias.py24770644editdlrm
alias.pyc32520644editdlrm
alias.pyo32520644editdlrm
bdist_egg.py179930644editdlrm
bdist_egg.pyc180150644editdlrm
bdist_egg.pyo180150644editdlrm
bdist_rpm.py20250644editdlrm
bdist_rpm.pyc23170644editdlrm
bdist_rpm.pyo23170644editdlrm
bdist_wininst.py15480644editdlrm
bdist_wininst.pyc18360644editdlrm
bdist_wininst.pyo18360644editdlrm
build_ext.py117040644editdlrm
build_ext.pyc103610644editdlrm
build_ext.pyo103150644editdlrm
build_py.py99440644editdlrm
build_py.pyc110550644editdlrm
build_py.pyo110550644editdlrm
develop.py95350644editdlrm
develop.pyc90280644editdlrm
develop.pyo90280644editdlrm
easy_install.py641040755editdlrm
easy_install.pyc590920644editdlrm
easy_install.pyo590920644editdlrm
egg_info.py143560644editdlrm
egg_info.pyc170280644editdlrm
egg_info.pyo170280644editdlrm
install.py40650644editdlrm
install.pyc38010644editdlrm
install.pyo38010644editdlrm
install_egg_info.py37320644editdlrm
install_egg_info.pyc46720644editdlrm
install_egg_info.pyo46720644editdlrm
install_lib.py24860644editdlrm
install_lib.pyc32730644editdlrm
install_lib.pyo32230644editdlrm
install_scripts.py20110644editdlrm
install_scripts.pyc25340644editdlrm
install_scripts.pyo25340644editdlrm
launcher manifest.xml6280644editdlrm
register.py2770644editdlrm
register.pyc6920644editdlrm
register.pyo6920644editdlrm
rotate.py20210644editdlrm
rotate.pyc29400644editdlrm
rotate.pyo29400644editdlrm
saveopts.py7400644editdlrm
saveopts.pyc12750644editdlrm
saveopts.pyo12750644editdlrm
sdist.py71830644editdlrm
sdist.pyc83090644editdlrm
sdist.pyo83090644editdlrm
setopt.py50530644editdlrm
setopt.pyc60630644editdlrm
setopt.pyo60630644editdlrm
test.py51100644editdlrm
test.pyc54420644editdlrm
test.pyo54420644editdlrm
upload.py66810644editdlrm
upload.pyc64080644editdlrm
upload.pyo63750644editdlrm
upload_docs.py55070644editdlrm
upload_docs.pyc57410644editdlrm
upload_docs.pyo57080644editdlrm
__init__.py6900644editdlrm
__init__.pyc9150644editdlrm
__init__.pyo9150644editdlrm
Edit: /usr/lib/python2.6/site-packages/setuptools/command/upload.py (6681B)
"""distutils.command.upload Implements the Distutils 'upload' subcommand (upload package to PyPI).""" from distutils.errors import * from distutils.core import Command from distutils.spawn import spawn from distutils import log try: from hashlib import md5 except ImportError: from md5 import md5 import os import socket import platform import ConfigParser import httplib import base64 import urlparse import cStringIO as StringIO class upload(Command): description = "upload binary package to PyPI" DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi' user_options = [ ('repository=', 'r', "url of repository [default: %s]" % DEFAULT_REPOSITORY), ('show-response', None, 'display full response text from server'), ('sign', 's', 'sign files to upload using gpg'), ('identity=', 'i', 'GPG identity used to sign files'), ] boolean_options = ['show-response', 'sign'] def initialize_options(self): self.username = '' self.password = '' self.repository = '' self.show_response = 0 self.sign = False self.identity = None def finalize_options(self): if self.identity and not self.sign: raise DistutilsOptionError( "Must use --sign for --identity to have meaning" ) if os.environ.has_key('HOME'): rc = os.path.join(os.environ['HOME'], '.pypirc') if os.path.exists(rc): self.announce('Using PyPI login from %s' % rc) config = ConfigParser.ConfigParser({ 'username':'', 'password':'', 'repository':''}) config.read(rc) if not self.repository: self.repository = config.get('server-login', 'repository') if not self.username: self.username = config.get('server-login', 'username') if not self.password: self.password = config.get('server-login', 'password') if not self.repository: self.repository = self.DEFAULT_REPOSITORY def run(self): if not self.distribution.dist_files: raise DistutilsOptionError("No dist file created in earlier command") for command, pyversion, filename in self.distribution.dist_files: self.upload_file(command, pyversion, filename) def upload_file(self, command, pyversion, filename): # Sign if requested if self.sign: gpg_args = ["gpg", "--detach-sign", "-a", filename] if self.identity: gpg_args[2:2] = ["--local-user", self.identity] spawn(gpg_args, dry_run=self.dry_run) # Fill in the data f = open(filename,'rb') content = f.read() f.close() basename = os.path.basename(filename) comment = '' if command=='bdist_egg' and self.distribution.has_ext_modules(): comment = "built on %s" % platform.platform(terse=1) data = { ':action':'file_upload', 'protcol_version':'1', 'name':self.distribution.get_name(), 'version':self.distribution.get_version(), 'content':(basename,content), 'filetype':command, 'pyversion':pyversion, 'md5_digest':md5(content).hexdigest(), } if command == 'bdist_rpm': dist, version, id = platform.dist() if dist: comment = 'built for %s %s' % (dist, version) elif command == 'bdist_dumb': comment = 'built for %s' % platform.platform(terse=1) data['comment'] = comment if self.sign: data['gpg_signature'] = (os.path.basename(filename) + ".asc", open(filename+".asc").read()) # set up the authentication auth = "Basic " + base64.encodestring(self.username + ":" + self.password).strip() # Build up the MIME payload for the POST data boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254' sep_boundary = '\n--' + boundary end_boundary = sep_boundary + '--' body = StringIO.StringIO() for key, value in data.items(): # handle multiple entries for the same name if type(value) != type([]): value = [value] for value in value: if type(value) is tuple: fn = ';filename="%s"' % value[0] value = value[1] else: fn = "" value = str(value) body.write(sep_boundary) body.write('\nContent-Disposition: form-data; name="%s"'%key) body.write(fn) body.write("\n\n") body.write(value) if value and value[-1] == '\r': body.write('\n') # write an extra newline (lurve Macs) body.write(end_boundary) body.write("\n") body = body.getvalue() self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO) # build the Request # We can't use urllib2 since we need to send the Basic # auth right with the first request schema, netloc, url, params, query, fragments = \ urlparse.urlparse(self.repository) assert not params and not query and not fragments if schema == 'http': http = httplib.HTTPConnection(netloc) elif schema == 'https': http = httplib.HTTPSConnection(netloc) else: raise AssertionError, "unsupported schema "+schema data = '' loglevel = log.INFO try: http.connect() http.putrequest("POST", url) http.putheader('Content-type', 'multipart/form-data; boundary=%s'%boundary) http.putheader('Content-length', str(len(body))) http.putheader('Authorization', auth) http.endheaders() http.send(body) except socket.error, e: self.announce(str(e), log.ERROR) return r = http.getresponse() if r.status == 200: self.announce('Server response (%s): %s' % (r.status, r.reason), log.INFO) else: self.announce('Upload failed (%s): %s' % (r.status, r.reason), log.ERROR) if self.show_response: print '-'*75, r.read(), '-'*75