##// END OF EJS Templates
osutil: use absolute_import
Gregory Szorc -
r27338:810337ae default
parent child Browse files
Show More
@@ -1,170 +1,173 b''
1 # osutil.py - pure Python version of osutil.c
1 # osutil.py - pure Python version of osutil.c
2 #
2 #
3 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
3 # Copyright 2009 Matt Mackall <mpm@selenic.com> and others
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 from __future__ import absolute_import
9
8 import os
10 import os
9 import stat as statmod
11 import stat as statmod
10
12
11 def _mode_to_kind(mode):
13 def _mode_to_kind(mode):
12 if statmod.S_ISREG(mode):
14 if statmod.S_ISREG(mode):
13 return statmod.S_IFREG
15 return statmod.S_IFREG
14 if statmod.S_ISDIR(mode):
16 if statmod.S_ISDIR(mode):
15 return statmod.S_IFDIR
17 return statmod.S_IFDIR
16 if statmod.S_ISLNK(mode):
18 if statmod.S_ISLNK(mode):
17 return statmod.S_IFLNK
19 return statmod.S_IFLNK
18 if statmod.S_ISBLK(mode):
20 if statmod.S_ISBLK(mode):
19 return statmod.S_IFBLK
21 return statmod.S_IFBLK
20 if statmod.S_ISCHR(mode):
22 if statmod.S_ISCHR(mode):
21 return statmod.S_IFCHR
23 return statmod.S_IFCHR
22 if statmod.S_ISFIFO(mode):
24 if statmod.S_ISFIFO(mode):
23 return statmod.S_IFIFO
25 return statmod.S_IFIFO
24 if statmod.S_ISSOCK(mode):
26 if statmod.S_ISSOCK(mode):
25 return statmod.S_IFSOCK
27 return statmod.S_IFSOCK
26 return mode
28 return mode
27
29
28 def listdir(path, stat=False, skip=None):
30 def listdir(path, stat=False, skip=None):
29 '''listdir(path, stat=False) -> list_of_tuples
31 '''listdir(path, stat=False) -> list_of_tuples
30
32
31 Return a sorted list containing information about the entries
33 Return a sorted list containing information about the entries
32 in the directory.
34 in the directory.
33
35
34 If stat is True, each element is a 3-tuple:
36 If stat is True, each element is a 3-tuple:
35
37
36 (name, type, stat object)
38 (name, type, stat object)
37
39
38 Otherwise, each element is a 2-tuple:
40 Otherwise, each element is a 2-tuple:
39
41
40 (name, type)
42 (name, type)
41 '''
43 '''
42 result = []
44 result = []
43 prefix = path
45 prefix = path
44 if not prefix.endswith(os.sep):
46 if not prefix.endswith(os.sep):
45 prefix += os.sep
47 prefix += os.sep
46 names = os.listdir(path)
48 names = os.listdir(path)
47 names.sort()
49 names.sort()
48 for fn in names:
50 for fn in names:
49 st = os.lstat(prefix + fn)
51 st = os.lstat(prefix + fn)
50 if fn == skip and statmod.S_ISDIR(st.st_mode):
52 if fn == skip and statmod.S_ISDIR(st.st_mode):
51 return []
53 return []
52 if stat:
54 if stat:
53 result.append((fn, _mode_to_kind(st.st_mode), st))
55 result.append((fn, _mode_to_kind(st.st_mode), st))
54 else:
56 else:
55 result.append((fn, _mode_to_kind(st.st_mode)))
57 result.append((fn, _mode_to_kind(st.st_mode)))
56 return result
58 return result
57
59
58 if os.name != 'nt':
60 if os.name != 'nt':
59 posixfile = open
61 posixfile = open
60 else:
62 else:
61 import ctypes, msvcrt
63 import ctypes
64 import msvcrt
62
65
63 _kernel32 = ctypes.windll.kernel32
66 _kernel32 = ctypes.windll.kernel32
64
67
65 _DWORD = ctypes.c_ulong
68 _DWORD = ctypes.c_ulong
66 _LPCSTR = _LPSTR = ctypes.c_char_p
69 _LPCSTR = _LPSTR = ctypes.c_char_p
67 _HANDLE = ctypes.c_void_p
70 _HANDLE = ctypes.c_void_p
68
71
69 _INVALID_HANDLE_VALUE = _HANDLE(-1).value
72 _INVALID_HANDLE_VALUE = _HANDLE(-1).value
70
73
71 # CreateFile
74 # CreateFile
72 _FILE_SHARE_READ = 0x00000001
75 _FILE_SHARE_READ = 0x00000001
73 _FILE_SHARE_WRITE = 0x00000002
76 _FILE_SHARE_WRITE = 0x00000002
74 _FILE_SHARE_DELETE = 0x00000004
77 _FILE_SHARE_DELETE = 0x00000004
75
78
76 _CREATE_ALWAYS = 2
79 _CREATE_ALWAYS = 2
77 _OPEN_EXISTING = 3
80 _OPEN_EXISTING = 3
78 _OPEN_ALWAYS = 4
81 _OPEN_ALWAYS = 4
79
82
80 _GENERIC_READ = 0x80000000
83 _GENERIC_READ = 0x80000000
81 _GENERIC_WRITE = 0x40000000
84 _GENERIC_WRITE = 0x40000000
82
85
83 _FILE_ATTRIBUTE_NORMAL = 0x80
86 _FILE_ATTRIBUTE_NORMAL = 0x80
84
87
85 # open_osfhandle flags
88 # open_osfhandle flags
86 _O_RDONLY = 0x0000
89 _O_RDONLY = 0x0000
87 _O_RDWR = 0x0002
90 _O_RDWR = 0x0002
88 _O_APPEND = 0x0008
91 _O_APPEND = 0x0008
89
92
90 _O_TEXT = 0x4000
93 _O_TEXT = 0x4000
91 _O_BINARY = 0x8000
94 _O_BINARY = 0x8000
92
95
93 # types of parameters of C functions used (required by pypy)
96 # types of parameters of C functions used (required by pypy)
94
97
95 _kernel32.CreateFileA.argtypes = [_LPCSTR, _DWORD, _DWORD, ctypes.c_void_p,
98 _kernel32.CreateFileA.argtypes = [_LPCSTR, _DWORD, _DWORD, ctypes.c_void_p,
96 _DWORD, _DWORD, _HANDLE]
99 _DWORD, _DWORD, _HANDLE]
97 _kernel32.CreateFileA.restype = _HANDLE
100 _kernel32.CreateFileA.restype = _HANDLE
98
101
99 def _raiseioerror(name):
102 def _raiseioerror(name):
100 err = ctypes.WinError()
103 err = ctypes.WinError()
101 raise IOError(err.errno, '%s: %s' % (name, err.strerror))
104 raise IOError(err.errno, '%s: %s' % (name, err.strerror))
102
105
103 class posixfile(object):
106 class posixfile(object):
104 '''a file object aiming for POSIX-like semantics
107 '''a file object aiming for POSIX-like semantics
105
108
106 CPython's open() returns a file that was opened *without* setting the
109 CPython's open() returns a file that was opened *without* setting the
107 _FILE_SHARE_DELETE flag, which causes rename and unlink to abort.
110 _FILE_SHARE_DELETE flag, which causes rename and unlink to abort.
108 This even happens if any hardlinked copy of the file is in open state.
111 This even happens if any hardlinked copy of the file is in open state.
109 We set _FILE_SHARE_DELETE here, so files opened with posixfile can be
112 We set _FILE_SHARE_DELETE here, so files opened with posixfile can be
110 renamed and deleted while they are held open.
113 renamed and deleted while they are held open.
111 Note that if a file opened with posixfile is unlinked, the file
114 Note that if a file opened with posixfile is unlinked, the file
112 remains but cannot be opened again or be recreated under the same name,
115 remains but cannot be opened again or be recreated under the same name,
113 until all reading processes have closed the file.'''
116 until all reading processes have closed the file.'''
114
117
115 def __init__(self, name, mode='r', bufsize=-1):
118 def __init__(self, name, mode='r', bufsize=-1):
116 if 'b' in mode:
119 if 'b' in mode:
117 flags = _O_BINARY
120 flags = _O_BINARY
118 else:
121 else:
119 flags = _O_TEXT
122 flags = _O_TEXT
120
123
121 m0 = mode[0]
124 m0 = mode[0]
122 if m0 == 'r' and '+' not in mode:
125 if m0 == 'r' and '+' not in mode:
123 flags |= _O_RDONLY
126 flags |= _O_RDONLY
124 access = _GENERIC_READ
127 access = _GENERIC_READ
125 else:
128 else:
126 # work around http://support.microsoft.com/kb/899149 and
129 # work around http://support.microsoft.com/kb/899149 and
127 # set _O_RDWR for 'w' and 'a', even if mode has no '+'
130 # set _O_RDWR for 'w' and 'a', even if mode has no '+'
128 flags |= _O_RDWR
131 flags |= _O_RDWR
129 access = _GENERIC_READ | _GENERIC_WRITE
132 access = _GENERIC_READ | _GENERIC_WRITE
130
133
131 if m0 == 'r':
134 if m0 == 'r':
132 creation = _OPEN_EXISTING
135 creation = _OPEN_EXISTING
133 elif m0 == 'w':
136 elif m0 == 'w':
134 creation = _CREATE_ALWAYS
137 creation = _CREATE_ALWAYS
135 elif m0 == 'a':
138 elif m0 == 'a':
136 creation = _OPEN_ALWAYS
139 creation = _OPEN_ALWAYS
137 flags |= _O_APPEND
140 flags |= _O_APPEND
138 else:
141 else:
139 raise ValueError("invalid mode: %s" % mode)
142 raise ValueError("invalid mode: %s" % mode)
140
143
141 fh = _kernel32.CreateFileA(name, access,
144 fh = _kernel32.CreateFileA(name, access,
142 _FILE_SHARE_READ | _FILE_SHARE_WRITE | _FILE_SHARE_DELETE,
145 _FILE_SHARE_READ | _FILE_SHARE_WRITE | _FILE_SHARE_DELETE,
143 None, creation, _FILE_ATTRIBUTE_NORMAL, None)
146 None, creation, _FILE_ATTRIBUTE_NORMAL, None)
144 if fh == _INVALID_HANDLE_VALUE:
147 if fh == _INVALID_HANDLE_VALUE:
145 _raiseioerror(name)
148 _raiseioerror(name)
146
149
147 fd = msvcrt.open_osfhandle(fh, flags)
150 fd = msvcrt.open_osfhandle(fh, flags)
148 if fd == -1:
151 if fd == -1:
149 _kernel32.CloseHandle(fh)
152 _kernel32.CloseHandle(fh)
150 _raiseioerror(name)
153 _raiseioerror(name)
151
154
152 f = os.fdopen(fd, mode, bufsize)
155 f = os.fdopen(fd, mode, bufsize)
153 # unfortunately, f.name is '<fdopen>' at this point -- so we store
156 # unfortunately, f.name is '<fdopen>' at this point -- so we store
154 # the name on this wrapper. We cannot just assign to f.name,
157 # the name on this wrapper. We cannot just assign to f.name,
155 # because that attribute is read-only.
158 # because that attribute is read-only.
156 object.__setattr__(self, 'name', name)
159 object.__setattr__(self, 'name', name)
157 object.__setattr__(self, '_file', f)
160 object.__setattr__(self, '_file', f)
158
161
159 def __iter__(self):
162 def __iter__(self):
160 return self._file
163 return self._file
161
164
162 def __getattr__(self, name):
165 def __getattr__(self, name):
163 return getattr(self._file, name)
166 return getattr(self._file, name)
164
167
165 def __setattr__(self, name, value):
168 def __setattr__(self, name, value):
166 '''mimics the read-only attributes of Python file objects
169 '''mimics the read-only attributes of Python file objects
167 by raising 'TypeError: readonly attribute' if someone tries:
170 by raising 'TypeError: readonly attribute' if someone tries:
168 f = posixfile('foo.txt')
171 f = posixfile('foo.txt')
169 f.name = 'bla' '''
172 f.name = 'bla' '''
170 return self._file.__setattr__(name, value)
173 return self._file.__setattr__(name, value)
@@ -1,215 +1,214 b''
1 #require test-repo
1 #require test-repo
2
2
3 $ cd "$TESTDIR"/..
3 $ cd "$TESTDIR"/..
4
4
5 $ hg files 'set:(**.py)' | xargs python contrib/check-py3-compat.py
5 $ hg files 'set:(**.py)' | xargs python contrib/check-py3-compat.py
6 contrib/casesmash.py not using absolute_import
6 contrib/casesmash.py not using absolute_import
7 contrib/check-code.py not using absolute_import
7 contrib/check-code.py not using absolute_import
8 contrib/check-code.py requires print_function
8 contrib/check-code.py requires print_function
9 contrib/check-config.py not using absolute_import
9 contrib/check-config.py not using absolute_import
10 contrib/check-config.py requires print_function
10 contrib/check-config.py requires print_function
11 contrib/debugcmdserver.py not using absolute_import
11 contrib/debugcmdserver.py not using absolute_import
12 contrib/debugcmdserver.py requires print_function
12 contrib/debugcmdserver.py requires print_function
13 contrib/debugshell.py not using absolute_import
13 contrib/debugshell.py not using absolute_import
14 contrib/fixpax.py not using absolute_import
14 contrib/fixpax.py not using absolute_import
15 contrib/fixpax.py requires print_function
15 contrib/fixpax.py requires print_function
16 contrib/hgclient.py not using absolute_import
16 contrib/hgclient.py not using absolute_import
17 contrib/hgclient.py requires print_function
17 contrib/hgclient.py requires print_function
18 contrib/hgfixes/fix_bytes.py not using absolute_import
18 contrib/hgfixes/fix_bytes.py not using absolute_import
19 contrib/hgfixes/fix_bytesmod.py not using absolute_import
19 contrib/hgfixes/fix_bytesmod.py not using absolute_import
20 contrib/hgfixes/fix_leftover_imports.py not using absolute_import
20 contrib/hgfixes/fix_leftover_imports.py not using absolute_import
21 contrib/import-checker.py not using absolute_import
21 contrib/import-checker.py not using absolute_import
22 contrib/import-checker.py requires print_function
22 contrib/import-checker.py requires print_function
23 contrib/memory.py not using absolute_import
23 contrib/memory.py not using absolute_import
24 contrib/perf.py not using absolute_import
24 contrib/perf.py not using absolute_import
25 contrib/python-hook-examples.py not using absolute_import
25 contrib/python-hook-examples.py not using absolute_import
26 contrib/revsetbenchmarks.py not using absolute_import
26 contrib/revsetbenchmarks.py not using absolute_import
27 contrib/revsetbenchmarks.py requires print_function
27 contrib/revsetbenchmarks.py requires print_function
28 contrib/showstack.py not using absolute_import
28 contrib/showstack.py not using absolute_import
29 contrib/synthrepo.py not using absolute_import
29 contrib/synthrepo.py not using absolute_import
30 contrib/win32/hgwebdir_wsgi.py not using absolute_import
30 contrib/win32/hgwebdir_wsgi.py not using absolute_import
31 doc/check-seclevel.py not using absolute_import
31 doc/check-seclevel.py not using absolute_import
32 doc/gendoc.py not using absolute_import
32 doc/gendoc.py not using absolute_import
33 doc/hgmanpage.py not using absolute_import
33 doc/hgmanpage.py not using absolute_import
34 hgext/__init__.py not using absolute_import
34 hgext/__init__.py not using absolute_import
35 hgext/acl.py not using absolute_import
35 hgext/acl.py not using absolute_import
36 hgext/blackbox.py not using absolute_import
36 hgext/blackbox.py not using absolute_import
37 hgext/bugzilla.py not using absolute_import
37 hgext/bugzilla.py not using absolute_import
38 hgext/censor.py not using absolute_import
38 hgext/censor.py not using absolute_import
39 hgext/children.py not using absolute_import
39 hgext/children.py not using absolute_import
40 hgext/churn.py not using absolute_import
40 hgext/churn.py not using absolute_import
41 hgext/clonebundles.py not using absolute_import
41 hgext/clonebundles.py not using absolute_import
42 hgext/color.py not using absolute_import
42 hgext/color.py not using absolute_import
43 hgext/convert/__init__.py not using absolute_import
43 hgext/convert/__init__.py not using absolute_import
44 hgext/convert/bzr.py not using absolute_import
44 hgext/convert/bzr.py not using absolute_import
45 hgext/convert/common.py not using absolute_import
45 hgext/convert/common.py not using absolute_import
46 hgext/convert/convcmd.py not using absolute_import
46 hgext/convert/convcmd.py not using absolute_import
47 hgext/convert/cvs.py not using absolute_import
47 hgext/convert/cvs.py not using absolute_import
48 hgext/convert/cvsps.py not using absolute_import
48 hgext/convert/cvsps.py not using absolute_import
49 hgext/convert/darcs.py not using absolute_import
49 hgext/convert/darcs.py not using absolute_import
50 hgext/convert/filemap.py not using absolute_import
50 hgext/convert/filemap.py not using absolute_import
51 hgext/convert/git.py not using absolute_import
51 hgext/convert/git.py not using absolute_import
52 hgext/convert/gnuarch.py not using absolute_import
52 hgext/convert/gnuarch.py not using absolute_import
53 hgext/convert/hg.py not using absolute_import
53 hgext/convert/hg.py not using absolute_import
54 hgext/convert/monotone.py not using absolute_import
54 hgext/convert/monotone.py not using absolute_import
55 hgext/convert/p4.py not using absolute_import
55 hgext/convert/p4.py not using absolute_import
56 hgext/convert/subversion.py not using absolute_import
56 hgext/convert/subversion.py not using absolute_import
57 hgext/convert/transport.py not using absolute_import
57 hgext/convert/transport.py not using absolute_import
58 hgext/eol.py not using absolute_import
58 hgext/eol.py not using absolute_import
59 hgext/extdiff.py not using absolute_import
59 hgext/extdiff.py not using absolute_import
60 hgext/factotum.py not using absolute_import
60 hgext/factotum.py not using absolute_import
61 hgext/fetch.py not using absolute_import
61 hgext/fetch.py not using absolute_import
62 hgext/gpg.py not using absolute_import
62 hgext/gpg.py not using absolute_import
63 hgext/graphlog.py not using absolute_import
63 hgext/graphlog.py not using absolute_import
64 hgext/hgcia.py not using absolute_import
64 hgext/hgcia.py not using absolute_import
65 hgext/hgk.py not using absolute_import
65 hgext/hgk.py not using absolute_import
66 hgext/highlight/__init__.py not using absolute_import
66 hgext/highlight/__init__.py not using absolute_import
67 hgext/highlight/highlight.py not using absolute_import
67 hgext/highlight/highlight.py not using absolute_import
68 hgext/histedit.py not using absolute_import
68 hgext/histedit.py not using absolute_import
69 hgext/keyword.py not using absolute_import
69 hgext/keyword.py not using absolute_import
70 hgext/largefiles/__init__.py not using absolute_import
70 hgext/largefiles/__init__.py not using absolute_import
71 hgext/largefiles/basestore.py not using absolute_import
71 hgext/largefiles/basestore.py not using absolute_import
72 hgext/largefiles/lfcommands.py not using absolute_import
72 hgext/largefiles/lfcommands.py not using absolute_import
73 hgext/largefiles/lfutil.py not using absolute_import
73 hgext/largefiles/lfutil.py not using absolute_import
74 hgext/largefiles/localstore.py not using absolute_import
74 hgext/largefiles/localstore.py not using absolute_import
75 hgext/largefiles/overrides.py not using absolute_import
75 hgext/largefiles/overrides.py not using absolute_import
76 hgext/largefiles/proto.py not using absolute_import
76 hgext/largefiles/proto.py not using absolute_import
77 hgext/largefiles/remotestore.py not using absolute_import
77 hgext/largefiles/remotestore.py not using absolute_import
78 hgext/largefiles/reposetup.py not using absolute_import
78 hgext/largefiles/reposetup.py not using absolute_import
79 hgext/largefiles/uisetup.py not using absolute_import
79 hgext/largefiles/uisetup.py not using absolute_import
80 hgext/largefiles/wirestore.py not using absolute_import
80 hgext/largefiles/wirestore.py not using absolute_import
81 hgext/mq.py not using absolute_import
81 hgext/mq.py not using absolute_import
82 hgext/notify.py not using absolute_import
82 hgext/notify.py not using absolute_import
83 hgext/pager.py not using absolute_import
83 hgext/pager.py not using absolute_import
84 hgext/patchbomb.py not using absolute_import
84 hgext/patchbomb.py not using absolute_import
85 hgext/purge.py not using absolute_import
85 hgext/purge.py not using absolute_import
86 hgext/rebase.py not using absolute_import
86 hgext/rebase.py not using absolute_import
87 hgext/record.py not using absolute_import
87 hgext/record.py not using absolute_import
88 hgext/relink.py not using absolute_import
88 hgext/relink.py not using absolute_import
89 hgext/schemes.py not using absolute_import
89 hgext/schemes.py not using absolute_import
90 hgext/share.py not using absolute_import
90 hgext/share.py not using absolute_import
91 hgext/shelve.py not using absolute_import
91 hgext/shelve.py not using absolute_import
92 hgext/strip.py not using absolute_import
92 hgext/strip.py not using absolute_import
93 hgext/transplant.py not using absolute_import
93 hgext/transplant.py not using absolute_import
94 hgext/win32mbcs.py not using absolute_import
94 hgext/win32mbcs.py not using absolute_import
95 hgext/win32text.py not using absolute_import
95 hgext/win32text.py not using absolute_import
96 hgext/zeroconf/Zeroconf.py not using absolute_import
96 hgext/zeroconf/Zeroconf.py not using absolute_import
97 hgext/zeroconf/Zeroconf.py requires print_function
97 hgext/zeroconf/Zeroconf.py requires print_function
98 hgext/zeroconf/__init__.py not using absolute_import
98 hgext/zeroconf/__init__.py not using absolute_import
99 i18n/check-translation.py not using absolute_import
99 i18n/check-translation.py not using absolute_import
100 i18n/polib.py not using absolute_import
100 i18n/polib.py not using absolute_import
101 mercurial/byterange.py not using absolute_import
101 mercurial/byterange.py not using absolute_import
102 mercurial/cmdutil.py not using absolute_import
102 mercurial/cmdutil.py not using absolute_import
103 mercurial/commands.py not using absolute_import
103 mercurial/commands.py not using absolute_import
104 mercurial/commandserver.py not using absolute_import
104 mercurial/commandserver.py not using absolute_import
105 mercurial/context.py not using absolute_import
105 mercurial/context.py not using absolute_import
106 mercurial/dirstate.py not using absolute_import
106 mercurial/dirstate.py not using absolute_import
107 mercurial/dispatch.py requires print_function
107 mercurial/dispatch.py requires print_function
108 mercurial/encoding.py not using absolute_import
108 mercurial/encoding.py not using absolute_import
109 mercurial/exchange.py not using absolute_import
109 mercurial/exchange.py not using absolute_import
110 mercurial/help.py not using absolute_import
110 mercurial/help.py not using absolute_import
111 mercurial/httpclient/__init__.py not using absolute_import
111 mercurial/httpclient/__init__.py not using absolute_import
112 mercurial/httpclient/_readers.py not using absolute_import
112 mercurial/httpclient/_readers.py not using absolute_import
113 mercurial/httpclient/socketutil.py not using absolute_import
113 mercurial/httpclient/socketutil.py not using absolute_import
114 mercurial/httpconnection.py not using absolute_import
114 mercurial/httpconnection.py not using absolute_import
115 mercurial/keepalive.py not using absolute_import
115 mercurial/keepalive.py not using absolute_import
116 mercurial/keepalive.py requires print_function
116 mercurial/keepalive.py requires print_function
117 mercurial/localrepo.py not using absolute_import
117 mercurial/localrepo.py not using absolute_import
118 mercurial/lsprof.py requires print_function
118 mercurial/lsprof.py requires print_function
119 mercurial/lsprofcalltree.py not using absolute_import
119 mercurial/lsprofcalltree.py not using absolute_import
120 mercurial/lsprofcalltree.py requires print_function
120 mercurial/lsprofcalltree.py requires print_function
121 mercurial/mail.py requires print_function
121 mercurial/mail.py requires print_function
122 mercurial/manifest.py not using absolute_import
122 mercurial/manifest.py not using absolute_import
123 mercurial/mdiff.py not using absolute_import
123 mercurial/mdiff.py not using absolute_import
124 mercurial/patch.py not using absolute_import
124 mercurial/patch.py not using absolute_import
125 mercurial/pure/osutil.py not using absolute_import
126 mercurial/pure/parsers.py not using absolute_import
125 mercurial/pure/parsers.py not using absolute_import
127 mercurial/pvec.py not using absolute_import
126 mercurial/pvec.py not using absolute_import
128 mercurial/py3kcompat.py not using absolute_import
127 mercurial/py3kcompat.py not using absolute_import
129 mercurial/revlog.py not using absolute_import
128 mercurial/revlog.py not using absolute_import
130 mercurial/scmposix.py not using absolute_import
129 mercurial/scmposix.py not using absolute_import
131 mercurial/scmutil.py not using absolute_import
130 mercurial/scmutil.py not using absolute_import
132 mercurial/scmwindows.py not using absolute_import
131 mercurial/scmwindows.py not using absolute_import
133 mercurial/similar.py not using absolute_import
132 mercurial/similar.py not using absolute_import
134 mercurial/store.py not using absolute_import
133 mercurial/store.py not using absolute_import
135 mercurial/util.py not using absolute_import
134 mercurial/util.py not using absolute_import
136 mercurial/windows.py not using absolute_import
135 mercurial/windows.py not using absolute_import
137 setup.py not using absolute_import
136 setup.py not using absolute_import
138 tests/filterpyflakes.py requires print_function
137 tests/filterpyflakes.py requires print_function
139 tests/generate-working-copy-states.py requires print_function
138 tests/generate-working-copy-states.py requires print_function
140 tests/get-with-headers.py requires print_function
139 tests/get-with-headers.py requires print_function
141 tests/heredoctest.py requires print_function
140 tests/heredoctest.py requires print_function
142 tests/hypothesishelpers.py not using absolute_import
141 tests/hypothesishelpers.py not using absolute_import
143 tests/hypothesishelpers.py requires print_function
142 tests/hypothesishelpers.py requires print_function
144 tests/killdaemons.py not using absolute_import
143 tests/killdaemons.py not using absolute_import
145 tests/md5sum.py not using absolute_import
144 tests/md5sum.py not using absolute_import
146 tests/mockblackbox.py not using absolute_import
145 tests/mockblackbox.py not using absolute_import
147 tests/printenv.py not using absolute_import
146 tests/printenv.py not using absolute_import
148 tests/readlink.py not using absolute_import
147 tests/readlink.py not using absolute_import
149 tests/readlink.py requires print_function
148 tests/readlink.py requires print_function
150 tests/revlog-formatv0.py not using absolute_import
149 tests/revlog-formatv0.py not using absolute_import
151 tests/run-tests.py not using absolute_import
150 tests/run-tests.py not using absolute_import
152 tests/seq.py not using absolute_import
151 tests/seq.py not using absolute_import
153 tests/seq.py requires print_function
152 tests/seq.py requires print_function
154 tests/silenttestrunner.py not using absolute_import
153 tests/silenttestrunner.py not using absolute_import
155 tests/silenttestrunner.py requires print_function
154 tests/silenttestrunner.py requires print_function
156 tests/sitecustomize.py not using absolute_import
155 tests/sitecustomize.py not using absolute_import
157 tests/svn-safe-append.py not using absolute_import
156 tests/svn-safe-append.py not using absolute_import
158 tests/svnxml.py not using absolute_import
157 tests/svnxml.py not using absolute_import
159 tests/test-ancestor.py requires print_function
158 tests/test-ancestor.py requires print_function
160 tests/test-atomictempfile.py not using absolute_import
159 tests/test-atomictempfile.py not using absolute_import
161 tests/test-batching.py not using absolute_import
160 tests/test-batching.py not using absolute_import
162 tests/test-batching.py requires print_function
161 tests/test-batching.py requires print_function
163 tests/test-bdiff.py not using absolute_import
162 tests/test-bdiff.py not using absolute_import
164 tests/test-bdiff.py requires print_function
163 tests/test-bdiff.py requires print_function
165 tests/test-context.py not using absolute_import
164 tests/test-context.py not using absolute_import
166 tests/test-context.py requires print_function
165 tests/test-context.py requires print_function
167 tests/test-demandimport.py not using absolute_import
166 tests/test-demandimport.py not using absolute_import
168 tests/test-demandimport.py requires print_function
167 tests/test-demandimport.py requires print_function
169 tests/test-dispatch.py not using absolute_import
168 tests/test-dispatch.py not using absolute_import
170 tests/test-dispatch.py requires print_function
169 tests/test-dispatch.py requires print_function
171 tests/test-doctest.py not using absolute_import
170 tests/test-doctest.py not using absolute_import
172 tests/test-duplicateoptions.py not using absolute_import
171 tests/test-duplicateoptions.py not using absolute_import
173 tests/test-duplicateoptions.py requires print_function
172 tests/test-duplicateoptions.py requires print_function
174 tests/test-filecache.py not using absolute_import
173 tests/test-filecache.py not using absolute_import
175 tests/test-filecache.py requires print_function
174 tests/test-filecache.py requires print_function
176 tests/test-filelog.py not using absolute_import
175 tests/test-filelog.py not using absolute_import
177 tests/test-filelog.py requires print_function
176 tests/test-filelog.py requires print_function
178 tests/test-hg-parseurl.py not using absolute_import
177 tests/test-hg-parseurl.py not using absolute_import
179 tests/test-hg-parseurl.py requires print_function
178 tests/test-hg-parseurl.py requires print_function
180 tests/test-hgweb-auth.py not using absolute_import
179 tests/test-hgweb-auth.py not using absolute_import
181 tests/test-hgweb-auth.py requires print_function
180 tests/test-hgweb-auth.py requires print_function
182 tests/test-hgwebdir-paths.py not using absolute_import
181 tests/test-hgwebdir-paths.py not using absolute_import
183 tests/test-hybridencode.py not using absolute_import
182 tests/test-hybridencode.py not using absolute_import
184 tests/test-hybridencode.py requires print_function
183 tests/test-hybridencode.py requires print_function
185 tests/test-lrucachedict.py not using absolute_import
184 tests/test-lrucachedict.py not using absolute_import
186 tests/test-lrucachedict.py requires print_function
185 tests/test-lrucachedict.py requires print_function
187 tests/test-manifest.py not using absolute_import
186 tests/test-manifest.py not using absolute_import
188 tests/test-minirst.py not using absolute_import
187 tests/test-minirst.py not using absolute_import
189 tests/test-minirst.py requires print_function
188 tests/test-minirst.py requires print_function
190 tests/test-parseindex2.py not using absolute_import
189 tests/test-parseindex2.py not using absolute_import
191 tests/test-parseindex2.py requires print_function
190 tests/test-parseindex2.py requires print_function
192 tests/test-pathencode.py not using absolute_import
191 tests/test-pathencode.py not using absolute_import
193 tests/test-pathencode.py requires print_function
192 tests/test-pathencode.py requires print_function
194 tests/test-propertycache.py not using absolute_import
193 tests/test-propertycache.py not using absolute_import
195 tests/test-propertycache.py requires print_function
194 tests/test-propertycache.py requires print_function
196 tests/test-revlog-ancestry.py not using absolute_import
195 tests/test-revlog-ancestry.py not using absolute_import
197 tests/test-revlog-ancestry.py requires print_function
196 tests/test-revlog-ancestry.py requires print_function
198 tests/test-run-tests.py not using absolute_import
197 tests/test-run-tests.py not using absolute_import
199 tests/test-simplemerge.py not using absolute_import
198 tests/test-simplemerge.py not using absolute_import
200 tests/test-status-inprocess.py not using absolute_import
199 tests/test-status-inprocess.py not using absolute_import
201 tests/test-status-inprocess.py requires print_function
200 tests/test-status-inprocess.py requires print_function
202 tests/test-symlink-os-yes-fs-no.py not using absolute_import
201 tests/test-symlink-os-yes-fs-no.py not using absolute_import
203 tests/test-trusted.py not using absolute_import
202 tests/test-trusted.py not using absolute_import
204 tests/test-trusted.py requires print_function
203 tests/test-trusted.py requires print_function
205 tests/test-ui-color.py not using absolute_import
204 tests/test-ui-color.py not using absolute_import
206 tests/test-ui-color.py requires print_function
205 tests/test-ui-color.py requires print_function
207 tests/test-ui-config.py not using absolute_import
206 tests/test-ui-config.py not using absolute_import
208 tests/test-ui-config.py requires print_function
207 tests/test-ui-config.py requires print_function
209 tests/test-ui-verbosity.py not using absolute_import
208 tests/test-ui-verbosity.py not using absolute_import
210 tests/test-ui-verbosity.py requires print_function
209 tests/test-ui-verbosity.py requires print_function
211 tests/test-url.py not using absolute_import
210 tests/test-url.py not using absolute_import
212 tests/test-url.py requires print_function
211 tests/test-url.py requires print_function
213 tests/test-walkrepo.py requires print_function
212 tests/test-walkrepo.py requires print_function
214 tests/test-wireproto.py requires print_function
213 tests/test-wireproto.py requires print_function
215 tests/tinyproxy.py requires print_function
214 tests/tinyproxy.py requires print_function
General Comments 0
You need to be logged in to leave comments. Login now