Skip to content

Commit 54f0222

Browse files
committed
SF 563203. Replaced 'has_key()' with 'in'.
1 parent 9d5e4aa commit 54f0222

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+243
-222
lines changed

Lib/ConfigParser.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ def add_section(self, section):
191191
Raise DuplicateSectionError if a section by the specified name
192192
already exists.
193193
"""
194-
if self.__sections.has_key(section):
194+
if section in self.__sections:
195195
raise DuplicateSectionError(section)
196196
self.__sections[section] = {}
197197

@@ -209,7 +209,7 @@ def options(self, section):
209209
except KeyError:
210210
raise NoSectionError(section)
211211
opts.update(self.__defaults)
212-
if opts.has_key('__name__'):
212+
if '__name__' in opts:
213213
del opts['__name__']
214214
return opts.keys()
215215

@@ -310,7 +310,7 @@ def getboolean(self, section, option):
310310
states = {'1': 1, 'yes': 1, 'true': 1, 'on': 1,
311311
'0': 0, 'no': 0, 'false': 0, 'off': 0}
312312
v = self.get(section, option)
313-
if not states.has_key(v.lower()):
313+
if not v.lower() in states:
314314
raise ValueError, 'Not a boolean: %s' % v
315315
return states[v.lower()]
316316

@@ -320,12 +320,12 @@ def optionxform(self, optionstr):
320320
def has_option(self, section, option):
321321
"""Check for the existence of a given option in a given section."""
322322
if not section or section == "DEFAULT":
323-
return self.__defaults.has_key(option)
323+
return option in self.__defaults
324324
elif not self.has_section(section):
325325
return 0
326326
else:
327327
option = self.optionxform(option)
328-
return self.__sections[section].has_key(option)
328+
return option in self.__sections[section]
329329

330330
def set(self, section, option, value):
331331
"""Set an option."""
@@ -365,14 +365,14 @@ def remove_option(self, section, option):
365365
except KeyError:
366366
raise NoSectionError(section)
367367
option = self.optionxform(option)
368-
existed = sectdict.has_key(option)
368+
existed = option in sectdict
369369
if existed:
370370
del sectdict[option]
371371
return existed
372372

373373
def remove_section(self, section):
374374
"""Remove a file section."""
375-
if self.__sections.has_key(section):
375+
if section in self.__sections:
376376
del self.__sections[section]
377377
return True
378378
else:
@@ -433,7 +433,7 @@ def __read(self, fp, fpname):
433433
mo = self.SECTCRE.match(line)
434434
if mo:
435435
sectname = mo.group('header')
436-
if self.__sections.has_key(sectname):
436+
if sectname in self.__sections:
437437
cursect = self.__sections[sectname]
438438
elif sectname == DEFAULTSECT:
439439
cursect = self.__defaults

Lib/SimpleHTTPServer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,10 @@ def guess_type(self, path):
175175
"""
176176

177177
base, ext = posixpath.splitext(path)
178-
if self.extensions_map.has_key(ext):
178+
if ext in self.extensions_map:
179179
return self.extensions_map[ext]
180180
ext = ext.lower()
181-
if self.extensions_map.has_key(ext):
181+
if ext in self.extensions_map:
182182
return self.extensions_map[ext]
183183
else:
184184
return self.extensions_map['']

Lib/anydbm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
# such key)
2626
del d[key] # delete data stored at key (raises KeyError
2727
# if no such key)
28-
flag = d.has_key(key) # true if the key exists
28+
flag = key in d # true if the key exists
2929
list = d.keys() # return a list of all existing keys (slow!)
3030
3131
Future versions may change the order in which implementations are

Lib/bdb.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def stop_here(self, frame):
103103

104104
def break_here(self, frame):
105105
filename = self.canonic(frame.f_code.co_filename)
106-
if not self.breaks.has_key(filename):
106+
if not filename in self.breaks:
107107
return False
108108
lineno = frame.f_lineno
109109
if not lineno in self.breaks[filename]:
@@ -211,7 +211,7 @@ def set_break(self, filename, lineno, temporary=0, cond = None):
211211
if not line:
212212
return 'Line %s:%d does not exist' % (filename,
213213
lineno)
214-
if not self.breaks.has_key(filename):
214+
if not filename in self.breaks:
215215
self.breaks[filename] = []
216216
list = self.breaks[filename]
217217
if not lineno in list:
@@ -220,7 +220,7 @@ def set_break(self, filename, lineno, temporary=0, cond = None):
220220

221221
def clear_break(self, filename, lineno):
222222
filename = self.canonic(filename)
223-
if not self.breaks.has_key(filename):
223+
if not filename in self.breaks:
224224
return 'There are no breakpoints in %s' % filename
225225
if lineno not in self.breaks[filename]:
226226
return 'There is no breakpoint at %s:%d' % (filename,
@@ -249,7 +249,7 @@ def clear_bpbynumber(self, arg):
249249

250250
def clear_all_file_breaks(self, filename):
251251
filename = self.canonic(filename)
252-
if not self.breaks.has_key(filename):
252+
if not filename in self.breaks:
253253
return 'There are no breakpoints in %s' % filename
254254
for line in self.breaks[filename]:
255255
blist = Breakpoint.bplist[filename, line]
@@ -267,18 +267,18 @@ def clear_all_breaks(self):
267267

268268
def get_break(self, filename, lineno):
269269
filename = self.canonic(filename)
270-
return self.breaks.has_key(filename) and \
270+
return filename in self.breaks and \
271271
lineno in self.breaks[filename]
272272

273273
def get_breaks(self, filename, lineno):
274274
filename = self.canonic(filename)
275-
return self.breaks.has_key(filename) and \
275+
return filename in self.breaks and \
276276
lineno in self.breaks[filename] and \
277277
Breakpoint.bplist[filename, lineno] or []
278278

279279
def get_file_breaks(self, filename):
280280
filename = self.canonic(filename)
281-
if self.breaks.has_key(filename):
281+
if filename in self.breaks:
282282
return self.breaks[filename]
283283
else:
284284
return []
@@ -316,15 +316,15 @@ def format_stack_entry(self, frame_lineno, lprefix=': '):
316316
s = s + frame.f_code.co_name
317317
else:
318318
s = s + "<lambda>"
319-
if frame.f_locals.has_key('__args__'):
319+
if '__args__' in frame.f_locals:
320320
args = frame.f_locals['__args__']
321321
else:
322322
args = None
323323
if args:
324324
s = s + repr.repr(args)
325325
else:
326326
s = s + '()'
327-
if frame.f_locals.has_key('__return__'):
327+
if '__return__' in frame.f_locals:
328328
rv = frame.f_locals['__return__']
329329
s = s + '->'
330330
s = s + repr.repr(rv)

Lib/cgi.py

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
130130
"""
131131
if fp is None:
132132
fp = sys.stdin
133-
if not environ.has_key('REQUEST_METHOD'):
133+
if not 'REQUEST_METHOD' in environ:
134134
environ['REQUEST_METHOD'] = 'GET' # For testing stand-alone
135135
if environ['REQUEST_METHOD'] == 'POST':
136136
ctype, pdict = parse_header(environ['CONTENT_TYPE'])
@@ -143,14 +143,14 @@ def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
143143
qs = fp.read(clength)
144144
else:
145145
qs = '' # Unknown content-type
146-
if environ.has_key('QUERY_STRING'):
146+
if 'QUERY_STRING' in environ:
147147
if qs: qs = qs + '&'
148148
qs = qs + environ['QUERY_STRING']
149149
elif sys.argv[1:]:
150150
if qs: qs = qs + '&'
151151
qs = qs + sys.argv[1]
152152
environ['QUERY_STRING'] = qs # XXX Shouldn't, really
153-
elif environ.has_key('QUERY_STRING'):
153+
elif 'QUERY_STRING' in environ:
154154
qs = environ['QUERY_STRING']
155155
else:
156156
if sys.argv[1:]:
@@ -181,7 +181,7 @@ def parse_qs(qs, keep_blank_values=0, strict_parsing=0):
181181
"""
182182
dict = {}
183183
for name, value in parse_qsl(qs, keep_blank_values, strict_parsing):
184-
if dict.has_key(name):
184+
if name in dict:
185185
dict[name].append(value)
186186
else:
187187
dict[name] = [value]
@@ -244,7 +244,7 @@ def parse_multipart(fp, pdict):
244244
245245
"""
246246
boundary = ""
247-
if pdict.has_key('boundary'):
247+
if 'boundary' in pdict:
248248
boundary = pdict['boundary']
249249
if not valid_boundary(boundary):
250250
raise ValueError, ('Invalid boundary in multipart form: %s'
@@ -304,11 +304,11 @@ def parse_multipart(fp, pdict):
304304
key, params = parse_header(line)
305305
if key != 'form-data':
306306
continue
307-
if params.has_key('name'):
307+
if 'name' in params:
308308
name = params['name']
309309
else:
310310
continue
311-
if partdict.has_key(name):
311+
if name in partdict:
312312
partdict[name].append(data)
313313
else:
314314
partdict[name] = [data]
@@ -440,10 +440,10 @@ def __init__(self, fp=None, headers=None, outerboundary="",
440440
method = 'GET'
441441
self.keep_blank_values = keep_blank_values
442442
self.strict_parsing = strict_parsing
443-
if environ.has_key('REQUEST_METHOD'):
443+
if 'REQUEST_METHOD' in environ:
444444
method = environ['REQUEST_METHOD'].upper()
445445
if method == 'GET' or method == 'HEAD':
446-
if environ.has_key('QUERY_STRING'):
446+
if 'QUERY_STRING' in environ:
447447
qs = environ['QUERY_STRING']
448448
elif sys.argv[1:]:
449449
qs = sys.argv[1]
@@ -458,25 +458,25 @@ def __init__(self, fp=None, headers=None, outerboundary="",
458458
if method == 'POST':
459459
# Set default content-type for POST to what's traditional
460460
headers['content-type'] = "application/x-www-form-urlencoded"
461-
if environ.has_key('CONTENT_TYPE'):
461+
if 'CONTENT_TYPE' in environ:
462462
headers['content-type'] = environ['CONTENT_TYPE']
463-
if environ.has_key('CONTENT_LENGTH'):
463+
if 'CONTENT_LENGTH' in environ:
464464
headers['content-length'] = environ['CONTENT_LENGTH']
465465
self.fp = fp or sys.stdin
466466
self.headers = headers
467467
self.outerboundary = outerboundary
468468

469469
# Process content-disposition header
470470
cdisp, pdict = "", {}
471-
if self.headers.has_key('content-disposition'):
471+
if 'content-disposition' in self.headers:
472472
cdisp, pdict = parse_header(self.headers['content-disposition'])
473473
self.disposition = cdisp
474474
self.disposition_options = pdict
475475
self.name = None
476-
if pdict.has_key('name'):
476+
if 'name' in pdict:
477477
self.name = pdict['name']
478478
self.filename = None
479-
if pdict.has_key('filename'):
479+
if 'filename' in pdict:
480480
self.filename = pdict['filename']
481481

482482
# Process content-type header
@@ -491,7 +491,7 @@ def __init__(self, fp=None, headers=None, outerboundary="",
491491
#
492492
# See below for what we do if there does exist a content-type header,
493493
# but it happens to be something we don't understand.
494-
if self.headers.has_key('content-type'):
494+
if 'content-type' in self.headers:
495495
ctype, pdict = parse_header(self.headers['content-type'])
496496
elif self.outerboundary or method != 'POST':
497497
ctype, pdict = "text/plain", {}
@@ -500,10 +500,10 @@ def __init__(self, fp=None, headers=None, outerboundary="",
500500
self.type = ctype
501501
self.type_options = pdict
502502
self.innerboundary = ""
503-
if pdict.has_key('boundary'):
503+
if 'boundary' in pdict:
504504
self.innerboundary = pdict['boundary']
505505
clen = -1
506-
if self.headers.has_key('content-length'):
506+
if 'content-length' in self.headers:
507507
try:
508508
clen = int(self.headers['content-length'])
509509
except ValueError:
@@ -555,7 +555,7 @@ def __getitem__(self, key):
555555

556556
def getvalue(self, key, default=None):
557557
"""Dictionary style get() method, including 'value' lookup."""
558-
if self.has_key(key):
558+
if key in self:
559559
value = self[key]
560560
if type(value) is type([]):
561561
return map(lambda v: v.value, value)
@@ -566,7 +566,7 @@ def getvalue(self, key, default=None):
566566

567567
def getfirst(self, key, default=None):
568568
""" Return the first value received."""
569-
if self.has_key(key):
569+
if key in self:
570570
value = self[key]
571571
if type(value) is type([]):
572572
return value[0].value
@@ -577,7 +577,7 @@ def getfirst(self, key, default=None):
577577

578578
def getlist(self, key):
579579
""" Return list of received values."""
580-
if self.has_key(key):
580+
if key in self:
581581
value = self[key]
582582
if type(value) is type([]):
583583
return map(lambda v: v.value, value)
@@ -603,6 +603,14 @@ def has_key(self, key):
603603
if item.name == key: return True
604604
return False
605605

606+
def __contains__(self, key):
607+
"""Dictionary style __contains__ method."""
608+
if self.list is None:
609+
raise TypeError, "not indexable"
610+
for item in self.list:
611+
if item.name == key: return True
612+
return False
613+
606614
def __len__(self):
607615
"""Dictionary style len(x) support."""
608616
return len(self.keys())
@@ -770,7 +778,7 @@ class FormContentDict(UserDict.UserDict):
770778
form = FormContentDict()
771779
772780
form[key] -> [value, value, ...]
773-
form.has_key(key) -> Boolean
781+
key in form -> Boolean
774782
form.keys() -> [key, key, ...]
775783
form.values() -> [[val, val, ...], [val, val, ...], ...]
776784
form.items() -> [(key, [val, val, ...]), (key, [val, val, ...]), ...]
@@ -847,21 +855,21 @@ def items(self):
847855
class FormContent(FormContentDict):
848856
"""This class is present for backwards compatibility only."""
849857
def values(self, key):
850-
if self.dict.has_key(key) :return self.dict[key]
858+
if key in self.dict :return self.dict[key]
851859
else: return None
852860
def indexed_value(self, key, location):
853-
if self.dict.has_key(key):
861+
if key in self.dict:
854862
if len(self.dict[key]) > location:
855863
return self.dict[key][location]
856864
else: return None
857865
else: return None
858866
def value(self, key):
859-
if self.dict.has_key(key): return self.dict[key][0]
867+
if key in self.dict: return self.dict[key][0]
860868
else: return None
861869
def length(self, key):
862870
return len(self.dict[key])
863871
def stripped(self, key):
864-
if self.dict.has_key(key): return self.dict[key][0].strip()
872+
if key in self.dict: return self.dict[key][0].strip()
865873
else: return None
866874
def pars(self):
867875
return self.dict

Lib/cmd.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ def do_help(self, arg):
304304
continue
305305
prevname = name
306306
cmd=name[3:]
307-
if help.has_key(cmd):
307+
if cmd in help:
308308
cmds_doc.append(cmd)
309309
del help[cmd]
310310
elif getattr(self, name).__doc__:

Lib/codecs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ def make_encoding_map(decoding_map):
611611
"""
612612
m = {}
613613
for k,v in decoding_map.items():
614-
if not m.has_key(v):
614+
if not v in m:
615615
m[v] = k
616616
else:
617617
m[v] = None

Lib/copy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def deepcopy(x, memo = None):
158158
if memo is None:
159159
memo = {}
160160
d = id(x)
161-
if memo.has_key(d):
161+
if d in memo:
162162
return memo[d]
163163
try:
164164
copierfunction = _deepcopy_dispatch[type(x)]

0 commit comments

Comments
 (0)