summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/orm/state.py6
-rw-r--r--lib/sqlalchemy/sql/expression.py8
-rw-r--r--lib/sqlalchemy/sql/util.py4
-rw-r--r--lib/sqlalchemy/util/__init__.py2
-rw-r--r--lib/sqlalchemy/util/langhelpers.py3
-rw-r--r--test/lib/profiles.txt16
6 files changed, 18 insertions, 21 deletions
diff --git a/lib/sqlalchemy/orm/state.py b/lib/sqlalchemy/orm/state.py
index 0f60c6712..9ef27f0d4 100644
--- a/lib/sqlalchemy/orm/state.py
+++ b/lib/sqlalchemy/orm/state.py
@@ -325,12 +325,12 @@ class InstanceState(interfaces._InspectionAttr):
self.committed_state.clear()
- self.__dict__.pop('_pending_mutations', None)
+ InstanceState._pending_mutations._reset(self)
# clear out 'parents' collection. not
# entirely clear how we can best determine
# which to remove, or not.
- self.__dict__.pop('parents', None)
+ InstanceState.parents._reset(self)
for key in self.manager:
impl = self.manager[key].impl
@@ -502,7 +502,7 @@ class InstanceState(interfaces._InspectionAttr):
for state, dict_ in iter:
state.committed_state.clear()
- state.__dict__.pop('_pending_mutations', None)
+ InstanceState._pending_mutations._reset(state)
callables = state.callables
for key in list(callables):
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py
index f00926e4d..63b1a4037 100644
--- a/lib/sqlalchemy/sql/expression.py
+++ b/lib/sqlalchemy/sql/expression.py
@@ -1604,8 +1604,8 @@ class ClauseElement(Visitable):
"""
c = self.__class__.__new__(self.__class__)
c.__dict__ = self.__dict__.copy()
- c.__dict__.pop('_cloned_set', None)
- c.__dict__.pop('comparator', None)
+ ClauseElement._cloned_set._reset(c)
+ ColumnElement.comparator._reset(c)
# this is a marker that helps to "equate" clauses to each other
# when a Select returns its list of FROM clauses. the cloning
@@ -2410,7 +2410,7 @@ class ColumnCollection(util.OrderedProperties):
# pop out memoized proxy_set as this
# operation may very well be occurring
# in a _make_proxy operation
- value.__dict__.pop('proxy_set', None)
+ ColumnElement.proxy_set._reset(value)
self._all_cols.add(value)
self._data[key] = value
@@ -3432,7 +3432,7 @@ class FunctionElement(Executable, ColumnElement, FromClause):
def _copy_internals(self, clone=_clone, **kw):
self.clause_expr = clone(self.clause_expr, **kw)
self._reset_exported()
- util.reset_memoized(self, 'clauses')
+ FunctionElement.clauses._reset(self)
def select(self):
"""Produce a :func:`~.expression.select` construct
diff --git a/lib/sqlalchemy/sql/util.py b/lib/sqlalchemy/sql/util.py
index 35761def1..70ea4c751 100644
--- a/lib/sqlalchemy/sql/util.py
+++ b/lib/sqlalchemy/sql/util.py
@@ -420,7 +420,7 @@ class Annotated(object):
element.c
self.__dict__ = element.__dict__.copy()
- self.__dict__.pop('comparator', None)
+ expression.ColumnElement.comparator._reset(self)
self.__element = element
self._annotations = values
@@ -432,7 +432,7 @@ class Annotated(object):
def _with_annotations(self, values):
clone = self.__class__.__new__(self.__class__)
clone.__dict__ = self.__dict__.copy()
- clone.__dict__.pop('comparator', None)
+ expression.ColumnElement.comparator._reset(self)
clone._annotations = values
return clone
diff --git a/lib/sqlalchemy/util/__init__.py b/lib/sqlalchemy/util/__init__.py
index f476bf953..7d012ff60 100644
--- a/lib/sqlalchemy/util/__init__.py
+++ b/lib/sqlalchemy/util/__init__.py
@@ -22,7 +22,7 @@ from .langhelpers import iterate_attributes, class_hierarchy, \
getargspec_init, format_argspec_init, format_argspec_plus, \
get_func_kwargs, get_cls_kwargs, decorator, as_interface, \
memoized_property, memoized_instancemethod, \
- reset_memoized, group_expirable_memoized_property, importlater, \
+ group_expirable_memoized_property, importlater, \
monkeypatch_proxied_specials, asbool, bool_or_str, coerce_kw_type,\
duck_type_collection, assert_arg_type, symbol, dictlike_iteritems,\
classproperty, set_creation_order, warn_exception, warn, NoneType,\
diff --git a/lib/sqlalchemy/util/langhelpers.py b/lib/sqlalchemy/util/langhelpers.py
index 7fe5d3e82..e560b871a 100644
--- a/lib/sqlalchemy/util/langhelpers.py
+++ b/lib/sqlalchemy/util/langhelpers.py
@@ -567,9 +567,6 @@ class memoized_instancemethod(object):
oneshot.__doc__ = self.__doc__
return oneshot
-def reset_memoized(instance, name):
- instance.__dict__.pop(name, None)
-
class group_expirable_memoized_property(object):
"""A family of @memoized_properties that can be expired in tandem."""
diff --git a/test/lib/profiles.txt b/test/lib/profiles.txt
index d58d2ac38..bcd307854 100644
--- a/test/lib/profiles.txt
+++ b/test/lib/profiles.txt
@@ -101,14 +101,14 @@ test.aaa_profiling.test_orm.MergeTest.test_merge_load 2.7_sqlite_pysqlite_nocext
# TEST: test.aaa_profiling.test_orm.MergeTest.test_merge_no_load
-test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.5_sqlite_pysqlite_nocextensions 106,20
-test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.6_sqlite_pysqlite_nocextensions 98,16
-test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_mysql_mysqldb_cextensions 98,16
-test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_mysql_mysqldb_nocextensions 98,16
-test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_postgresql_psycopg2_cextensions 98,16
-test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_postgresql_psycopg2_nocextensions 98,16
-test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_sqlite_pysqlite_cextensions 98,16
-test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_sqlite_pysqlite_nocextensions 98,16
+test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.5_sqlite_pysqlite_nocextensions 108,22
+test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.6_sqlite_pysqlite_nocextensions 100,18
+test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_mysql_mysqldb_cextensions 100,18
+test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_mysql_mysqldb_nocextensions 100,18
+test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_postgresql_psycopg2_cextensions 100,18
+test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_postgresql_psycopg2_nocextensions 100,18
+test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_sqlite_pysqlite_cextensions 100,18
+test.aaa_profiling.test_orm.MergeTest.test_merge_no_load 2.7_sqlite_pysqlite_nocextensions 100,18
# TEST: test.aaa_profiling.test_pool.QueuePoolTest.test_first_connect