[Python-checkins] r63014 - python/trunk/Lib/distutils/config.py
Brett Cannon
brett at python.org
Sun May 11 00:14:38 CEST 2008
Is the commit to add back in what I reverted coming in a separate checkin?
-Brett
On Sat, May 10, 2008 at 3:12 PM, andrew.kuchling
<python-checkins at python.org> wrote:
> Author: andrew.kuchling
> Date: Sun May 11 00:12:38 2008
> New Revision: 63014
>
> Log:
> #1858: add distutils.config module
>
> Added:
> python/trunk/Lib/distutils/config.py
>
> Added: python/trunk/Lib/distutils/config.py
> ==============================================================================
> --- (empty file)
> +++ python/trunk/Lib/distutils/config.py Sun May 11 00:12:38 2008
> @@ -0,0 +1,124 @@
> +"""distutils.pypirc
> +
> +Provides the PyPIRCCommand class, the base class for the command classes
> +that uses .pypirc in the distutils.command package.
> +"""
> +import os
> +import sys
> +from ConfigParser import ConfigParser
> +
> +from distutils.core import Command
> +
> +DEFAULT_PYPIRC = """\
> +[pypirc]
> +servers =
> + pypi
> +
> +[pypi]
> +username:%s
> +password:%s
> +"""
> +
> +class PyPIRCCommand(Command):
> + """Base command that knows how to handle the .pypirc file
> + """
> + DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi'
> + DEFAULT_REALM = 'pypi'
> + repository = None
> + realm = None
> +
> + user_options = [
> + ('repository=', 'r',
> + "url of repository [default: %s]" % \
> + DEFAULT_REPOSITORY),
> + ('show-response', None,
> + 'display full response text from server')]
> +
> + boolean_options = ['show-response']
> +
> + def _get_rc_file(self):
> + """Returns rc file path."""
> + return os.path.join(os.path.expanduser('~'), '.pypirc')
> +
> + def _store_pypirc(self, username, password):
> + """Creates a default .pypirc file."""
> + rc = self._get_rc_file()
> + f = open(rc, 'w')
> + try:
> + f.write(DEFAULT_PYPIRC % (username, password))
> + finally:
> + f.close()
> + try:
> + os.chmod(rc, 0600)
> + except OSError:
> + # should do something better here
> + pass
> +
> + def _read_pypirc(self):
> + """Reads the .pypirc file."""
> + rc = self._get_rc_file()
> + if os.path.exists(rc):
> + print 'Using PyPI login from %s' % rc
> + repository = self.repository or self.DEFAULT_REPOSITORY
> + realm = self.realm or self.DEFAULT_REALM
> +
> + config = 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')
> + current['password'] = config.get(server, 'password')
> +
> + # optional params
> + for key, default in (('repository',
> + self.DEFAULT_REPOSITORY),
> + ('realm', self.DEFAULT_REALM)):
> + 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 = self.DEFAULT_REPOSITORY
> + return {'username': config.get(server, 'username'),
> + 'password': config.get(server, 'password'),
> + 'repository': repository,
> + 'server': server,
> + 'realm': self.DEFAULT_REALM}
> +
> + return {}
> +
> + def initialize_options(self):
> + """Initialize options."""
> + self.repository = None
> + self.realm = None
> + self.show_response = 0
> +
> + def finalize_options(self):
> + """Finalizes options."""
> + if self.repository is None:
> + self.repository = self.DEFAULT_REPOSITORY
> + if self.realm is None:
> + self.realm = self.DEFAULT_REALM
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> http://mail.python.org/mailman/listinfo/python-checkins
>
More information about the Python-checkins
mailing list