From: Mike Bayer Date: Sun, 26 May 2013 23:06:13 +0000 (-0400) Subject: a pass where we try to squash down as many list()/keys() combinations X-Git-Tag: rel_0_9_0b1~304^2~13^2~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6cde27fe9161a21b075c7b8faa09d1e77169f1f2;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git a pass where we try to squash down as many list()/keys() combinations as possible --- diff --git a/lib/sqlalchemy/__init__.py b/lib/sqlalchemy/__init__.py index 5b7123b6eb..21e06f5483 100644 --- a/lib/sqlalchemy/__init__.py +++ b/lib/sqlalchemy/__init__.py @@ -117,7 +117,7 @@ from .inspection import inspect from .engine import create_engine, engine_from_config -__all__ = sorted(name for name, obj in list(locals().items()) +__all__ = sorted(name for name, obj in locals().items() if not (name.startswith('_') or _inspect.ismodule(obj))) __version__ = '0.8.2' diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index e9645f3639..85d11ff367 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -734,7 +734,7 @@ class DefaultExecutionContext(interfaces.ExecutionContext): e, None, None, None, self) else: inputsizes = {} - for key in list(self.compiled.bind_names.values()): + for key in self.compiled.bind_names.values(): typeengine = types[key] dbtype = typeengine.dialect_impl(self.dialect).\ get_dbapi_type(self.dialect.dbapi) diff --git a/lib/sqlalchemy/event.py b/lib/sqlalchemy/event.py index 33626cf2ad..d8c44dd051 100644 --- a/lib/sqlalchemy/event.py +++ b/lib/sqlalchemy/event.py @@ -300,7 +300,7 @@ class _DispatchDescriptor(object): def clear(self): """Clear all class level listeners""" - for dispatcher in list(self._clslevel.values()): + for dispatcher in self._clslevel.values(): dispatcher[:] = [] def for_modify(self, obj): diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py index 39f8a7cf65..08875c3a0d 100644 --- a/lib/sqlalchemy/ext/associationproxy.py +++ b/lib/sqlalchemy/ext/associationproxy.py @@ -778,7 +778,7 @@ class _AssociationDict(_AssociationCollection): iteritems = _iteritems def values(self): - return [self._get(member) for member in list(self.col.values())] + return [self._get(member) for member in self.col.values()] def items(self): return [(k, self._get(self.col[k])) for k in self] diff --git a/lib/sqlalchemy/ext/declarative/api.py b/lib/sqlalchemy/ext/declarative/api.py index bc0c5a38c6..2f222f6829 100644 --- a/lib/sqlalchemy/ext/declarative/api.py +++ b/lib/sqlalchemy/ext/declarative/api.py @@ -424,7 +424,7 @@ class DeferredReflection(object): def prepare(cls, engine): """Reflect all :class:`.Table` objects for all current :class:`.DeferredReflection` subclasses""" - to_map = [m for m in list(_MapperConfig.configs.values()) + to_map = [m for m in _MapperConfig.configs.values() if issubclass(m.cls, cls)] for thingy in to_map: cls._sa_decl_prepare(thingy.local_table, engine) diff --git a/lib/sqlalchemy/ext/declarative/base.py b/lib/sqlalchemy/ext/declarative/base.py index 2099f9eb0e..9187ed7f89 100644 --- a/lib/sqlalchemy/ext/declarative/base.py +++ b/lib/sqlalchemy/ext/declarative/base.py @@ -57,7 +57,7 @@ def _as_declarative(cls, classname, dict_): class_mapped = _declared_mapping_info(base) is not None - for name, obj in list(vars(base).items()): + for name, obj in vars(base).items(): if name == '__mapper_args__': if not mapper_args_fn and ( not class_mapped or @@ -129,7 +129,7 @@ def _as_declarative(cls, classname, dict_): ret.doc = obj.__doc__ # apply inherited columns as we should - for k, v in list(potential_columns.items()): + for k, v in potential_columns.items(): dict_[k] = v if inherited_table_args and not tablename: diff --git a/lib/sqlalchemy/ext/mutable.py b/lib/sqlalchemy/ext/mutable.py index 08c0bdf134..b1b851f723 100644 --- a/lib/sqlalchemy/ext/mutable.py +++ b/lib/sqlalchemy/ext/mutable.py @@ -485,7 +485,7 @@ class Mutable(MutableBase): def changed(self): """Subclasses should call this method whenever change events occur.""" - for parent, key in list(self._parents.items()): + for parent, key in self._parents.items(): flag_modified(parent, key) @classmethod @@ -579,7 +579,7 @@ class MutableComposite(MutableBase): def changed(self): """Subclasses should call this method whenever change events occur.""" - for parent, key in list(self._parents.items()): + for parent, key in self._parents.items(): prop = object_mapper(parent).get_property(key) for value, attr_name in zip( diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py index 0572470476..bfba695b84 100644 --- a/lib/sqlalchemy/orm/attributes.py +++ b/lib/sqlalchemy/orm/attributes.py @@ -866,7 +866,7 @@ class CollectionAttributeImpl(AttributeImpl): self.collection_factory = typecallable def __copy(self, item): - return [y for y in list(collections.collection_adapter(item))] + return [y for y in collections.collection_adapter(item)] def get_history(self, state, dict_, passive=PASSIVE_OFF): current = self.get(state, dict_, passive=passive) diff --git a/lib/sqlalchemy/orm/collections.py b/lib/sqlalchemy/orm/collections.py index bb7882ee9a..03917d1128 100644 --- a/lib/sqlalchemy/orm/collections.py +++ b/lib/sqlalchemy/orm/collections.py @@ -883,7 +883,7 @@ def _instrument_class(cls): # search for _sa_instrument_role-decorated methods in # method resolution order, assign to roles for supercls in cls.__mro__: - for name, method in list(vars(supercls).items()): + for name, method in vars(supercls).items(): if not util.callable(method): continue @@ -917,11 +917,11 @@ def _instrument_class(cls): collection_type = util.duck_type_collection(cls) if collection_type in __interfaces: canned_roles, decorators = __interfaces[collection_type] - for role, name in list(canned_roles.items()): + for role, name in canned_roles.items(): roles.setdefault(role, name) # apply ABC auto-decoration to methods that need it - for method, decorator in list(decorators.items()): + for method, decorator in decorators.items(): fn = getattr(cls, method, None) if (fn and method not in methods and not hasattr(fn, '_sa_instrumented')): @@ -952,12 +952,12 @@ def _instrument_class(cls): # apply ad-hoc instrumentation from decorators, class-level defaults # and implicit role declarations - for method_name, (before, argument, after) in list(methods.items()): + for method_name, (before, argument, after) in methods.items(): setattr(cls, method_name, _instrument_membership_mutator(getattr(cls, method_name), before, argument, after)) # intern the role map - for role, method_name in list(roles.items()): + for role, method_name in roles.items(): setattr(cls, '_sa_%s' % role, getattr(cls, method_name)) setattr(cls, '_sa_instrumented', id(cls)) @@ -1250,7 +1250,7 @@ def _dict_decorators(): def update(self, __other=Unspecified, **kw): if __other is not Unspecified: if hasattr(__other, 'keys'): - for key in list(__other.keys()): + for key in list(__other): if (key not in self or self[key] is not __other[key]): self[key] = __other[key] diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index 0eedea793f..8ad1dbe9bd 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -803,7 +803,7 @@ class BulkUD(object): raise sa_exc.ArgumentError( "Valid strategies for session synchronization " "are %s" % (", ".join(sorted(repr(x) - for x in list(lookup.keys()))))) + for x in lookup)))) else: return klass(*arg) diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index cbb508cf7f..5a4486eef5 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -35,7 +35,7 @@ class _SessionClassMethods(object): def close_all(cls): """Close *all* sessions in memory.""" - for sess in list(_sessions.values()): + for sess in _sessions.values(): sess.close() @classmethod @@ -250,7 +250,7 @@ class SessionTransaction(object): if s.key: del s.key - for s, (oldkey, newkey) in list(self._key_switches.items()): + for s, (oldkey, newkey) in self._key_switches.items(): self.session.identity_map.discard(s) s.key = oldkey self.session.identity_map.replace(s) @@ -2237,7 +2237,7 @@ class sessionmaker(_SessionClassMethods): session = Session() # invokes sessionmaker.__call__() """ - for k, v in list(self.kw.items()): + for k, v in self.kw.items(): local_kw.setdefault(k, v) return self.class_(**local_kw) @@ -2256,7 +2256,7 @@ class sessionmaker(_SessionClassMethods): return "%s(class_=%r%s)" % ( self.__class__.__name__, self.class_.__name__, - ", ".join("%s=%r" % (k, v) for k, v in list(self.kw.items())) + ", ".join("%s=%r" % (k, v) for k, v in self.kw.items()) ) _sessions = weakref.WeakValueDictionary() diff --git a/lib/sqlalchemy/orm/state.py b/lib/sqlalchemy/orm/state.py index 8fe37e41ce..6ade91b3e0 100644 --- a/lib/sqlalchemy/orm/state.py +++ b/lib/sqlalchemy/orm/state.py @@ -417,7 +417,7 @@ class InstanceState(interfaces._InspectionAttr): against this set when a refresh operation occurs. """ - return set([k for k, v in list(self.callables.items()) if v is self]) + return set([k for k, v in self.callables.items() if v is self]) def _instance_dict(self): return None diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py index e80745c79c..4651c71b79 100644 --- a/lib/sqlalchemy/orm/strategies.py +++ b/lib/sqlalchemy/orm/strategies.py @@ -359,7 +359,7 @@ class LazyLoader(AbstractRelationshipLoader): ) if self.use_get: - for col in list(self._equated_columns.keys()): + for col in list(self._equated_columns): if col in self.mapper._equivalent_columns: for c in self.mapper._equivalent_columns[col]: self._equated_columns[c] = self._equated_columns[col] diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py index 54b0ebf72c..aa5f7836c0 100644 --- a/lib/sqlalchemy/orm/unitofwork.py +++ b/lib/sqlalchemy/orm/unitofwork.py @@ -342,7 +342,7 @@ class UOWTransaction(object): for dep in convert[edge[1]]: self.dependencies.add((edge[0], dep)) - return set([a for a in list(self.postsort_actions.values()) + return set([a for a in self.postsort_actions.values() if not a.disabled ] ).difference(cycles) @@ -461,7 +461,7 @@ class PostSortRec(object): def __repr__(self): return "%s(%s)" % ( self.__class__.__name__, - ",".join(str(x) for x in list(self.__dict__.values())) + ",".join(str(x) for x in self.__dict__.values()) ) diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index 562a761636..0470e9e485 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -1004,7 +1004,7 @@ class _DBProxy(object): self._create_pool_mutex = threading.Lock() def close(self): - for key in list(self.pools.keys()): + for key in list(self.pools): del self.pools[key] def __del__(self): diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index 8e5c94abac..3a74cbd59d 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -1044,7 +1044,7 @@ class Column(SchemaItem, expression.ColumnClause): if self.key in table._columns: col = table._columns.get(self.key) if col is not self: - for fk in list(col.foreign_keys): + for fk in col.foreign_keys: table.foreign_keys.remove(fk) if fk.constraint in table.constraints: # this might have been removed diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index c3aea159a2..b2c4a94c07 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -2073,11 +2073,11 @@ class DDLCompiler(engine.Compiled): remote_table = list(constraint._elements.values())[0].column.table text += "FOREIGN KEY(%s) REFERENCES %s (%s)" % ( ', '.join(preparer.quote(f.parent.name, f.parent.quote) - for f in list(constraint._elements.values())), + for f in constraint._elements.values()), self.define_constraint_remote_table( constraint, remote_table, preparer), ', '.join(preparer.quote(f.column.name, f.column.quote) - for f in list(constraint._elements.values())) + for f in constraint._elements.values()) ) text += self.define_constraint_match(constraint) text += self.define_constraint_cascades(constraint) diff --git a/lib/sqlalchemy/testing/engines.py b/lib/sqlalchemy/testing/engines.py index cfaacc4907..efc0103f21 100644 --- a/lib/sqlalchemy/testing/engines.py +++ b/lib/sqlalchemy/testing/engines.py @@ -8,7 +8,7 @@ from .util import decorator from .. import event, pool import re import warnings - +from .. import util class ConnectionKiller(object): @@ -37,12 +37,12 @@ class ConnectionKiller(object): "rollback/close connection: %s" % e) def rollback_all(self): - for rec in list(self.proxy_refs.keys()): + for rec in list(self.proxy_refs): if rec is not None and rec.is_valid: self._safe(rec.rollback) def close_all(self): - for rec in list(self.proxy_refs.keys()): + for rec in list(self.proxy_refs): if rec is not None: self._safe(rec._close) @@ -66,7 +66,7 @@ class ConnectionKiller(object): self.conns = set() - for rec in list(self.testing_engines.keys()): + for rec in list(self.testing_engines): if rec is not config.db: rec.dispose() @@ -75,7 +75,7 @@ class ConnectionKiller(object): for conn in self.conns: self._safe(conn.close) self.conns = set() - for rec in list(self.testing_engines.keys()): + for rec in list(self.testing_engines): rec.dispose() def assert_all_closed(self): @@ -353,24 +353,22 @@ class ReplayableSession(object): Callable = object() NoAttribute = object() -# start Py3K - Natives = set([getattr(types, t) - for t in dir(types) if not t.startswith('_')]). \ - union([type(t) if not isinstance(t, type) - else t for t in list(__builtins__.values())]).\ + if util.py2k: + Natives = set([getattr(types, t) + for t in dir(types) if not t.startswith('_')]).\ difference([getattr(types, t) - for t in ('FunctionType', 'BuiltinFunctionType', - 'MethodType', 'BuiltinMethodType', - 'LambdaType', )]) -# end Py3K -# start Py2K -# Natives = set([getattr(types, t) -# for t in dir(types) if not t.startswith('_')]). \ -# difference([getattr(types, t) -# for t in ('FunctionType', 'BuiltinFunctionType', -# 'MethodType', 'BuiltinMethodType', -# 'LambdaType', 'UnboundMethodType',)]) -# end Py2K + for t in ('FunctionType', 'BuiltinFunctionType', + 'MethodType', 'BuiltinMethodType', + 'LambdaType', 'UnboundMethodType',)]) + else: + Natives = set([getattr(types, t) + for t in dir(types) if not t.startswith('_')]).\ + union([type(t) if not isinstance(t, type) + else t for t in __builtins__.values()]).\ + difference([getattr(types, t) + for t in ('FunctionType', 'BuiltinFunctionType', + 'MethodType', 'BuiltinMethodType', + 'LambdaType', )]) def __init__(self): self.buffer = deque() diff --git a/lib/sqlalchemy/testing/entities.py b/lib/sqlalchemy/testing/entities.py index 221c23c56b..c0dd58650b 100644 --- a/lib/sqlalchemy/testing/entities.py +++ b/lib/sqlalchemy/testing/entities.py @@ -67,7 +67,7 @@ class ComparableEntity(BasicEntity): a = self b = other - for attr in list(a.__dict__.keys()): + for attr in list(a.__dict__): if attr.startswith('_'): continue value = getattr(a, attr) diff --git a/lib/sqlalchemy/testing/schema.py b/lib/sqlalchemy/testing/schema.py index 6f3e87cc91..025bbaabeb 100644 --- a/lib/sqlalchemy/testing/schema.py +++ b/lib/sqlalchemy/testing/schema.py @@ -11,7 +11,7 @@ table_options = {} def Table(*args, **kw): """A schema.Table wrapper/hook for dialect-specific tweaks.""" - test_opts = dict([(k, kw.pop(k)) for k in list(kw.keys()) + test_opts = dict([(k, kw.pop(k)) for k in list(kw) if k.startswith('test_')]) kw.update(table_options) @@ -58,7 +58,7 @@ def Table(*args, **kw): def Column(*args, **kw): """A schema.Column wrapper/hook for dialect-specific tweaks.""" - test_opts = dict([(k, kw.pop(k)) for k in list(kw.keys()) + test_opts = dict([(k, kw.pop(k)) for k in list(kw) if k.startswith('test_')]) if not config.requirements.foreign_key_ddl.enabled: diff --git a/lib/sqlalchemy/util/_collections.py b/lib/sqlalchemy/util/_collections.py index fddedf4f7f..c10d19ea12 100644 --- a/lib/sqlalchemy/util/_collections.py +++ b/lib/sqlalchemy/util/_collections.py @@ -94,7 +94,7 @@ class KeyedTuple(tuple): .. versionadded:: 0.8 """ - return dict((key, self.__dict__[key]) for key in list(self.keys())) + return dict((key, self.__dict__[key]) for key in self.keys()) class ImmutableContainer(object): @@ -242,7 +242,7 @@ class OrderedDict(dict): def update(self, ____sequence=None, **kwargs): if ____sequence is not None: if hasattr(____sequence, 'keys'): - for key in list(____sequence.keys()): + for key in ____sequence.keys(): self.__setitem__(key, ____sequence[key]) else: for key, value in ____sequence: @@ -273,7 +273,7 @@ class OrderedDict(dict): return iter(list(self.keys())) def items(self): - return [(key, self[key]) for key in list(self.keys())] + return [(key, self[key]) for key in self.keys()] def iteritems(self): return iter(list(self.items())) diff --git a/test/aaa_profiling/test_resultset.py b/test/aaa_profiling/test_resultset.py index 95a1fa3ae6..27e60410da 100644 --- a/test/aaa_profiling/test_resultset.py +++ b/test/aaa_profiling/test_resultset.py @@ -2,6 +2,7 @@ from sqlalchemy import * from sqlalchemy.testing import fixtures, AssertsExecutionResults, profiling from sqlalchemy import testing from sqlalchemy.testing import eq_ +from sqlalchemy.util import u NUM_FIELDS = 10 NUM_RECORDS = 1000 @@ -19,10 +20,10 @@ class ResultSetTest(fixtures.TestBase, AssertsExecutionResults): def setup(self): metadata.create_all() - t.insert().execute([dict(('field%d' % fnum, 'value%d' % fnum) + t.insert().execute([dict(('field%d' % fnum, u('value%d' % fnum)) for fnum in range(NUM_FIELDS)) for r_num in range(NUM_RECORDS)]) - t2.insert().execute([dict(('field%d' % fnum, 'value%d' % fnum) + t2.insert().execute([dict(('field%d' % fnum, u('value%d' % fnum)) for fnum in range(NUM_FIELDS)) for r_num in range(NUM_RECORDS)])