##// END OF EJS Templates
py3: make largefiles/proto.py use absolute_import
liscju -
r29312:29139be0 default
parent child Browse files
Show More
@@ -1,180 +1,189
1 1 # Copyright 2011 Fog Creek Software
2 2 #
3 3 # This software may be used and distributed according to the terms of the
4 4 # GNU General Public License version 2 or any later version.
5 from __future__ import absolute_import
5 6
6 7 import os
7 8 import re
8 9
9 from mercurial import error, httppeer, util, wireproto
10 10 from mercurial.i18n import _
11 11
12 from mercurial import (
13 error,
14 httppeer,
15 util,
16 wireproto,
17 )
18
19 from . import (
20 lfutil,
21 )
22
12 23 urlerr = util.urlerr
13 24 urlreq = util.urlreq
14 25
15 import lfutil
16
17 26 LARGEFILES_REQUIRED_MSG = ('\nThis repository uses the largefiles extension.'
18 27 '\n\nPlease enable it in your Mercurial config '
19 28 'file.\n')
20 29
21 30 # these will all be replaced by largefiles.uisetup
22 31 capabilitiesorig = None
23 32 ssholdcallstream = None
24 33 httpoldcallstream = None
25 34
26 35 def putlfile(repo, proto, sha):
27 36 '''Server command for putting a largefile into a repository's local store
28 37 and into the user cache.'''
29 38 proto.redirect()
30 39
31 40 path = lfutil.storepath(repo, sha)
32 41 util.makedirs(os.path.dirname(path))
33 42 tmpfp = util.atomictempfile(path, createmode=repo.store.createmode)
34 43
35 44 try:
36 45 proto.getfile(tmpfp)
37 46 tmpfp._fp.seek(0)
38 47 if sha != lfutil.hexsha1(tmpfp._fp):
39 48 raise IOError(0, _('largefile contents do not match hash'))
40 49 tmpfp.close()
41 50 lfutil.linktousercache(repo, sha)
42 51 except IOError as e:
43 52 repo.ui.warn(_('largefiles: failed to put %s into store: %s\n') %
44 53 (sha, e.strerror))
45 54 return wireproto.pushres(1)
46 55 finally:
47 56 tmpfp.discard()
48 57
49 58 return wireproto.pushres(0)
50 59
51 60 def getlfile(repo, proto, sha):
52 61 '''Server command for retrieving a largefile from the repository-local
53 62 cache or user cache.'''
54 63 filename = lfutil.findfile(repo, sha)
55 64 if not filename:
56 65 raise error.Abort(_('requested largefile %s not present in cache')
57 66 % sha)
58 67 f = open(filename, 'rb')
59 68 length = os.fstat(f.fileno())[6]
60 69
61 70 # Since we can't set an HTTP content-length header here, and
62 71 # Mercurial core provides no way to give the length of a streamres
63 72 # (and reading the entire file into RAM would be ill-advised), we
64 73 # just send the length on the first line of the response, like the
65 74 # ssh proto does for string responses.
66 75 def generator():
67 76 yield '%d\n' % length
68 77 for chunk in util.filechunkiter(f):
69 78 yield chunk
70 79 return wireproto.streamres(generator())
71 80
72 81 def statlfile(repo, proto, sha):
73 82 '''Server command for checking if a largefile is present - returns '2\n' if
74 83 the largefile is missing, '0\n' if it seems to be in good condition.
75 84
76 85 The value 1 is reserved for mismatched checksum, but that is too expensive
77 86 to be verified on every stat and must be caught be running 'hg verify'
78 87 server side.'''
79 88 filename = lfutil.findfile(repo, sha)
80 89 if not filename:
81 90 return '2\n'
82 91 return '0\n'
83 92
84 93 def wirereposetup(ui, repo):
85 94 class lfileswirerepository(repo.__class__):
86 95 def putlfile(self, sha, fd):
87 96 # unfortunately, httprepository._callpush tries to convert its
88 97 # input file-like into a bundle before sending it, so we can't use
89 98 # it ...
90 99 if issubclass(self.__class__, httppeer.httppeer):
91 100 res = self._call('putlfile', data=fd, sha=sha,
92 101 headers={'content-type':'application/mercurial-0.1'})
93 102 try:
94 103 d, output = res.split('\n', 1)
95 104 for l in output.splitlines(True):
96 105 self.ui.warn(_('remote: '), l) # assume l ends with \n
97 106 return int(d)
98 107 except ValueError:
99 108 self.ui.warn(_('unexpected putlfile response: %r\n') % res)
100 109 return 1
101 110 # ... but we can't use sshrepository._call because the data=
102 111 # argument won't get sent, and _callpush does exactly what we want
103 112 # in this case: send the data straight through
104 113 else:
105 114 try:
106 115 ret, output = self._callpush("putlfile", fd, sha=sha)
107 116 if ret == "":
108 117 raise error.ResponseError(_('putlfile failed:'),
109 118 output)
110 119 return int(ret)
111 120 except IOError:
112 121 return 1
113 122 except ValueError:
114 123 raise error.ResponseError(
115 124 _('putlfile failed (unexpected response):'), ret)
116 125
117 126 def getlfile(self, sha):
118 127 """returns an iterable with the chunks of the file with sha sha"""
119 128 stream = self._callstream("getlfile", sha=sha)
120 129 length = stream.readline()
121 130 try:
122 131 length = int(length)
123 132 except ValueError:
124 133 self._abort(error.ResponseError(_("unexpected response:"),
125 134 length))
126 135
127 136 # SSH streams will block if reading more than length
128 137 for chunk in util.filechunkiter(stream, 128 * 1024, length):
129 138 yield chunk
130 139 # HTTP streams must hit the end to process the last empty
131 140 # chunk of Chunked-Encoding so the connection can be reused.
132 141 if issubclass(self.__class__, httppeer.httppeer):
133 142 chunk = stream.read(1)
134 143 if chunk:
135 144 self._abort(error.ResponseError(_("unexpected response:"),
136 145 chunk))
137 146
138 147 @wireproto.batchable
139 148 def statlfile(self, sha):
140 149 f = wireproto.future()
141 150 result = {'sha': sha}
142 151 yield result, f
143 152 try:
144 153 yield int(f.value)
145 154 except (ValueError, urlerr.httperror):
146 155 # If the server returns anything but an integer followed by a
147 156 # newline, newline, it's not speaking our language; if we get
148 157 # an HTTP error, we can't be sure the largefile is present;
149 158 # either way, consider it missing.
150 159 yield 2
151 160
152 161 repo.__class__ = lfileswirerepository
153 162
154 163 # advertise the largefiles=serve capability
155 164 def capabilities(repo, proto):
156 165 '''Wrap server command to announce largefile server capability'''
157 166 return capabilitiesorig(repo, proto) + ' largefiles=serve'
158 167
159 168 def heads(repo, proto):
160 169 '''Wrap server command - largefile capable clients will know to call
161 170 lheads instead'''
162 171 if lfutil.islfilesrepo(repo):
163 172 return wireproto.ooberror(LARGEFILES_REQUIRED_MSG)
164 173 return wireproto.heads(repo, proto)
165 174
166 175 def sshrepocallstream(self, cmd, **args):
167 176 if cmd == 'heads' and self.capable('largefiles'):
168 177 cmd = 'lheads'
169 178 if cmd == 'batch' and self.capable('largefiles'):
170 179 args['cmds'] = args['cmds'].replace('heads ', 'lheads ')
171 180 return ssholdcallstream(self, cmd, **args)
172 181
173 182 headsre = re.compile(r'(^|;)heads\b')
174 183
175 184 def httprepocallstream(self, cmd, **args):
176 185 if cmd == 'heads' and self.capable('largefiles'):
177 186 cmd = 'lheads'
178 187 if cmd == 'batch' and self.capable('largefiles'):
179 188 args['cmds'] = headsre.sub('lheads', args['cmds'])
180 189 return httpoldcallstream(self, cmd, **args)
@@ -1,156 +1,155
1 1 #require test-repo
2 2
3 3 $ . "$TESTDIR/helpers-testrepo.sh"
4 4 $ cd "$TESTDIR"/..
5 5
6 6 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs python contrib/check-py3-compat.py
7 7 hgext/fsmonitor/pywatchman/__init__.py not using absolute_import
8 8 hgext/fsmonitor/pywatchman/__init__.py requires print_function
9 9 hgext/fsmonitor/pywatchman/capabilities.py not using absolute_import
10 10 hgext/fsmonitor/pywatchman/pybser.py not using absolute_import
11 11 hgext/highlight/__init__.py not using absolute_import
12 12 hgext/highlight/highlight.py not using absolute_import
13 hgext/largefiles/proto.py not using absolute_import
14 13 hgext/largefiles/remotestore.py not using absolute_import
15 14 hgext/largefiles/reposetup.py not using absolute_import
16 15 hgext/largefiles/uisetup.py not using absolute_import
17 16 hgext/largefiles/wirestore.py not using absolute_import
18 17 hgext/share.py not using absolute_import
19 18 hgext/win32text.py not using absolute_import
20 19 i18n/check-translation.py not using absolute_import
21 20 i18n/polib.py not using absolute_import
22 21 setup.py not using absolute_import
23 22 tests/heredoctest.py requires print_function
24 23 tests/md5sum.py not using absolute_import
25 24 tests/readlink.py not using absolute_import
26 25 tests/run-tests.py not using absolute_import
27 26 tests/test-demandimport.py not using absolute_import
28 27
29 28 #if py3exe
30 29 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py
31 30 doc/hgmanpage.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
32 31 hgext/automv.py: error importing module: <SyntaxError> invalid syntax (commands.py, line *) (line *) (glob)
33 32 hgext/blackbox.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
34 33 hgext/bugzilla.py: error importing module: <ImportError> No module named 'urlparse' (line *) (glob)
35 34 hgext/censor.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
36 35 hgext/chgserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
37 36 hgext/children.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
38 37 hgext/churn.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
39 38 hgext/clonebundles.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
40 39 hgext/color.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
41 40 hgext/convert/bzr.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
42 41 hgext/convert/common.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
43 42 hgext/convert/convcmd.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
44 43 hgext/convert/cvs.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
45 44 hgext/convert/cvsps.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
46 45 hgext/convert/darcs.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
47 46 hgext/convert/filemap.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
48 47 hgext/convert/git.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
49 48 hgext/convert/gnuarch.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
50 49 hgext/convert/hg.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
51 50 hgext/convert/monotone.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
52 51 hgext/convert/p*.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
53 52 hgext/convert/subversion.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
54 53 hgext/convert/transport.py: error importing module: <ImportError> No module named 'svn.client' (line *) (glob)
55 54 hgext/eol.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
56 55 hgext/extdiff.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (line *) (glob)
57 56 hgext/factotum.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob)
58 57 hgext/fetch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
59 58 hgext/fsmonitor/watchmanclient.py: error importing module: <SystemError> Parent module 'hgext.fsmonitor' not loaded, cannot perform relative import (line *) (glob)
60 59 hgext/gpg.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
61 60 hgext/graphlog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
62 61 hgext/hgk.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
63 62 hgext/histedit.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
64 63 hgext/keyword.py: error importing: <ImportError> No module named 'BaseHTTPServer' (error at common.py:*) (glob)
65 64 hgext/largefiles/basestore.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
66 65 hgext/largefiles/lfcommands.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
67 66 hgext/largefiles/lfutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
68 67 hgext/largefiles/localstore.py: error importing module: <ImportError> No module named 'lfutil' (line *) (glob)
69 68 hgext/largefiles/overrides.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
70 69 hgext/largefiles/proto.py: error importing: <ImportError> No module named 'httplib' (error at httppeer.py:*) (glob)
71 70 hgext/largefiles/remotestore.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at wireproto.py:*) (glob)
72 71 hgext/largefiles/reposetup.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
73 72 hgext/largefiles/uisetup.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (line *) (glob)
74 73 hgext/largefiles/wirestore.py: error importing module: <ImportError> No module named 'lfutil' (line *) (glob)
75 74 hgext/mq.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
76 75 hgext/notify.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
77 76 hgext/pager.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
78 77 hgext/patchbomb.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
79 78 hgext/purge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
80 79 hgext/rebase.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
81 80 hgext/record.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
82 81 hgext/relink.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
83 82 hgext/schemes.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
84 83 hgext/share.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
85 84 hgext/shelve.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
86 85 hgext/strip.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
87 86 hgext/transplant.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
88 87 mercurial/archival.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
89 88 mercurial/branchmap.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
90 89 mercurial/bundle*.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
91 90 mercurial/bundlerepo.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
92 91 mercurial/changegroup.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
93 92 mercurial/changelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
94 93 mercurial/cmdutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
95 94 mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
96 95 mercurial/commandserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
97 96 mercurial/context.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
98 97 mercurial/copies.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
99 98 mercurial/crecord.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
100 99 mercurial/dirstate.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
101 100 mercurial/discovery.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
102 101 mercurial/dispatch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
103 102 mercurial/exchange.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
104 103 mercurial/extensions.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
105 104 mercurial/filelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
106 105 mercurial/filemerge.py: error importing: <ImportError> No module named 'cPickle' (error at formatter.py:*) (glob)
107 106 mercurial/fileset.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
108 107 mercurial/formatter.py: error importing module: <ImportError> No module named 'cPickle' (line *) (glob)
109 108 mercurial/graphmod.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
110 109 mercurial/help.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
111 110 mercurial/hg.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at bundlerepo.py:*) (glob)
112 111 mercurial/hgweb/common.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
113 112 mercurial/hgweb/hgweb_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
114 113 mercurial/hgweb/hgwebdir_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
115 114 mercurial/hgweb/protocol.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
116 115 mercurial/hgweb/request.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
117 116 mercurial/hgweb/server.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
118 117 mercurial/hgweb/webcommands.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
119 118 mercurial/hgweb/webutil.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
120 119 mercurial/hgweb/wsgicgi.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
121 120 mercurial/hook.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
122 121 mercurial/httpconnection.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob)
123 122 mercurial/httppeer.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
124 123 mercurial/keepalive.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
125 124 mercurial/localrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
126 125 mercurial/mail.py: error importing module: <AttributeError> module 'email' has no attribute 'Header' (line *) (glob)
127 126 mercurial/manifest.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
128 127 mercurial/merge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
129 128 mercurial/namespaces.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
130 129 mercurial/patch.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
131 130 mercurial/pure/mpatch.py: error importing module: <ImportError> cannot import name 'pycompat' (line *) (glob)
132 131 mercurial/pure/parsers.py: error importing module: <ImportError> No module named 'mercurial.pure.node' (line *) (glob)
133 132 mercurial/repair.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
134 133 mercurial/revlog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
135 134 mercurial/revset.py: error importing module: <AttributeError> 'dict' object has no attribute 'iteritems' (line *) (glob)
136 135 mercurial/scmutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
137 136 mercurial/scmwindows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
138 137 mercurial/simplemerge.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
139 138 mercurial/sshpeer.py: error importing: <SyntaxError> invalid syntax (bundle*.py, line *) (error at wireproto.py:*) (glob)
140 139 mercurial/sshserver.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
141 140 mercurial/statichttprepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
142 141 mercurial/store.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
143 142 mercurial/streamclone.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
144 143 mercurial/subrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
145 144 mercurial/templatefilters.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
146 145 mercurial/templatekw.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
147 146 mercurial/templater.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
148 147 mercurial/ui.py: error importing: <ImportError> No module named 'cPickle' (error at formatter.py:*) (glob)
149 148 mercurial/unionrepo.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
150 149 mercurial/url.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
151 150 mercurial/verify.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
152 151 mercurial/win*.py: error importing module: <ImportError> No module named 'msvcrt' (line *) (glob)
153 152 mercurial/windows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
154 153 mercurial/wireproto.py: error importing module: <SyntaxError> invalid syntax (bundle*.py, line *) (line *) (glob)
155 154
156 155 #endif
General Comments 0
You need to be logged in to leave comments. Login now