symbian-qemu-0.9.1-12/python-2.6.1/Lib/distutils/config.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 """distutils.pypirc
       
     2 
       
     3 Provides the PyPIRCCommand class, the base class for the command classes
       
     4 that uses .pypirc in the distutils.command package.
       
     5 """
       
     6 import os
       
     7 import sys
       
     8 from ConfigParser import ConfigParser
       
     9 
       
    10 from distutils.cmd import Command
       
    11 
       
    12 DEFAULT_PYPIRC = """\
       
    13 [pypirc]
       
    14 servers =
       
    15     pypi
       
    16 
       
    17 [pypi]
       
    18 username:%s
       
    19 password:%s
       
    20 """
       
    21 
       
    22 class PyPIRCCommand(Command):
       
    23     """Base command that knows how to handle the .pypirc file
       
    24     """
       
    25     DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi'
       
    26     DEFAULT_REALM = 'pypi'
       
    27     repository = None
       
    28     realm = None
       
    29 
       
    30     user_options = [
       
    31         ('repository=', 'r',
       
    32          "url of repository [default: %s]" % \
       
    33             DEFAULT_REPOSITORY),
       
    34         ('show-response', None,
       
    35          'display full response text from server')]
       
    36 
       
    37     boolean_options = ['show-response']
       
    38 
       
    39     def _get_rc_file(self):
       
    40         """Returns rc file path."""
       
    41         return os.path.join(os.path.expanduser('~'), '.pypirc')
       
    42 
       
    43     def _store_pypirc(self, username, password):
       
    44         """Creates a default .pypirc file."""
       
    45         rc = self._get_rc_file()
       
    46         f = open(rc, 'w')
       
    47         try:
       
    48             f.write(DEFAULT_PYPIRC % (username, password))
       
    49         finally:
       
    50             f.close()
       
    51         try:
       
    52             os.chmod(rc, 0600)
       
    53         except OSError:
       
    54             # should do something better here
       
    55             pass
       
    56 
       
    57     def _read_pypirc(self):
       
    58         """Reads the .pypirc file."""
       
    59         rc = self._get_rc_file()
       
    60         if os.path.exists(rc):
       
    61             self.announce('Using PyPI login from %s' % rc)
       
    62             repository = self.repository or self.DEFAULT_REPOSITORY
       
    63             realm = self.realm or self.DEFAULT_REALM
       
    64 
       
    65             config = ConfigParser()
       
    66             config.read(rc)
       
    67             sections = config.sections()
       
    68             if 'distutils' in sections:
       
    69                 # let's get the list of servers
       
    70                 index_servers = config.get('distutils', 'index-servers')
       
    71                 _servers = [server.strip() for server in
       
    72                             index_servers.split('\n')
       
    73                             if server.strip() != '']
       
    74                 if _servers == []:
       
    75                     # nothing set, let's try to get the default pypi
       
    76                     if 'pypi' in sections:
       
    77                         _servers = ['pypi']
       
    78                     else:
       
    79                         # the file is not properly defined, returning
       
    80                         # an empty dict
       
    81                         return {}
       
    82                 for server in _servers:
       
    83                     current = {'server': server}
       
    84                     current['username'] = config.get(server, 'username')
       
    85                     current['password'] = config.get(server, 'password')
       
    86 
       
    87                     # optional params
       
    88                     for key, default in (('repository',
       
    89                                           self.DEFAULT_REPOSITORY),
       
    90                                          ('realm', self.DEFAULT_REALM)):
       
    91                         if config.has_option(server, key):
       
    92                             current[key] = config.get(server, key)
       
    93                         else:
       
    94                             current[key] = default
       
    95                     if (current['server'] == repository or
       
    96                         current['repository'] == repository):
       
    97                         return current
       
    98             elif 'server-login' in sections:
       
    99                 # old format
       
   100                 server = 'server-login'
       
   101                 if config.has_option(server, 'repository'):
       
   102                     repository = config.get(server, 'repository')
       
   103                 else:
       
   104                     repository = self.DEFAULT_REPOSITORY
       
   105                 return {'username': config.get(server, 'username'),
       
   106                         'password': config.get(server, 'password'),
       
   107                         'repository': repository,
       
   108                         'server': server,
       
   109                         'realm': self.DEFAULT_REALM}
       
   110 
       
   111         return {}
       
   112 
       
   113     def initialize_options(self):
       
   114         """Initialize options."""
       
   115         self.repository = None
       
   116         self.realm = None
       
   117         self.show_response = 0
       
   118 
       
   119     def finalize_options(self):
       
   120         """Finalizes options."""
       
   121         if self.repository is None:
       
   122             self.repository = self.DEFAULT_REPOSITORY
       
   123         if self.realm is None:
       
   124             self.realm = self.DEFAULT_REALM