.. changelog::
:version: 0.9.1
+ .. change::
+ :tags: bug, orm, events
+ :tickets: 2905
+
+ Fixed regression where using a ``functools.partial()`` with the event
+ system would cause a recursion overflow due to usage of inspect.getargspec()
+ on it in order to detect a legacy calling signature for certain events,
+ and apparently there's no way to do this with a partial object. Instead
+ we skip the legacy check and assume the modern style; the check itself
+ now only occurs for the SessionEvents.after_bulk_update and
+ SessionEvents.after_bulk_delete events. Those two events will require
+ the new signature style if assigned to a "partial" event listener.
+
+ .. change::
+ :tags: feature, orm, extensions
+
+ A new, **experimental** extension :mod:`sqlalchemy.ext.automap` is added.
+ This extension expands upon the functionality of Declarative as well as
+ the :class:`.DeferredReflection` class to produce a base class which
+ automatically generates mapped classes *and relationships* based on
+ table metadata.
+
+ .. seealso::
+
+ :ref:`feature_automap`
+
+ :ref:`automap_toplevel`
+
+ .. change::
+ :tags: feature, core
+
+ Conjunctions like :func:`.and_` and :func:`.or_` can now accept
+ Python generators as a single argument, e.g.::
+
+ and_(x == y for x, y in tuples)
+
+ The logic here looks for a single argument ``*args`` where the first
+ element is an instance of ``types.GeneratorType``.
+
+ .. change::
+ :tags: feature, core
+
+ The :paramref:`.Table.extend_existing` and :paramref:`.Table.autoload_replace`
+ parameters are now available on the :meth:`.MetaData.reflect`
+ method.
++>>>>>>> automap
+
.. change::
:tags: bug, orm, declarative