##// END OF EJS Templates
py3: have check-py3-compat require pygments to get stable result
Yuya Nishihara -
r29809:70256934 default
parent child Browse files
Show More
@@ -1,565 +1,575 b''
1 1 from __future__ import absolute_import
2 2
3 3 import errno
4 4 import os
5 5 import re
6 6 import socket
7 7 import stat
8 8 import subprocess
9 9 import sys
10 10 import tempfile
11 11
12 12 tempprefix = 'hg-hghave-'
13 13
14 14 checks = {
15 15 "true": (lambda: True, "yak shaving"),
16 16 "false": (lambda: False, "nail clipper"),
17 17 }
18 18
19 19 def check(name, desc):
20 20 """Registers a check function for a feature."""
21 21 def decorator(func):
22 22 checks[name] = (func, desc)
23 23 return func
24 24 return decorator
25 25
26 26 def checkvers(name, desc, vers):
27 27 """Registers a check function for each of a series of versions.
28 28
29 29 vers can be a list or an iterator"""
30 30 def decorator(func):
31 31 def funcv(v):
32 32 def f():
33 33 return func(v)
34 34 return f
35 35 for v in vers:
36 36 v = str(v)
37 37 f = funcv(v)
38 38 checks['%s%s' % (name, v.replace('.', ''))] = (f, desc % v)
39 39 return func
40 40 return decorator
41 41
42 42 def checkfeatures(features):
43 43 result = {
44 44 'error': [],
45 45 'missing': [],
46 46 'skipped': [],
47 47 }
48 48
49 49 for feature in features:
50 50 negate = feature.startswith('no-')
51 51 if negate:
52 52 feature = feature[3:]
53 53
54 54 if feature not in checks:
55 55 result['missing'].append(feature)
56 56 continue
57 57
58 58 check, desc = checks[feature]
59 59 try:
60 60 available = check()
61 61 except Exception:
62 62 result['error'].append('hghave check failed: %s' % feature)
63 63 continue
64 64
65 65 if not negate and not available:
66 66 result['skipped'].append('missing feature: %s' % desc)
67 67 elif negate and available:
68 68 result['skipped'].append('system supports %s' % desc)
69 69
70 70 return result
71 71
72 72 def require(features):
73 73 """Require that features are available, exiting if not."""
74 74 result = checkfeatures(features)
75 75
76 76 for missing in result['missing']:
77 77 sys.stderr.write('skipped: unknown feature: %s\n' % missing)
78 78 for msg in result['skipped']:
79 79 sys.stderr.write('skipped: %s\n' % msg)
80 80 for msg in result['error']:
81 81 sys.stderr.write('%s\n' % msg)
82 82
83 83 if result['missing']:
84 84 sys.exit(2)
85 85
86 86 if result['skipped'] or result['error']:
87 87 sys.exit(1)
88 88
89 89 def matchoutput(cmd, regexp, ignorestatus=False):
90 90 """Return the match object if cmd executes successfully and its output
91 91 is matched by the supplied regular expression.
92 92 """
93 93 r = re.compile(regexp)
94 94 try:
95 95 p = subprocess.Popen(
96 96 cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
97 97 except OSError as e:
98 98 if e.errno != errno.ENOENT:
99 99 raise
100 100 ret = -1
101 101 ret = p.wait()
102 102 s = p.stdout.read()
103 103 return (ignorestatus or not ret) and r.search(s)
104 104
105 105 @check("baz", "GNU Arch baz client")
106 106 def has_baz():
107 107 return matchoutput('baz --version 2>&1', br'baz Bazaar version')
108 108
109 109 @check("bzr", "Canonical's Bazaar client")
110 110 def has_bzr():
111 111 try:
112 112 import bzrlib
113 113 return bzrlib.__doc__ is not None
114 114 except ImportError:
115 115 return False
116 116
117 117 @checkvers("bzr", "Canonical's Bazaar client >= %s", (1.14,))
118 118 def has_bzr_range(v):
119 119 major, minor = v.split('.')[0:2]
120 120 try:
121 121 import bzrlib
122 122 return (bzrlib.__doc__ is not None
123 123 and bzrlib.version_info[:2] >= (int(major), int(minor)))
124 124 except ImportError:
125 125 return False
126 126
127 127 @check("chg", "running with chg")
128 128 def has_chg():
129 129 return 'CHGHG' in os.environ
130 130
131 131 @check("cvs", "cvs client/server")
132 132 def has_cvs():
133 133 re = br'Concurrent Versions System.*?server'
134 134 return matchoutput('cvs --version 2>&1', re) and not has_msys()
135 135
136 136 @check("cvs112", "cvs client/server 1.12.* (not cvsnt)")
137 137 def has_cvs112():
138 138 re = br'Concurrent Versions System \(CVS\) 1.12.*?server'
139 139 return matchoutput('cvs --version 2>&1', re) and not has_msys()
140 140
141 141 @check("cvsnt", "cvsnt client/server")
142 142 def has_cvsnt():
143 143 re = br'Concurrent Versions System \(CVSNT\) (\d+).(\d+).*\(client/server\)'
144 144 return matchoutput('cvsnt --version 2>&1', re)
145 145
146 146 @check("darcs", "darcs client")
147 147 def has_darcs():
148 148 return matchoutput('darcs --version', br'2\.[2-9]', True)
149 149
150 150 @check("mtn", "monotone client (>= 1.0)")
151 151 def has_mtn():
152 152 return matchoutput('mtn --version', br'monotone', True) and not matchoutput(
153 153 'mtn --version', br'monotone 0\.', True)
154 154
155 155 @check("eol-in-paths", "end-of-lines in paths")
156 156 def has_eol_in_paths():
157 157 try:
158 158 fd, path = tempfile.mkstemp(dir='.', prefix=tempprefix, suffix='\n\r')
159 159 os.close(fd)
160 160 os.remove(path)
161 161 return True
162 162 except (IOError, OSError):
163 163 return False
164 164
165 165 @check("execbit", "executable bit")
166 166 def has_executablebit():
167 167 try:
168 168 EXECFLAGS = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
169 169 fh, fn = tempfile.mkstemp(dir='.', prefix=tempprefix)
170 170 try:
171 171 os.close(fh)
172 172 m = os.stat(fn).st_mode & 0o777
173 173 new_file_has_exec = m & EXECFLAGS
174 174 os.chmod(fn, m ^ EXECFLAGS)
175 175 exec_flags_cannot_flip = ((os.stat(fn).st_mode & 0o777) == m)
176 176 finally:
177 177 os.unlink(fn)
178 178 except (IOError, OSError):
179 179 # we don't care, the user probably won't be able to commit anyway
180 180 return False
181 181 return not (new_file_has_exec or exec_flags_cannot_flip)
182 182
183 183 @check("icasefs", "case insensitive file system")
184 184 def has_icasefs():
185 185 # Stolen from mercurial.util
186 186 fd, path = tempfile.mkstemp(dir='.', prefix=tempprefix)
187 187 os.close(fd)
188 188 try:
189 189 s1 = os.stat(path)
190 190 d, b = os.path.split(path)
191 191 p2 = os.path.join(d, b.upper())
192 192 if path == p2:
193 193 p2 = os.path.join(d, b.lower())
194 194 try:
195 195 s2 = os.stat(p2)
196 196 return s2 == s1
197 197 except OSError:
198 198 return False
199 199 finally:
200 200 os.remove(path)
201 201
202 202 @check("fifo", "named pipes")
203 203 def has_fifo():
204 204 if getattr(os, "mkfifo", None) is None:
205 205 return False
206 206 name = tempfile.mktemp(dir='.', prefix=tempprefix)
207 207 try:
208 208 os.mkfifo(name)
209 209 os.unlink(name)
210 210 return True
211 211 except OSError:
212 212 return False
213 213
214 214 @check("killdaemons", 'killdaemons.py support')
215 215 def has_killdaemons():
216 216 return True
217 217
218 218 @check("cacheable", "cacheable filesystem")
219 219 def has_cacheable_fs():
220 220 from mercurial import util
221 221
222 222 fd, path = tempfile.mkstemp(dir='.', prefix=tempprefix)
223 223 os.close(fd)
224 224 try:
225 225 return util.cachestat(path).cacheable()
226 226 finally:
227 227 os.remove(path)
228 228
229 229 @check("lsprof", "python lsprof module")
230 230 def has_lsprof():
231 231 try:
232 232 import _lsprof
233 233 _lsprof.Profiler # silence unused import warning
234 234 return True
235 235 except ImportError:
236 236 return False
237 237
238 238 def gethgversion():
239 239 m = matchoutput('hg --version --quiet 2>&1', br'(\d+)\.(\d+)')
240 240 if not m:
241 241 return (0, 0)
242 242 return (int(m.group(1)), int(m.group(2)))
243 243
244 244 @checkvers("hg", "Mercurial >= %s",
245 245 list([(1.0 * x) / 10 for x in range(9, 40)]))
246 246 def has_hg_range(v):
247 247 major, minor = v.split('.')[0:2]
248 248 return gethgversion() >= (int(major), int(minor))
249 249
250 250 @check("hg08", "Mercurial >= 0.8")
251 251 def has_hg08():
252 252 if checks["hg09"][0]():
253 253 return True
254 254 return matchoutput('hg help annotate 2>&1', '--date')
255 255
256 256 @check("hg07", "Mercurial >= 0.7")
257 257 def has_hg07():
258 258 if checks["hg08"][0]():
259 259 return True
260 260 return matchoutput('hg --version --quiet 2>&1', 'Mercurial Distributed SCM')
261 261
262 262 @check("hg06", "Mercurial >= 0.6")
263 263 def has_hg06():
264 264 if checks["hg07"][0]():
265 265 return True
266 266 return matchoutput('hg --version --quiet 2>&1', 'Mercurial version')
267 267
268 268 @check("gettext", "GNU Gettext (msgfmt)")
269 269 def has_gettext():
270 270 return matchoutput('msgfmt --version', br'GNU gettext-tools')
271 271
272 272 @check("git", "git command line client")
273 273 def has_git():
274 274 return matchoutput('git --version 2>&1', br'^git version')
275 275
276 276 @check("docutils", "Docutils text processing library")
277 277 def has_docutils():
278 278 try:
279 279 import docutils.core
280 280 docutils.core.publish_cmdline # silence unused import
281 281 return True
282 282 except ImportError:
283 283 return False
284 284
285 285 def getsvnversion():
286 286 m = matchoutput('svn --version --quiet 2>&1', br'^(\d+)\.(\d+)')
287 287 if not m:
288 288 return (0, 0)
289 289 return (int(m.group(1)), int(m.group(2)))
290 290
291 291 @checkvers("svn", "subversion client and admin tools >= %s", (1.3, 1.5))
292 292 def has_svn_range(v):
293 293 major, minor = v.split('.')[0:2]
294 294 return getsvnversion() >= (int(major), int(minor))
295 295
296 296 @check("svn", "subversion client and admin tools")
297 297 def has_svn():
298 298 return matchoutput('svn --version 2>&1', br'^svn, version') and \
299 299 matchoutput('svnadmin --version 2>&1', br'^svnadmin, version')
300 300
301 301 @check("svn-bindings", "subversion python bindings")
302 302 def has_svn_bindings():
303 303 try:
304 304 import svn.core
305 305 version = svn.core.SVN_VER_MAJOR, svn.core.SVN_VER_MINOR
306 306 if version < (1, 4):
307 307 return False
308 308 return True
309 309 except ImportError:
310 310 return False
311 311
312 312 @check("p4", "Perforce server and client")
313 313 def has_p4():
314 314 return (matchoutput('p4 -V', br'Rev\. P4/') and
315 315 matchoutput('p4d -V', br'Rev\. P4D/'))
316 316
317 317 @check("symlink", "symbolic links")
318 318 def has_symlink():
319 319 if getattr(os, "symlink", None) is None:
320 320 return False
321 321 name = tempfile.mktemp(dir='.', prefix=tempprefix)
322 322 try:
323 323 os.symlink(".", name)
324 324 os.unlink(name)
325 325 return True
326 326 except (OSError, AttributeError):
327 327 return False
328 328
329 329 @check("hardlink", "hardlinks")
330 330 def has_hardlink():
331 331 from mercurial import util
332 332 fh, fn = tempfile.mkstemp(dir='.', prefix=tempprefix)
333 333 os.close(fh)
334 334 name = tempfile.mktemp(dir='.', prefix=tempprefix)
335 335 try:
336 336 util.oslink(fn, name)
337 337 os.unlink(name)
338 338 return True
339 339 except OSError:
340 340 return False
341 341 finally:
342 342 os.unlink(fn)
343 343
344 344 @check("tla", "GNU Arch tla client")
345 345 def has_tla():
346 346 return matchoutput('tla --version 2>&1', br'The GNU Arch Revision')
347 347
348 348 @check("gpg", "gpg client")
349 349 def has_gpg():
350 350 return matchoutput('gpg --version 2>&1', br'GnuPG')
351 351
352 352 @check("gpg2", "gpg client v2")
353 353 def has_gpg2():
354 354 return matchoutput('gpg --version 2>&1', br'GnuPG[^0-9]+2\.')
355 355
356 356 @check("unix-permissions", "unix-style permissions")
357 357 def has_unix_permissions():
358 358 d = tempfile.mkdtemp(dir='.', prefix=tempprefix)
359 359 try:
360 360 fname = os.path.join(d, 'foo')
361 361 for umask in (0o77, 0o07, 0o22):
362 362 os.umask(umask)
363 363 f = open(fname, 'w')
364 364 f.close()
365 365 mode = os.stat(fname).st_mode
366 366 os.unlink(fname)
367 367 if mode & 0o777 != ~umask & 0o666:
368 368 return False
369 369 return True
370 370 finally:
371 371 os.rmdir(d)
372 372
373 373 @check("unix-socket", "AF_UNIX socket family")
374 374 def has_unix_socket():
375 375 return getattr(socket, 'AF_UNIX', None) is not None
376 376
377 377 @check("root", "root permissions")
378 378 def has_root():
379 379 return getattr(os, 'geteuid', None) and os.geteuid() == 0
380 380
381 381 @check("pyflakes", "Pyflakes python linter")
382 382 def has_pyflakes():
383 383 return matchoutput("sh -c \"echo 'import re' 2>&1 | pyflakes\"",
384 384 br"<stdin>:1: 're' imported but unused",
385 385 True)
386 386
387 387 @check("pygments", "Pygments source highlighting library")
388 388 def has_pygments():
389 389 try:
390 390 import pygments
391 391 pygments.highlight # silence unused import warning
392 392 return True
393 393 except ImportError:
394 394 return False
395 395
396 396 @check("outer-repo", "outer repo")
397 397 def has_outer_repo():
398 398 # failing for other reasons than 'no repo' imply that there is a repo
399 399 return not matchoutput('hg root 2>&1',
400 400 br'abort: no repository found', True)
401 401
402 402 @check("ssl", "ssl module available")
403 403 def has_ssl():
404 404 try:
405 405 import ssl
406 406 ssl.CERT_NONE
407 407 return True
408 408 except ImportError:
409 409 return False
410 410
411 411 @check("sslcontext", "python >= 2.7.9 ssl")
412 412 def has_sslcontext():
413 413 try:
414 414 import ssl
415 415 ssl.SSLContext
416 416 return True
417 417 except (ImportError, AttributeError):
418 418 return False
419 419
420 420 @check("defaultcacerts", "can verify SSL certs by system's CA certs store")
421 421 def has_defaultcacerts():
422 422 from mercurial import sslutil, ui as uimod
423 423 ui = uimod.ui()
424 424 return sslutil._defaultcacerts(ui) or sslutil._canloaddefaultcerts
425 425
426 426 @check("defaultcacertsloaded", "detected presence of loaded system CA certs")
427 427 def has_defaultcacertsloaded():
428 428 import ssl
429 429 from mercurial import sslutil, ui as uimod
430 430
431 431 if not has_defaultcacerts():
432 432 return False
433 433 if not has_sslcontext():
434 434 return False
435 435
436 436 ui = uimod.ui()
437 437 cafile = sslutil._defaultcacerts(ui)
438 438 ctx = ssl.create_default_context()
439 439 if cafile:
440 440 ctx.load_verify_locations(cafile=cafile)
441 441 else:
442 442 ctx.load_default_certs()
443 443
444 444 return len(ctx.get_ca_certs()) > 0
445 445
446 446 @check("tls1.2", "TLS 1.2 protocol support")
447 447 def has_tls1_2():
448 448 from mercurial import sslutil
449 449 return 'tls1.2' in sslutil.supportedprotocols
450 450
451 451 @check("windows", "Windows")
452 452 def has_windows():
453 453 return os.name == 'nt'
454 454
455 455 @check("system-sh", "system() uses sh")
456 456 def has_system_sh():
457 457 return os.name != 'nt'
458 458
459 459 @check("serve", "platform and python can manage 'hg serve -d'")
460 460 def has_serve():
461 461 return os.name != 'nt' # gross approximation
462 462
463 463 @check("test-repo", "running tests from repository")
464 464 def has_test_repo():
465 465 t = os.environ["TESTDIR"]
466 466 return os.path.isdir(os.path.join(t, "..", ".hg"))
467 467
468 468 @check("tic", "terminfo compiler and curses module")
469 469 def has_tic():
470 470 try:
471 471 import curses
472 472 curses.COLOR_BLUE
473 473 return matchoutput('test -x "`which tic`"', br'')
474 474 except ImportError:
475 475 return False
476 476
477 477 @check("msys", "Windows with MSYS")
478 478 def has_msys():
479 479 return os.getenv('MSYSTEM')
480 480
481 481 @check("aix", "AIX")
482 482 def has_aix():
483 483 return sys.platform.startswith("aix")
484 484
485 485 @check("osx", "OS X")
486 486 def has_osx():
487 487 return sys.platform == 'darwin'
488 488
489 489 @check("osxpackaging", "OS X packaging tools")
490 490 def has_osxpackaging():
491 491 try:
492 492 return (matchoutput('pkgbuild', br'Usage: pkgbuild ', ignorestatus=1)
493 493 and matchoutput(
494 494 'productbuild', br'Usage: productbuild ',
495 495 ignorestatus=1)
496 496 and matchoutput('lsbom', br'Usage: lsbom', ignorestatus=1)
497 497 and matchoutput(
498 498 'xar --help', br'Usage: xar', ignorestatus=1))
499 499 except ImportError:
500 500 return False
501 501
502 502 @check("docker", "docker support")
503 503 def has_docker():
504 504 pat = br'A self-sufficient runtime for'
505 505 if matchoutput('docker --help', pat):
506 506 if 'linux' not in sys.platform:
507 507 # TODO: in theory we should be able to test docker-based
508 508 # package creation on non-linux using boot2docker, but in
509 509 # practice that requires extra coordination to make sure
510 510 # $TESTTEMP is going to be visible at the same path to the
511 511 # boot2docker VM. If we figure out how to verify that, we
512 512 # can use the following instead of just saying False:
513 513 # return 'DOCKER_HOST' in os.environ
514 514 return False
515 515
516 516 return True
517 517 return False
518 518
519 519 @check("debhelper", "debian packaging tools")
520 520 def has_debhelper():
521 521 dpkg = matchoutput('dpkg --version',
522 522 br"Debian `dpkg' package management program")
523 523 dh = matchoutput('dh --help',
524 524 br'dh is a part of debhelper.', ignorestatus=True)
525 525 dh_py2 = matchoutput('dh_python2 --help',
526 526 br'other supported Python versions')
527 527 return dpkg and dh and dh_py2
528 528
529 529 @check("absimport", "absolute_import in __future__")
530 530 def has_absimport():
531 531 import __future__
532 532 from mercurial import util
533 533 return util.safehasattr(__future__, "absolute_import")
534 534
535 535 @check("py27+", "running with Python 2.7+")
536 536 def has_python27ornewer():
537 537 return sys.version_info[0:2] >= (2, 7)
538 538
539 539 @check("py3k", "running with Python 3.x")
540 540 def has_py3k():
541 541 return 3 == sys.version_info[0]
542 542
543 543 @check("py3exe", "a Python 3.x interpreter is available")
544 544 def has_python3exe():
545 545 return 'PYTHON3' in os.environ
546 546
547 @check("py3pygments", "Pygments available on Python 3.x")
548 def has_py3pygments():
549 if has_py3k():
550 return has_pygments()
551 elif has_python3exe():
552 # just check exit status (ignoring output)
553 py3 = os.environ['PYTHON3']
554 return matchoutput('%s -c "import pygments"' % py3, br'')
555 return False
556
547 557 @check("pure", "running with pure Python code")
548 558 def has_pure():
549 559 return any([
550 560 os.environ.get("HGMODULEPOLICY") == "py",
551 561 os.environ.get("HGTEST_RUN_TESTS_PURE") == "--pure",
552 562 ])
553 563
554 564 @check("slow", "allow slow tests")
555 565 def has_slow():
556 566 return os.environ.get('HGTEST_SLOW') == 'slow'
557 567
558 568 @check("hypothesis", "Hypothesis automated test generation")
559 569 def has_hypothesis():
560 570 try:
561 571 import hypothesis
562 572 hypothesis.given
563 573 return True
564 574 except ImportError:
565 575 return False
@@ -1,172 +1,172 b''
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 i18n/check-translation.py not using absolute_import
12 12 setup.py not using absolute_import
13 13 tests/test-demandimport.py not using absolute_import
14 14
15 #if py3exe
15 #if py3exe py3pygments
16 16 $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py
17 17 doc/hgmanpage.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
18 18 hgext/acl.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
19 19 hgext/automv.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
20 20 hgext/blackbox.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
21 21 hgext/bugzilla.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
22 22 hgext/censor.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
23 23 hgext/chgserver.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
24 24 hgext/children.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
25 25 hgext/churn.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
26 26 hgext/clonebundles.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
27 27 hgext/color.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
28 28 hgext/convert/bzr.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
29 29 hgext/convert/common.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
30 30 hgext/convert/convcmd.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
31 31 hgext/convert/cvs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
32 32 hgext/convert/cvsps.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
33 33 hgext/convert/darcs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
34 34 hgext/convert/filemap.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
35 35 hgext/convert/git.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
36 36 hgext/convert/gnuarch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
37 37 hgext/convert/hg.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
38 38 hgext/convert/monotone.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
39 39 hgext/convert/p4.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
40 40 hgext/convert/subversion.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
41 41 hgext/convert/transport.py: error importing module: <ImportError> No module named 'svn.client' (line *) (glob)
42 42 hgext/eol.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
43 43 hgext/extdiff.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
44 44 hgext/factotum.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
45 45 hgext/fetch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
46 46 hgext/fsmonitor/state.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
47 47 hgext/fsmonitor/watchmanclient.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
48 48 hgext/gpg.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
49 49 hgext/graphlog.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
50 50 hgext/hgk.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
51 hgext/highlight/highlight.py: error importing module: <ImportError> No module named 'pygments' (line 13)
51 hgext/highlight/highlight.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
52 52 hgext/histedit.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
53 53 hgext/journal.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
54 54 hgext/keyword.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
55 55 hgext/largefiles/basestore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
56 56 hgext/largefiles/lfcommands.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
57 57 hgext/largefiles/lfutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
58 58 hgext/largefiles/localstore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
59 59 hgext/largefiles/overrides.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
60 60 hgext/largefiles/proto.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
61 61 hgext/largefiles/remotestore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
62 62 hgext/largefiles/reposetup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
63 63 hgext/largefiles/storefactory.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
64 64 hgext/largefiles/uisetup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
65 65 hgext/largefiles/wirestore.py: error importing module: <SystemError> Parent module 'hgext.largefiles' not loaded, cannot perform relative import (line *) (glob)
66 66 hgext/mq.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
67 67 hgext/notify.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
68 68 hgext/pager.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
69 69 hgext/patchbomb.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
70 70 hgext/purge.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
71 71 hgext/rebase.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
72 72 hgext/record.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
73 73 hgext/relink.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
74 74 hgext/schemes.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
75 75 hgext/share.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
76 76 hgext/shelve.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
77 77 hgext/strip.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
78 78 hgext/transplant.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
79 79 hgext/win32mbcs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
80 80 hgext/win32text.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
81 81 mercurial/archival.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
82 82 mercurial/bookmarks.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
83 83 mercurial/branchmap.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
84 84 mercurial/bundle2.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
85 85 mercurial/bundlerepo.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
86 86 mercurial/byterange.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
87 87 mercurial/changegroup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
88 88 mercurial/changelog.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
89 89 mercurial/cmdutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
90 90 mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
91 91 mercurial/commandserver.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
92 92 mercurial/config.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
93 93 mercurial/context.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
94 94 mercurial/copies.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
95 95 mercurial/crecord.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
96 96 mercurial/dagparser.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
97 97 mercurial/dagutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
98 98 mercurial/destutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
99 99 mercurial/dirstate.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
100 100 mercurial/discovery.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
101 101 mercurial/dispatch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob)
102 102 mercurial/exchange.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
103 103 mercurial/extensions.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
104 104 mercurial/fancyopts.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
105 105 mercurial/filelog.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
106 106 mercurial/filemerge.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
107 107 mercurial/fileset.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
108 108 mercurial/formatter.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
109 109 mercurial/graphmod.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
110 110 mercurial/hbisect.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
111 111 mercurial/help.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
112 112 mercurial/hg.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
113 113 mercurial/hgweb/common.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
114 114 mercurial/hgweb/hgweb_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
115 115 mercurial/hgweb/hgwebdir_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
116 116 mercurial/hgweb/protocol.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
117 117 mercurial/hgweb/request.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
118 118 mercurial/hgweb/server.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
119 119 mercurial/hgweb/webcommands.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
120 120 mercurial/hgweb/webutil.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
121 121 mercurial/hgweb/wsgicgi.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
122 122 mercurial/hook.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
123 123 mercurial/httpconnection.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
124 124 mercurial/httppeer.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob)
125 125 mercurial/keepalive.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
126 126 mercurial/localrepo.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
127 127 mercurial/lock.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
128 128 mercurial/mail.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
129 129 mercurial/manifest.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
130 130 mercurial/match.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
131 131 mercurial/mdiff.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
132 132 mercurial/merge.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
133 133 mercurial/minirst.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
134 134 mercurial/namespaces.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
135 135 mercurial/obsolete.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
136 136 mercurial/patch.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
137 137 mercurial/pathutil.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
138 138 mercurial/peer.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
139 139 mercurial/profiling.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
140 140 mercurial/pushkey.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
141 141 mercurial/pvec.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
142 142 mercurial/registrar.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
143 143 mercurial/repair.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
144 144 mercurial/repoview.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
145 145 mercurial/revlog.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
146 146 mercurial/revset.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
147 147 mercurial/scmutil.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
148 148 mercurial/scmwindows.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
149 149 mercurial/similar.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
150 150 mercurial/simplemerge.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
151 151 mercurial/sshpeer.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
152 152 mercurial/sshserver.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
153 153 mercurial/sslutil.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
154 154 mercurial/statichttprepo.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
155 155 mercurial/store.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
156 156 mercurial/streamclone.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
157 157 mercurial/subrepo.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
158 158 mercurial/tagmerge.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
159 159 mercurial/tags.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
160 160 mercurial/templatefilters.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
161 161 mercurial/templatekw.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
162 162 mercurial/templater.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
163 163 mercurial/transaction.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
164 164 mercurial/ui.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
165 165 mercurial/unionrepo.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
166 166 mercurial/url.py: error importing: <TypeError> __slots__ items must be strings, not 'bytes' (error at util.py:558)
167 167 mercurial/verify.py: error importing module: <TypeError> unorderable types: str() >= tuple() (line 884)
168 168 mercurial/win32.py: error importing module: <ImportError> No module named 'msvcrt' (line *) (glob)
169 169 mercurial/windows.py: error importing module: <ImportError> No module named 'msvcrt' (line *) (glob)
170 170 mercurial/wireproto.py: error importing module: <TypeError> unorderable types: str() >= tuple() (line 884)
171 171
172 172 #endif
General Comments 0
You need to be logged in to leave comments. Login now