Mercurial > cpython-lru_cache-weakref
annotate Lib/distutils/config.py @ 54294:dba767bc3155 legacy-trunk
remove mention of old ctypes version
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sat, 23 May 2009 20:59:09 +0000 |
| parents | a3f329f23b23 |
| children | 3e2b7965ada9 |
| rev | line source |
|---|---|
|
46846
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
1 """distutils.pypirc |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
2 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
3 Provides the PyPIRCCommand class, the base class for the command classes |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
4 that uses .pypirc in the distutils.command package. |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
5 """ |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
6 import os |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
7 import sys |
|
47252
e534ee0a4cd0
ConfigParser renaming reversal part 3: move module into place and adapt imports.
Georg Brandl <georg@python.org>
parents:
47236
diff
changeset
|
8 from ConfigParser import ConfigParser |
|
46846
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
9 |
|
47058
91896227272a
Import class from distutils.cmd, not .core, to avoid circular import
Andrew M. Kuchling <amk@amk.ca>
parents:
47057
diff
changeset
|
10 from distutils.cmd import Command |
|
46846
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
11 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
12 DEFAULT_PYPIRC = """\ |
|
50298
fb150fcf165d
Merged revisions 67926 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
47252
diff
changeset
|
13 [distutils] |
|
fb150fcf165d
Merged revisions 67926 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
47252
diff
changeset
|
14 index-servers = |
|
46846
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
15 pypi |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
16 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
17 [pypi] |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
18 username:%s |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
19 password:%s |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
20 """ |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
21 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
22 class PyPIRCCommand(Command): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
23 """Base command that knows how to handle the .pypirc file |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
24 """ |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
25 DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi' |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
26 DEFAULT_REALM = 'pypi' |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
27 repository = None |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
28 realm = None |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
29 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
30 user_options = [ |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
31 ('repository=', 'r', |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
32 "url of repository [default: %s]" % \ |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
33 DEFAULT_REPOSITORY), |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
34 ('show-response', None, |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
35 'display full response text from server')] |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
36 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
37 boolean_options = ['show-response'] |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
38 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
39 def _get_rc_file(self): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
40 """Returns rc file path.""" |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
41 return os.path.join(os.path.expanduser('~'), '.pypirc') |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
42 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
43 def _store_pypirc(self, username, password): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
44 """Creates a default .pypirc file.""" |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
45 rc = self._get_rc_file() |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
46 f = open(rc, 'w') |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
47 try: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
48 f.write(DEFAULT_PYPIRC % (username, password)) |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
49 finally: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
50 f.close() |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
51 try: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
52 os.chmod(rc, 0600) |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
53 except OSError: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
54 # should do something better here |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
55 pass |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
56 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
57 def _read_pypirc(self): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
58 """Reads the .pypirc file.""" |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
59 rc = self._get_rc_file() |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
60 if os.path.exists(rc): |
|
47236
0d0d9641f9bd
Use announce instead of print, to suppress output in
Martin v. Löwis <martin@v.loewis.de>
parents:
47078
diff
changeset
|
61 self.announce('Using PyPI login from %s' % rc) |
|
46846
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
62 repository = self.repository or self.DEFAULT_REPOSITORY |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
63 realm = self.realm or self.DEFAULT_REALM |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
64 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
65 config = ConfigParser() |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
66 config.read(rc) |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
67 sections = config.sections() |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
68 if 'distutils' in sections: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
69 # let's get the list of servers |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
70 index_servers = config.get('distutils', 'index-servers') |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
71 _servers = [server.strip() for server in |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
72 index_servers.split('\n') |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
73 if server.strip() != ''] |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
74 if _servers == []: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
75 # nothing set, let's try to get the default pypi |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
76 if 'pypi' in sections: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
77 _servers = ['pypi'] |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
78 else: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
79 # the file is not properly defined, returning |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
80 # an empty dict |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
81 return {} |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
82 for server in _servers: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
83 current = {'server': server} |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
84 current['username'] = config.get(server, 'username') |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
85 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
86 # optional params |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
87 for key, default in (('repository', |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
88 self.DEFAULT_REPOSITORY), |
|
50637
a3f329f23b23
fixed #4394 make the storage of the password optional in .pypirc
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
50298
diff
changeset
|
89 ('realm', self.DEFAULT_REALM), |
|
a3f329f23b23
fixed #4394 make the storage of the password optional in .pypirc
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
50298
diff
changeset
|
90 ('password', None)): |
|
46846
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
91 if config.has_option(server, key): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
92 current[key] = config.get(server, key) |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
93 else: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
94 current[key] = default |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
95 if (current['server'] == repository or |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
96 current['repository'] == repository): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
97 return current |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
98 elif 'server-login' in sections: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
99 # old format |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
100 server = 'server-login' |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
101 if config.has_option(server, 'repository'): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
102 repository = config.get(server, 'repository') |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
103 else: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
104 repository = self.DEFAULT_REPOSITORY |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
105 return {'username': config.get(server, 'username'), |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
106 'password': config.get(server, 'password'), |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
107 'repository': repository, |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
108 'server': server, |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
109 'realm': self.DEFAULT_REALM} |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
110 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
111 return {} |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
112 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
113 def initialize_options(self): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
114 """Initialize options.""" |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
115 self.repository = None |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
116 self.realm = None |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
117 self.show_response = 0 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
118 |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
119 def finalize_options(self): |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
120 """Finalizes options.""" |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
121 if self.repository is None: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
122 self.repository = self.DEFAULT_REPOSITORY |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
123 if self.realm is None: |
|
2ca7a2798161
#1858: add distutils.config module
Andrew M. Kuchling <amk@amk.ca>
parents:
diff
changeset
|
124 self.realm = self.DEFAULT_REALM |
