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"), |