-
-
Notifications
You must be signed in to change notification settings - Fork 33.3k
bpo-30296 Remove unnecessary tuples, lists, sets, and dicts #1489
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -369,8 +369,8 @@ def groups(self): | |
| @property | ||
| def addresses(self): | ||
| if self._addresses is None: | ||
| self._addresses = tuple([address for group in self._groups | ||
| for address in group.addresses]) | ||
| self._addresses = tuple(address for group in self._groups | ||
| for address in group.addresses) | ||
| return self._addresses | ||
|
|
||
|
||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -389,7 +389,7 @@ def classify_class_attrs(cls): | |
|
|
||
| mro = getmro(cls) | ||
| metamro = getmro(type(cls)) # for attributes stored in the metaclass | ||
| metamro = tuple([cls for cls in metamro if cls not in (type, object)]) | ||
| metamro = tuple(cls for cls in metamro if cls not in (type, object)) | ||
|
||
| class_bases = (cls,) + mro | ||
| all_bases = class_bases + metamro | ||
| names = dir(cls) | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -463,7 +463,7 @@ def configure_custom(self, config): | |
| c = self.resolve(c) | ||
| props = config.pop('.', None) | ||
| # Check for valid identifiers | ||
| kwargs = dict([(k, config[k]) for k in config if valid_ident(k)]) | ||
| kwargs = dict((k, config[k]) for k in config if valid_ident(k)) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would use a dict comprehension. And the same for other change in this file. |
||
| result = c(**kwargs) | ||
| if props: | ||
| for name, value in props.items(): | ||
|
|
@@ -726,7 +726,7 @@ def configure_handler(self, config): | |
| config['address'] = self.as_tuple(config['address']) | ||
| factory = klass | ||
| props = config.pop('.', None) | ||
| kwargs = dict([(k, config[k]) for k in config if valid_ident(k)]) | ||
| kwargs = dict((k, config[k]) for k in config if valid_ident(k)) | ||
| try: | ||
| result = factory(**kwargs) | ||
| except TypeError as te: | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -261,7 +261,7 @@ def get_all_start_methods(self): | |
| else: | ||
| return ['fork', 'spawn'] | ||
|
|
||
| DefaultContext.__all__ = list(x for x in dir(DefaultContext) if x[0] != '_') | ||
| DefaultContext.__all__ = [x for x in dir(DefaultContext) if x[0] != '_'] | ||
|
||
|
|
||
| # | ||
| # Context types for fixed start method | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -98,8 +98,7 @@ def ensure_running(self): | |
| if self._preload_modules: | ||
| desired_keys = {'main_path', 'sys_path'} | ||
| data = spawn.get_preparation_data('ignore') | ||
| data = dict((x,y) for (x,y) in data.items() | ||
| if x in desired_keys) | ||
| data = {x: y for x, y in data.items() if x in desired_keys} | ||
|
||
| else: | ||
| data = {} | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -115,7 +115,7 @@ def synchronized(obj, lock=None, ctx=None): | |
| scls = class_cache[cls] | ||
| except KeyError: | ||
| names = [field[0] for field in cls._fields_] | ||
| d = dict((name, make_property(name)) for name in names) | ||
| d = {name: make_property(name) for name in names} | ||
|
||
| classname = 'Synchronized' + cls.__name__ | ||
| scls = class_cache[cls] = type(classname, (SynchronizedBase,), d) | ||
| return scls(obj, lock, ctx) | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -500,8 +500,7 @@ def add_callers(target, source): | |
| if func in new_callers: | ||
| if isinstance(caller, tuple): | ||
| # format used by cProfile | ||
| new_callers[func] = tuple([i[0] + i[1] for i in | ||
| zip(caller, new_callers[func])]) | ||
| new_callers[func] = tuple(i[0] + i[1] for i in zip(caller, new_callers[func])) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would keep the original code. Maybe unpack a tuple: |
||
| else: | ||
| # format used by profile | ||
| new_callers[func] += caller | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -119,8 +119,8 @@ class Function(SymbolTable): | |
| __globals = None | ||
|
|
||
| def __idents_matching(self, test_func): | ||
| return tuple([ident for ident in self.get_identifiers() | ||
| if test_func(self._table.symbols[ident])]) | ||
| return tuple(ident for ident in self.get_identifiers() | ||
|
||
| if test_func(self._table.symbols[ident])) | ||
|
|
||
| def get_parameters(self): | ||
| if self.__params is None: | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -142,7 +142,7 @@ def _all_string_prefixes(): | |
| # 'rf'). The various permutations will be generated. | ||
| _valid_string_prefixes = ['b', 'r', 'u', 'f', 'br', 'fr'] | ||
| # if we add binary f-strings, add: ['fb', 'fbr'] | ||
| result = set(['']) | ||
| result = {''} | ||
|
||
| for prefix in _valid_string_prefixes: | ||
| for t in _itertools.permutations(prefix): | ||
| # create a list with upper and lower versions of each | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -253,8 +253,7 @@ def __init__(self, filename, lineno, name, *, lookup_line=True, | |
| self._line = line | ||
| if lookup_line: | ||
| self.line | ||
| self.locals = \ | ||
| dict((k, repr(v)) for k, v in locals.items()) if locals else None | ||
| self.locals = {k: repr(v) for k, v in locals.items()} if locals else None | ||
|
||
|
|
||
| def __eq__(self, other): | ||
| if isinstance(other, FrameSummary): | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1175,7 +1175,7 @@ def _color(self, cstr): | |
| cl = [16*int(cstr[h], 16) for h in cstr[1:]] | ||
| else: | ||
| raise TurtleGraphicsError("bad colorstring: %s" % cstr) | ||
| return tuple([c * self._colormode/255 for c in cl]) | ||
| return tuple(c * self._colormode/255 for c in cl) | ||
|
||
|
|
||
| def colormode(self, cmode=None): | ||
| """Return the colormode or set it to 1.0 or 255. | ||
|
|
@@ -2989,7 +2989,7 @@ def _getshapepoly(self, polygon, compound=False): | |
| t11, t12, t21, t22 = l, 0, 0, l | ||
| elif self._resizemode == "noresize": | ||
| return polygon | ||
| return tuple([(t11*x + t12*y, t21*x + t22*y) for (x, y) in polygon]) | ||
| return tuple((t11*x + t12*y, t21*x + t22*y) for (x, y) in polygon) | ||
|
||
|
|
||
| def _drawturtle(self): | ||
| """Manages the correct rendering of the turtle with respect to | ||
|
|
@@ -3839,8 +3839,8 @@ def write_docstringdict(filename="turtle_docstringdict"): | |
| docsdict[key] = eval(key).__doc__ | ||
|
|
||
| with open("%s.py" % filename,"w") as f: | ||
| keys = sorted([x for x in docsdict.keys() | ||
| if x.split('.')[1] not in _alias_list]) | ||
| keys = sorted(x for x in docsdict.keys() | ||
|
||
| if x.split('.')[1] not in _alias_list) | ||
| f.write('docsdict = {\n\n') | ||
| for key in keys[:-1]: | ||
| f.write('%s :\n' % repr(key)) | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -52,7 +52,7 @@ def main(): | |
| sleep(1) | ||
|
|
||
| at = clock() | ||
| while any([t.undobufferentries() for t in s.turtles()]): | ||
| while any(t.undobufferentries() for t in s.turtles()): | ||
|
||
| for t in s.turtles(): | ||
| t.undo() | ||
| et = clock() | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -683,8 +683,8 @@ def redirect_request(self, req, fp, code, msg, headers, newurl): | |
| newurl = newurl.replace(' ', '%20') | ||
|
|
||
| CONTENT_HEADERS = ("content-length", "content-type") | ||
| newheaders = dict((k, v) for k, v in req.headers.items() | ||
| if k.lower() not in CONTENT_HEADERS) | ||
| newheaders = {k: v for k, v in req.headers.items() | ||
| if k.lower() not in CONTENT_HEADERS} | ||
|
||
| return Request(newurl, | ||
| headers=newheaders, | ||
| origin_req_host=req.origin_req_host, | ||
|
|
@@ -845,7 +845,7 @@ def add_password(self, realm, uri, user, passwd): | |
| self.passwd[realm] = {} | ||
| for default_port in True, False: | ||
| reduced_uri = tuple( | ||
| [self.reduce_uri(u, default_port) for u in uri]) | ||
| self.reduce_uri(u, default_port) for u in uri) | ||
|
||
| self.passwd[realm][reduced_uri] = (user, passwd) | ||
|
|
||
| def find_user_password(self, realm, authuri): | ||
|
|
@@ -1286,8 +1286,7 @@ def do_open(self, http_class, req, **http_conn_args): | |
| h.set_debuglevel(self._debuglevel) | ||
|
|
||
| headers = dict(req.unredirected_hdrs) | ||
| headers.update(dict((k, v) for k, v in req.headers.items() | ||
| if k not in headers)) | ||
| headers.update((k, v) for k, v in req.headers.items() if k not in headers) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This changes the semantic. Updated I would use a dict comprehesion. |
||
|
|
||
| # TODO(jhylton): Should this be redesigned to handle | ||
| # persistent connections? | ||
|
|
@@ -1299,7 +1298,7 @@ def do_open(self, http_class, req, **http_conn_args): | |
| # So make sure the connection gets closed after the (only) | ||
| # request. | ||
| headers["Connection"] = "close" | ||
| headers = dict((name.title(), val) for name, val in headers.items()) | ||
| headers = {name.title(): val for name, val in headers.items()} | ||
|
||
|
|
||
| if req._tunnel_host: | ||
| tunnel_headers = {} | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1097,8 +1097,8 @@ def proxyval(self, visited): | |
| return ProxyAlreadyVisited('(...)') | ||
| visited.add(self.as_address()) | ||
|
|
||
| result = tuple([PyObjectPtr.from_pyobject_ptr(self[i]).proxyval(visited) | ||
| for i in safe_range(int_from_int(self.field('ob_size')))]) | ||
| result = tuple(PyObjectPtr.from_pyobject_ptr(self[i]).proxyval(visited) | ||
| for i in safe_range(int_from_int(self.field('ob_size')))) | ||
|
||
| return result | ||
|
|
||
| def write_repr(self, out, visited): | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -609,7 +609,7 @@ def makeunicodename(unicode, trace): | |
| if name and name[0] != "<": | ||
| names[char] = name + chr(0) | ||
|
|
||
| print(len(list(n for n in names if n is not None)), "distinct names") | ||
| print(len([n for n in names if n is not None]), "distinct names") | ||
|
||
|
|
||
| # collect unique words from names (note that we differ between | ||
| # words inside a sentence, and words ending a sentence. the | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes to this one. Set literals are always a win.