mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-04-22 15:14:44 +00:00
Changes for future Python 3.x compatibility
Replace backticks with repr(), replace .has_key() with "in". git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@3680 e7d03fd6-7b0d-0410-9947-9c21f3af8025
This commit is contained in:
parent
0e6c1494c9
commit
4ce0ddd166
22 changed files with 47 additions and 50 deletions
|
|
@ -182,7 +182,7 @@ class HttpUrl (internpaturl.InternPatternUrl, proxysupport.ProxySupport):
|
|||
self.method = "HEAD"
|
||||
# check the http connection
|
||||
response = self.check_http_connection()
|
||||
if self.headers and self.headers.has_key("Server"):
|
||||
if self.headers and "Server" in self.headers:
|
||||
server = self.headers['Server']
|
||||
else:
|
||||
server = _("unknown")
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ class MailtoUrl (urlbase.UrlBase):
|
|||
self.headers = {}
|
||||
self.addresses = email.Utils.getaddresses([self.cutout_addresses()])
|
||||
for key in ("to", "cc", "bcc"):
|
||||
if self.headers.has_key(key):
|
||||
if key in self.headers:
|
||||
for val in self.headers[key]:
|
||||
a = urllib.unquote(val)
|
||||
self.addresses.extend(email.Utils.getaddresses([a]))
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class TestFcgi (unittest.TestCase):
|
|||
doc = ['<HTML><HEAD><TITLE>FCGI TestApp</TITLE></HEAD>\n'
|
||||
'<BODY>\n']
|
||||
doc.append('<H2>FCGI TestApp</H2><P>')
|
||||
if req.env.has_key('CONTENT_LENGTH'):
|
||||
if 'CONTENT_LENGTH' in req.env:
|
||||
cl = int(req.env['CONTENT_LENGTH'])
|
||||
doc.append('<br><b>POST data (%s):</b><br><pre>' % cl)
|
||||
keys = fs.keys()
|
||||
|
|
|
|||
|
|
@ -90,8 +90,8 @@ class LCConfigParser (ConfigParser.RawConfigParser, object):
|
|||
for val in filelist:
|
||||
val = val.strip()
|
||||
# no file output for the blacklist and none Logger
|
||||
if linkcheck.Loggers.has_key(val) and \
|
||||
val not in ["blacklist", "none"]:
|
||||
if val in linkcheck.Loggers and \
|
||||
val not in ("blacklist", "none"):
|
||||
output = self.config.logger_new(val, fileoutput=1)
|
||||
self.config['fileoutput'].append(output)
|
||||
if self.has_option(section, "interactive"):
|
||||
|
|
|
|||
|
|
@ -68,13 +68,13 @@ class ListDict (dict):
|
|||
self._keys = []
|
||||
|
||||
def setdefault (self, key, *args):
|
||||
if not self.has_key(key):
|
||||
if key not in self:
|
||||
self._keys.append(key)
|
||||
return super(ListDict, self).setdefault(key, *args)
|
||||
|
||||
def __setitem__ (self, key, value):
|
||||
"""Add key,value to dict, append key to sorted list."""
|
||||
if not self.has_key(key):
|
||||
if key not in self:
|
||||
self._keys.append(key)
|
||||
super(ListDict, self).__setitem__(key, value)
|
||||
|
||||
|
|
|
|||
|
|
@ -360,7 +360,7 @@ def from_headers (strheader):
|
|||
"""
|
||||
fp = StringIO.StringIO(strheader)
|
||||
headers = rfc822.Message(fp, seekable=True)
|
||||
if not headers.has_key("Host"):
|
||||
if "Host" not in headers:
|
||||
raise ValueError("Required header 'Host:' missing")
|
||||
host = headers["Host"]
|
||||
scheme = headers.get("Scheme", "http")
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ class Message(object):
|
|||
self.first = True
|
||||
|
||||
def __repr__(self):
|
||||
return '<DNS message, ID ' + `self.id` + '>'
|
||||
return '<DNS message, ID %r>' % self.id
|
||||
|
||||
def __str__(self):
|
||||
return self.to_text()
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class NameDict(dict):
|
|||
depth = self.max_depth
|
||||
for i in xrange(-depth, 0):
|
||||
n = linkcheck.dns.name.Name(name[i:])
|
||||
if self.has_key(n):
|
||||
if n in self:
|
||||
return (n, self[n])
|
||||
v = self[linkcheck.dns.name.empty]
|
||||
return (linkcheck.dns.name.empty, v)
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ def to_text(value):
|
|||
raise ValueError, "class must be between >= 0 and <= 65535"
|
||||
text = _by_value.get(value)
|
||||
if text is None:
|
||||
text = 'CLASS' + `value`
|
||||
text = 'CLASS' + repr(value)
|
||||
return text
|
||||
|
||||
def is_metaclass(rdclass):
|
||||
|
|
@ -110,6 +110,4 @@ def is_metaclass(rdclass):
|
|||
@type rdclass: int
|
||||
@rtype: bool"""
|
||||
|
||||
if _metaclasses.has_key(rdclass):
|
||||
return True
|
||||
return False
|
||||
return rdclass in _metaclasses
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ def to_text(value):
|
|||
raise ValueError, "type must be between >= 0 and <= 65535"
|
||||
text = _by_value.get(value)
|
||||
if text is None:
|
||||
text = 'TYPE' + `value`
|
||||
text = 'TYPE' + repr(value)
|
||||
return text
|
||||
|
||||
def is_metatype(rdtype):
|
||||
|
|
@ -201,9 +201,7 @@ def is_metatype(rdtype):
|
|||
@type rdtype: int
|
||||
@rtype: bool"""
|
||||
|
||||
if rdtype >= TKEY and rdtype <= ANY or _metatypes.has_key(rdtype):
|
||||
return True
|
||||
return False
|
||||
return rdtype >= TKEY and rdtype <= ANY or rdtype in _metatypes
|
||||
|
||||
def is_singleton(rdtype):
|
||||
"""True if the type is a singleton.
|
||||
|
|
@ -211,6 +209,4 @@ def is_singleton(rdtype):
|
|||
@type rdtype: int
|
||||
@rtype: bool"""
|
||||
|
||||
if _singletons.has_key(rdtype):
|
||||
return True
|
||||
return False
|
||||
return rdtype in _singletons
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ class Cache(object):
|
|||
@type key: (linkcheck.dns.name.Name, int, int) tuple or None
|
||||
"""
|
||||
if not key is None:
|
||||
if self.data.has_key(key):
|
||||
if key in self.data:
|
||||
del self.data[key]
|
||||
else:
|
||||
self.data = {}
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ class Zone(object):
|
|||
"""
|
||||
|
||||
name = self._validate_name(name)
|
||||
if self.nodes.has_key(name):
|
||||
if name in self.nodes:
|
||||
del self.nodes[name]
|
||||
|
||||
def find_rdataset(self, name, rdtype, covers=linkcheck.dns.rdatatype.NONE,
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ def HandleManTypes (r, conn):
|
|||
'FCGI_MAX_REQS' : FCGI_MAX_REQS,
|
||||
'FCGI_MPXS_CONNS': FCGI_MPXS_CONNS}
|
||||
for i in r.values.keys():
|
||||
if _vars.has_key(i):
|
||||
if i in _vars:
|
||||
v[i] = _vars[i]
|
||||
r.values = _vars
|
||||
r.write_record(conn)
|
||||
|
|
@ -397,7 +397,7 @@ class FCGI (object):
|
|||
self.env = os.environ
|
||||
self.stdin, self.out, self.err = sys.stdin, sys.stdout, sys.stderr
|
||||
|
||||
if os.environ.has_key('FCGI_WEB_SERVER_ADDRS'):
|
||||
if 'FCGI_WEB_SERVER_ADDRS' in os.environ:
|
||||
addrs = os.environ['FCGI_WEB_SERVER_ADDRS'].split(',')
|
||||
good_addrs = [ addr.strip() for addr in addrs ]
|
||||
else:
|
||||
|
|
@ -494,7 +494,7 @@ class FCGI (object):
|
|||
|
||||
def getFieldStorage (self):
|
||||
method = 'GET'
|
||||
if self.env.has_key('REQUEST_METHOD'):
|
||||
if 'REQUEST_METHOD' in self.env:
|
||||
method = self.env['REQUEST_METHOD'].upper()
|
||||
if method == 'GET':
|
||||
return cgi.FieldStorage(environ=self.env, keep_blank_values=1)
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ def get_headers_lang (headers):
|
|||
"""
|
||||
Return preferred supported language in given HTTP headers.
|
||||
"""
|
||||
if not headers.has_key('Accept-Language'):
|
||||
if 'Accept-Language' not in headers:
|
||||
return default_language
|
||||
languages = headers['Accept-Language'].split(",")
|
||||
# sort with preference values
|
||||
|
|
|
|||
|
|
@ -84,9 +84,9 @@ def checklink (out=sys.stdout, form=None, env=os.environ):
|
|||
config["recursionlevel"] = int(form["level"].value)
|
||||
config["logger"] = config.logger_new('html', fd=out)
|
||||
config["threads"] = 0
|
||||
if form.has_key("anchors"):
|
||||
if "anchors" in form:
|
||||
config["anchors"] = True
|
||||
if not form.has_key("errors"):
|
||||
if "errors" not in form:
|
||||
config["verbose"] = True
|
||||
# avoid checking of local files or other nasty stuff
|
||||
pat = "!^%s$" % linkcheck.url.safe_url_pattern
|
||||
|
|
@ -121,7 +121,7 @@ def checkform (form):
|
|||
only plain strings as exception text.
|
||||
"""
|
||||
# check lang support
|
||||
if form.has_key("language"):
|
||||
if "language" in form:
|
||||
lang = form['language'].value
|
||||
if lang in _supported_langs:
|
||||
os.environ['LC_MESSAGES'] = lang
|
||||
|
|
@ -129,7 +129,7 @@ def checkform (form):
|
|||
else:
|
||||
raise FormError(_("unsupported language"))
|
||||
# check url syntax
|
||||
if form.has_key("url"):
|
||||
if "url" in form:
|
||||
url = form["url"].value
|
||||
if not url or url == "http://":
|
||||
raise FormError(_("empty url was given"))
|
||||
|
|
@ -138,13 +138,13 @@ def checkform (form):
|
|||
else:
|
||||
raise FormError(_("no url was given"))
|
||||
# check recursion level
|
||||
if form.has_key("level"):
|
||||
if "level" in form:
|
||||
level = form["level"].value
|
||||
if not _is_level(level):
|
||||
raise FormError(_("invalid recursion level"))
|
||||
# check options
|
||||
for option in ("anchors", "errors", "intern"):
|
||||
if form.has_key(option):
|
||||
if option in form:
|
||||
if not form[option].value == "on":
|
||||
raise FormError(_("invalid %s option syntax") % option)
|
||||
|
||||
|
|
@ -158,12 +158,12 @@ def logit (form, env):
|
|||
elif type(_logfile) == types.StringType:
|
||||
_logfile = file(_logfile, "a")
|
||||
_logfile.write("\n"+linkcheck.strformat.strtime(time.time())+"\n")
|
||||
for var in ["HTTP_USER_AGENT", "REMOTE_ADDR",
|
||||
"REMOTE_HOST", "REMOTE_PORT"]:
|
||||
if env.has_key(var):
|
||||
for var in ("HTTP_USER_AGENT", "REMOTE_ADDR",
|
||||
"REMOTE_HOST", "REMOTE_PORT"):
|
||||
if var in env:
|
||||
_logfile.write(var+"="+env[var]+"\n")
|
||||
for key in ["level", "url", "anchors", "errors", "intern", "language"]:
|
||||
if form.has_key(key):
|
||||
for key in ("level", "url", "anchors", "errors", "intern", "language"):
|
||||
if key in form:
|
||||
_logfile.write(str(form[key])+"\n")
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class Logger (object):
|
|||
"""
|
||||
# what log parts should be in output
|
||||
self.logparts = None # log all parts
|
||||
if args.has_key('parts'):
|
||||
if 'parts' in args:
|
||||
if "all" not in args['parts']:
|
||||
# only log given parts
|
||||
self.logparts = args['parts']
|
||||
|
|
@ -88,7 +88,7 @@ class Logger (object):
|
|||
self.fd = None
|
||||
if args.get('fileoutput'):
|
||||
self.filename = os.path.expanduser(args['filename'])
|
||||
elif args.has_key('fd'):
|
||||
elif 'fd' in args:
|
||||
self.fd = args['fd']
|
||||
else:
|
||||
self.fd = sys.stdout
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ class DOTLogger (linkcheck.logger.Logger):
|
|||
Write one node and all possible edges.
|
||||
"""
|
||||
node = url_data
|
||||
if node.url and not self.nodes.has_key(node.url):
|
||||
if node.url and node.url not in self.nodes:
|
||||
node.id = self.nodeid
|
||||
self.nodes[node.url] = node
|
||||
self.nodeid += 1
|
||||
|
|
@ -92,7 +92,7 @@ class DOTLogger (linkcheck.logger.Logger):
|
|||
manner. Better would be a mapping of parent URLs.
|
||||
"""
|
||||
for node in self.nodes.itervalues():
|
||||
if self.nodes.has_key(node.parent_url):
|
||||
if node.parent_url in self.nodes:
|
||||
source = self.nodes[node.parent_url].id
|
||||
target = node.id
|
||||
self.writeln(u" %d -> %d [" % (source, target))
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ class GMLLogger (linkcheck.logger.Logger):
|
|||
Write one node and all possible edges.
|
||||
"""
|
||||
node = url_data
|
||||
if node.url and not self.nodes.has_key(node.url):
|
||||
if node.url and node.url not in self.nodes:
|
||||
node.id = self.nodeid
|
||||
self.nodes[node.url] = node
|
||||
self.nodeid += 1
|
||||
|
|
@ -94,7 +94,7 @@ class GMLLogger (linkcheck.logger.Logger):
|
|||
manner. Better would be a mapping of parent URLs.
|
||||
"""
|
||||
for node in self.nodes.itervalues():
|
||||
if self.nodes.has_key(node.parent_url):
|
||||
if node.parent_url in self.nodes:
|
||||
self.writeln(u" edge [")
|
||||
self.writeln(u' label "%s"' % (node.base_url or u""))
|
||||
if self.has_part("parenturl") and node.parent_url:
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ class GraphXMLLogger (xmllog.XMLLogger):
|
|||
Write one node and all possible edges.
|
||||
"""
|
||||
node = url_data
|
||||
if node.url and not self.nodes.has_key(node.url):
|
||||
if node.url and node.url not in self.nodes:
|
||||
node.id = self.nodeid
|
||||
self.nodes[node.url] = node
|
||||
self.nodeid += 1
|
||||
|
|
@ -77,7 +77,7 @@ class GraphXMLLogger (xmllog.XMLLogger):
|
|||
manner. Better would be a mapping of parent URLs.
|
||||
"""
|
||||
for node in self.nodes.itervalues():
|
||||
if self.nodes.has_key(node.parent_url):
|
||||
if node.parent_url in self.nodes:
|
||||
attrs = {
|
||||
u"source": u"%d" % self.nodes[node.parent_url].id,
|
||||
u"target": u"%d" % node.id,
|
||||
|
|
|
|||
|
|
@ -213,10 +213,13 @@ class TestCaselessDict (unittest.TestCase):
|
|||
self.d.clear()
|
||||
self.assert_(not self.d)
|
||||
|
||||
def test_has_key (self):
|
||||
def test_containment (self):
|
||||
self.assert_(not self.d)
|
||||
self.assert_("A" not in self.d)
|
||||
self.assert_("a" not in self.d)
|
||||
self.d["a"] = 5
|
||||
self.assert_(self.d.has_key("A"))
|
||||
self.assert_("A" in self.d)
|
||||
self.assert_("a" in self.d)
|
||||
|
||||
def test_setdefault (self):
|
||||
self.assert_(not self.d)
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ def parse_qsl (qs, keep_blank_values=0, strict_parsing=0):
|
|||
nv = name_value.split('=', 1)
|
||||
if len(nv) != 2:
|
||||
if strict_parsing:
|
||||
raise ValueError("bad query field: %s" % `name_value`)
|
||||
raise ValueError("bad query field: %r" % name_value)
|
||||
elif len(nv) == 1:
|
||||
# None value indicates missing equal sign
|
||||
nv = (nv[0], None)
|
||||
|
|
|
|||
2
setup.py
2
setup.py
|
|
@ -121,7 +121,7 @@ class MyInstall (install, object):
|
|||
opt_name = opt[0]
|
||||
if opt_name[-1] == "=":
|
||||
opt_name = opt_name[0:-1]
|
||||
if self.negative_opt.has_key(opt_name):
|
||||
if opt_name in self.negative_opt:
|
||||
opt_name = string.translate(self.negative_opt[opt_name],
|
||||
longopt_xlate)
|
||||
val = not getattr(self, opt_name)
|
||||
|
|
|
|||
Loading…
Reference in a new issue