diff options
| author | guyroz <none@none> | 2011-09-20 16:40:58 +0300 |
|---|---|---|
| committer | guyroz <none@none> | 2011-09-20 16:40:58 +0300 |
| commit | 4f5c1303ca73fdb1860bf00ee9a37a2c1b6fe294 (patch) | |
| tree | 846bc5fe1474efaf9c544271e9a8502f16eeed71 /setuptools/command/upload.py | |
| parent | 51e06f7936437e869dd4ad29f052435e3d814e61 (diff) | |
| download | python-setuptools-git-4f5c1303ca73fdb1860bf00ee9a37a2c1b6fe294.tar.gz | |
Issue #244 raises ValueError in upload and register commands if using a section without a repository value
--HG--
branch : distribute
extra : rebase_source : e57437a8ac03832ed8170c902996423a27235856
Diffstat (limited to 'setuptools/command/upload.py')
| -rwxr-xr-x | setuptools/command/upload.py | 78 |
1 files changed, 76 insertions, 2 deletions
diff --git a/setuptools/command/upload.py b/setuptools/command/upload.py index 1f49745e..042fcbb5 100755 --- a/setuptools/command/upload.py +++ b/setuptools/command/upload.py @@ -2,6 +2,7 @@ Implements the Distutils 'upload' subcommand (upload package to PyPI).""" + from distutils.errors import * from distutils.core import Command from distutils.spawn import spawn @@ -11,6 +12,7 @@ try: except ImportError: from md5 import md5 import os +import sys import socket import platform import ConfigParser @@ -19,7 +21,7 @@ import base64 import urlparse import cStringIO as StringIO -class upload(Command): +class _upload(Command): description = "upload binary package to PyPI" @@ -65,7 +67,7 @@ class upload(Command): if not self.password: self.password = config.get('server-login', 'password') if not self.repository: - self.repository = self.DEFAULT_REPOSITORY + raise ValueError('%s is missing a repository value in .pypirc' % self._section_name) def run(self): if not self.distribution.dist_files: @@ -181,3 +183,75 @@ class upload(Command): log.ERROR) if self.show_response: print '-'*75, r.read(), '-'*75 + +if sys.version >= "2.5": + from distutils.command.upload import upload as distutils_upload + class upload(distutils_upload): + + def run(self): + self._section_name = self.repository + distutils_upload.run(self) + + def _read_pypirc(self): + """Reads the .pypirc file.""" + self._section_name = self.repository + rc = self._get_rc_file() + if os.path.exists(rc): + repository = self.repository + config = ConfigParser.ConfigParser() + config.read(rc) + sections = config.sections() + if 'distutils' in sections: + # let's get the list of servers + index_servers = config.get('distutils', 'index-servers') + _servers = [server.strip() for server in + index_servers.split('\n') + if server.strip() != ''] + if _servers == []: + # nothing set, let's try to get the default pypi + if 'pypi' in sections: + _servers = ['pypi'] + else: + # the file is not properly defined, returning + # an empty dict + return {} + for server in _servers: + current = {'server': server} + current['username'] = config.get(server, 'username') + + # optional params + for key, default in (('repository', + None), + ('realm', self.DEFAULT_REALM), + ('password', None)): + if config.has_option(server, key): + current[key] = config.get(server, key) + else: + current[key] = default + if (current['server'] == repository or + current['repository'] == repository): + return current + elif 'server-login' in sections: + # old format + server = 'server-login' + if config.has_option(server, 'repository'): + repository = config.get(server, 'repository') + else: + repository = None + return {'username': config.get(server, 'username'), + 'password': config.get(server, 'password'), + 'repository': repository, + 'server': server, + 'realm': self.DEFAULT_REALM} + + return {} + + def finalize_options(self): + distutils_upload.finalize_options(self) + if not self.repository: + raise ValueError('%s is missing a repository value in .pypirc' % self._section_name) + + +else: + upload = _upload + |
