Mercurial > hg-stable
comparison contrib/check-code.py @ 37890:8fb9985382be
pycompat: export queue module instead of symbols in module (API)
Previously, pycompat and util re-exported individual symbols from the
queue module. This had the side-effect of forcing the loading of the
queue module whenever pycompat/util was imported.
These symbols aren't used very often. So importing the module to
get a handle on the symbols is wasteful.
This commit changes pycompat so it no longer exports the individual
symbols in the queue module. Instead, we make the imported module
a "public" symbol. We drop the individual symbol aliases from the
util module. All consumers are updated to use pycompat.queue.* instead.
This change makes 300 invocations of `hg log -r. -T '{rev}\n'` a little
faster:
before: 18.44s
after: 17.87s
Differential Revision: https://phab.mercurial-scm.org/D3441
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 05 May 2018 18:35:16 -0700 |
parents | 79af9ae46a78 |
children | 882ef6949bdc |
comparison
equal
deleted
inserted
replaced
37889:670eb4fa1b86 | 37890:8fb9985382be |
---|---|
338 # XXX only catch mutable arguments on the first line of the definition | 338 # XXX only catch mutable arguments on the first line of the definition |
339 (r'def.*[( ]\w+=\{\}', "don't use mutable default arguments"), | 339 (r'def.*[( ]\w+=\{\}', "don't use mutable default arguments"), |
340 (r'\butil\.Abort\b', "directly use error.Abort"), | 340 (r'\butil\.Abort\b', "directly use error.Abort"), |
341 (r'^@(\w*\.)?cachefunc', "module-level @cachefunc is risky, please avoid"), | 341 (r'^@(\w*\.)?cachefunc', "module-level @cachefunc is risky, please avoid"), |
342 (r'^import atexit', "don't use atexit, use ui.atexit"), | 342 (r'^import atexit', "don't use atexit, use ui.atexit"), |
343 (r'^import Queue', "don't use Queue, use util.queue + util.empty"), | 343 (r'^import Queue', "don't use Queue, use pycompat.queue.Queue + " |
344 "pycompat.queue.Empty"), | |
344 (r'^import cStringIO', "don't use cStringIO.StringIO, use util.stringio"), | 345 (r'^import cStringIO', "don't use cStringIO.StringIO, use util.stringio"), |
345 (r'^import urllib', "don't use urllib, use util.urlreq/util.urlerr"), | 346 (r'^import urllib', "don't use urllib, use util.urlreq/util.urlerr"), |
346 (r'^import SocketServer', "don't use SockerServer, use util.socketserver"), | 347 (r'^import SocketServer', "don't use SockerServer, use util.socketserver"), |
347 (r'^import urlparse', "don't use urlparse, use util.urlreq"), | 348 (r'^import urlparse', "don't use urlparse, use util.urlreq"), |
348 (r'^import xmlrpclib', "don't use xmlrpclib, use util.xmlrpclib"), | 349 (r'^import xmlrpclib', "don't use xmlrpclib, use util.xmlrpclib"), |