]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fix almost all read-level sphinx warnings
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 11 Apr 2020 17:46:56 +0000 (13:46 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 11 Apr 2020 17:46:56 +0000 (13:46 -0400)
There are some related to changelog that I can't figure out
and are likely due to something in the changelog extension.
also one thing with a "collection" I can't figure out.

Change-Id: I0a9e6f4291c3589aa19a4abcb9245cd22a266fe0

45 files changed:
doc/build/changelog/changelog_06.rst
doc/build/changelog/changelog_07.rst
doc/build/changelog/changelog_08.rst
doc/build/changelog/changelog_09.rst
doc/build/changelog/changelog_10.rst
doc/build/changelog/changelog_11.rst
doc/build/changelog/changelog_12.rst
doc/build/changelog/migration_08.rst
doc/build/changelog/migration_20.rst
doc/build/core/api_basics.rst
doc/build/core/constraints.rst
doc/build/core/custom_types.rst
doc/build/core/ddl.rst
doc/build/core/defaults.rst
doc/build/core/dml.rst
doc/build/core/functions.rst
doc/build/core/reflection.rst
doc/build/core/schema.rst
doc/build/core/selectable.rst
doc/build/core/sqlelement.rst
doc/build/core/type_api.rst
doc/build/dialects/mssql.rst
doc/build/orm/collections.rst
doc/build/orm/composites.rst
doc/build/orm/constructors.rst
doc/build/orm/extending.rst
doc/build/orm/internals.rst
doc/build/orm/loading_columns.rst
doc/build/orm/mapped_attributes.rst
doc/build/orm/mapped_sql_expr.rst
doc/build/orm/mapping_api.rst
doc/build/orm/mapping_columns.rst
doc/build/orm/query.rst
doc/build/orm/relationship_api.rst
doc/build/orm/relationships.rst
doc/build/orm/scalar_mapping.rst
doc/build/orm/session_api.rst
lib/sqlalchemy/engine/__init__.py
lib/sqlalchemy/orm/__init__.py
lib/sqlalchemy/sql/base.py
lib/sqlalchemy/sql/expression.py
lib/sqlalchemy/sql/schema.py
lib/sqlalchemy/sql/selectable.py
lib/sqlalchemy/sql/visitors.py
lib/sqlalchemy/util/langhelpers.py

index 57f13748cfc6e8cc73aa1b896d31d4402fbfc014..0803469702169321c7fea21b452f642ab7887598 100644 (file)
@@ -1,9 +1,7 @@
-
 =============
 0.6 Changelog
 =============
 
-                
 .. changelog::
     :version: 0.6.9
     :released: Sat May 05 2012
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Fixed bug whereby "warn on unicode" flag
       would get set for the String type
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       Added an informative error message when
       ForeignKeyConstraint refers to a column name in
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed bug whereby a non-"mutable" attribute modified event
       which occurred on an object that was clean except for
         :tickets: 1971
 
       The mapper argument "primary_key" can be passed as a
-      single column as well as a list or tuple. 
+      single column as well as a list or tuple.
       The documentation examples that illustrated it as a
       scalar value have been changed to lists.
 
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       A little more verbiage to the "primaryjoin" error,
       in an unusual condition that the join condition
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added a bind processor for booleans which coerces
       to int, for DBAPIs such as pymssql that naively call
 
     .. change::
         :tags: engine
-        :tickets: 
+        :tickets:
 
       The "unicode warning" against non-unicode bind data
       is now raised only when the
 
     .. change::
         :tags: sqlite
-        :tickets: 
+        :tickets:
 
       On the same theme, the REFERENCES clause in a CREATE TABLE
       that includes a remote schema to a *different* schema
 
     .. change::
         :tags: sqlsoup
-        :tickets: 
+        :tickets:
 
       Mapped selectables used with the map(), with_labels(),
       join() methods no longer put the given argument into the
 
     .. change::
         :tags: examples
-        :tickets: 
+        :tickets:
 
       The versioning example now supports detection of changes
       in an associated relationship().
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed recursion bug which could occur when moving
       an object from one reference to another, with
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed labeling bug in Query whereby the NamedTuple
       would mis-apply labels if any of the column
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Query.select_from() has been beefed up to help
       ensure that a subsequent call to query.join()
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The exception raised by Session when it is used
       subsequent to a subtransaction rollback (which is what
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The exception raised by Mapper when repeated requests to
       its initialization are made after initialization already
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Added an assertion during flush which ensures
       that no NULL-holding identity keys were generated
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       A new flag on relationship(), load_on_pending, allows
       the lazy loader to fire off on pending objects without a
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Another new flag on relationship(), cascade_backrefs,
       disables the "save-update" cascade when the event was
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Slight improvement to the behavior of
       "passive_updates=False" when placed only on the
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Placing passive_deletes=True on a many-to-one emits
       a warning, since you probably intended to put it on
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed bug that would prevent "subqueryload" from
       working correctly with single table inheritance
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       When using from_self() with single table inheritance,
       the "where type in (x, y, z)" is placed on the outside
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Fixed bug in TypeDecorator whereby the dialect-specific
       type was getting pulled in to generate the DDL for a
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       TypeDecorator can now have a fully constructed type
       specified as its "impl", in addition to a type class.
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       TypeDecorator will now place itself as the resulting
       type for a binary expression where the type coercion
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       TypeDecorator.load_dialect_impl() returns "self.impl" by
       default, i.e. not the dialect implementation type of
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added type_coerce(expr, type\_) expression element.
       Treats the given expression as the given type when evaluating
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Table.tometadata() now copies Index objects associated
       with the Table as well.
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Table.tometadata() issues a warning if the given Table
       is already present in the target MetaData - the existing
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       An informative error message is raised if a Column
       which has not yet been assigned a name, i.e. as in
 
     .. change::
         :tags: declarative
-        :tickets: 
+        :tickets:
 
       A mixin can now specify a column that overrides
       a column of the same name associated with a superclass.
 
     .. change::
         :tags: engine
-        :tickets: 
+        :tickets:
 
       Fixed a regression in 0.6.4 whereby the change that
       allowed cursor errors to be raised consistently broke
 
     .. change::
         :tags: engine
-        :tickets: 
+        :tickets:
 
       the logging message emitted by the engine when
       a connection is first used is now "BEGIN (implicit)"
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       Added "as_tuple" flag to ARRAY type, returns results
       as tuples instead of lists to allow hashing.
 
     .. change::
         :tags: tests
-        :tickets: 
+        :tickets:
 
       the NoseSQLAlchemyPlugin has been moved to a
       new package "sqlalchemy_nose" which installs
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The name ConcurrentModificationError has been
       changed to StaleDataError, and descriptive
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The Session class is now present in sqlalchemy.orm.*.
       We're moving away from the usage of create_session(),
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       query.with_parent() now accepts transient objects
       and will use the non-persistent values of their pk/fk
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The include_properties and exclude_properties arguments
       to mapper() now accept Column objects as members in
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       An object that's been deleted now gets a flag
       'deleted', which prohibits the object from
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       make_transient() can be safely called on an
       already transient instance.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       a warning is emitted in mapper() if the polymorphic_on
       column is not present either in direct or derived
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Another pass through the series of error messages
       emitted when relationship() is configured with
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Repaired the usage of merge() when used with
       concrete inheriting mappers.  Such mappers frequently
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Similarly, for relationship(), foreign_keys,
       remote_side, order_by - all column-based
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Applied further memoizations to calculated Mapper
       properties, with significant (~90%) runtime mapper.py
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       mapper _get_col_to_prop private method used
       by the versioning example is deprecated;
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       the versioning example works correctly now
       if versioning on a col that was formerly
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Calling execute() on an alias() construct is pending
       deprecation for 0.7, as it is not itself an
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       The execute() and scalar() methods of ClauseElement
       are now moved appropriately to the Executable
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added basic math expression coercion for
       Numeric->Integer,
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       the text() construct, if placed in a column
       oriented situation, will at least return NULLTYPE
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added full description of parent table/column,
       target table/column in error message raised when
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       the _Label construct, i.e. the one that is produced
       whenever you say somecol.label(), now counts itself
 
     .. change::
         :tags: engine
-        :tickets: 
+        :tickets:
 
       Calling fetchone() or similar on a result that
       has already been exhausted, has been closed,
 
     .. change::
         :tags: engine
-        :tickets: 
+        :tickets:
 
       Connection, ResultProxy, as well as Session use
       ResourceClosedError for all "this
 
     .. change::
         :tags: engine
-        :tickets: 
+        :tickets:
 
       Connection.invalidate() can be called more than
       once and subsequent calls do nothing.
 
     .. change::
         :tags: declarative
-        :tickets: 
+        :tickets:
 
       if @classproperty is used with a regular class-bound
       mapper property attribute, it will be called to get the
 
     .. change::
         :tags: declarative
-        :tickets: 
+        :tickets:
 
       Fixed bug where "Can't add additional column" message
       would display the wrong name.
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       Fixed the psycopg2 dialect to use its
       set_isolation_level() method instead of relying
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       Fixed "default schema" query to work with
       pymssql backend.
 
     .. change::
         :tags: firebird
-        :tickets: 
+        :tickets:
 
       Fixed bug whereby a column default would fail to
       reflect if the "default" keyword were lower case.
 
     .. change::
         :tags: documentation
-        :tickets: 
+        :tickets:
 
       The docs have been reorganized such that the "API
       Reference" section is gone - all the docstrings from
 
     .. change::
         :tags: examples
-        :tickets: 
+        :tickets:
 
       The beaker_caching example has been reorganized
       such that the Session, cache manager,
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Added "column_descriptions" accessor to Query,
       returns a list of dictionaries containing
       come back as ints without SQLA type
       objects being involved and without needless
       conversion to Decimal first.
-      
+
       Unfortunately, some exotic subquery cases
       can even see different types between
       individual result rows, so the Numeric
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Query.join() will check for a call of the
       form query.join(target, clause_expression),
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       the post_update feature of relationship() has been
       reworked architecturally to integrate more closely
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Query.statement, Query.subquery(), etc. now transfer
       the values of bind parameters, i.e. those specified
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Subquery-eager-loading now works with Query objects
       which include params(), as well as get() Queries.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Can now call make_transient() on an instance that
       is referenced by parent objects via many-to-one,
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       query.order_by() now accepts False, which cancels
       any existing order_by() state on the Query, allowing
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       An instance which is moved to "transient", has
       an incomplete or missing set of primary key
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The make_transient() function is now in the generated
       documentation.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       make_transient() removes all "loader" callables from
       the state being made transient, removing any
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Fixed bug that would prevent overridden clause
       compilation from working for "annotated" expression
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Fixed bug in Enum type which blew away native_enum
       flag when used with TypeDecorators or other adaption
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Inspector hits bind.connect() when invoked to ensure
       initialize has been called.  the internal name ".conn"
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Modified the internals of "column annotation" such that
       a custom Column subclass can safely override
 
     .. change::
         :tags: mysql
-        :tickets: 
+        :tickets:
 
       MySQL dialect now detects NO_BACKSLASH_ESCAPES sql
       mode, in addition to ANSI_QUOTES.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Added more aggressive caching to the mapper's usage of
       UPDATE, INSERT, and DELETE expressions.  Assuming the
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Columns of _Binary type (i.e. LargeBinary, BLOB, etc.)
       will coerce a "basestring" on the right side into a
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Fixed errant space character when generating ADD CONSTRAINT
       for a named UNIQUE constraint.
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       the _make_proxy() method of ColumnClause and Column now use
       self.__class__ to determine the class of object to be returned
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Pool classes will reuse the same "pool_logging_name" setting
       after a dispose() occurs.
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Engine gains an "execution_options" argument and
       update_execution_options() method, which will apply to
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Along with the UOW rewrite, this also removes an issue
       introduced in 0.6beta3 regarding topological cycle detection
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Session.refresh() now does an equivalent expire()
       on the given instance first, so that the "refresh-expire"
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The ORM will set the docstring of all generated descriptors
       to None by default.  This can be overridden using 'doc'
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Added kw argument 'doc' to all mapper property callables
       as well as Column().  Will assemble the string 'doc' as
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The ORM now short-term caches the "compiled" form of
       insert() and update() constructs when flushing lists of
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       internal getattr(), setattr(), getcommitted() methods
       on ColumnProperty, CompositeProperty, RelationshipProperty
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Fixed an error in expression typing which caused an endless
       loop for expressions with two NULL types.
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Fixed bug in execution_options() feature whereby the existing
       Transaction and other state information from the parent
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added new 'compiled_cache' execution option.  A dictionary
       where Compiled objects will be cached when the Connection
 
     .. change::
         :tags: ext
-        :tickets: 
+        :tickets:
 
       the compiler extension now allows @compiles decorators
       on base classes that extend to child classes, @compiles
 
     .. change::
         :tags: ext
-        :tickets: 
+        :tickets:
 
       Declarative will raise an informative error message
       if a non-mapped class attribute is referenced in the
 
     .. change::
         :tags: ext
-        :tickets: 
+        :tickets:
 
       Further reworked the "mixin" logic in declarative to
       additionally allow __mapper_args__ as a @classproperty
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       Repaired missing import in psycopg2._PGNumeric type when
       unknown numeric is received.
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       psycopg2/pg8000 dialects now aware of REAL[], FLOAT[],
       DOUBLE_PRECISION[], NUMERIC[] return types without
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       Now using cx_oracle output converters so that the
       DBAPI returns natively the kinds of values we prefer:
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       STRING/FIXED_CHAR now convert to unicode natively.
       SQLAlchemy's String types then don't need to
 
     .. change::
         :tags: firebird
-        :tickets: 
+        :tickets:
 
       The functionality of result.rowcount can be disabled on a
       per-engine basis by setting 'enable_rowcount=False'
 
     .. change::
         :tags: examples
-        :tickets: 
+        :tickets:
 
       Updated attribute_shard.py example to use a more robust
       method of searching a Query for binary expressions which
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       To accommodate the fact that there are now two kinds of eager
       loading available, the new names for eagerload() and
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The "lazy" flag on the relationship() function now accepts
       a string argument for all kinds of loading: "select", "joined",
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed bug in Query whereby calling q.join(prop).from_self(...).
       join(prop) would fail to render the second join outside the
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed bug in Query whereby the usage of aliased() constructs
       would fail if the underlying table (but not the actual alias)
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed bug which affected all eagerload() and similar options
       such that "remote" eager loads, i.e. eagerloads off of a lazy
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Query gains an add_columns(\*columns) method which is a multi-
       version of add_column(col).  add_column(col) is future
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Query.join() will detect if the end result will be
       "FROM A JOIN A", and will raise an error if so.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Query.join(Cls.propname, from_joinpoint=True) will check more
       carefully that "Cls" is compatible with the current joinpoint,
 
     .. change::
         :tags: ext
-        :tickets: 
+        :tickets:
 
       The sqlalchemy.orm.shard module now becomes an extension,
       sqlalchemy.ext.horizontal_shard.   The old import
 
     .. change::
         :tags: py3k
-        :tickets: 
+        :tickets:
 
       Improved the installation/test setup regarding Python 3,
       now that Distribute runs on Py3k.   distribute_setup.py
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       added "lockmode" kw argument to Session.refresh(), will
       pass through the string value to Query the same as
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed bug in session.merge() which prevented dict-like
       collections from merging.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       session.merge() works with relations that specifically
       don't include "merge" in their cascade options - the target
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Now uses sqlalchemy.orm.exc.DetachedInstanceError when an
       attribute load or refresh action fails due to object
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Query called in the context of an expression will render
       disambiguating labels in all cases.    Note that this does
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed bug in attribute history that inadvertently invoked
       __eq__ on mapped instances.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Some internal streamlining of object loading grants a
       small speedup for large results, estimates are around
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Fixed cascade bug in many-to-one relation() when attribute
       was set to None, introduced in r6711 (cascade deleted
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       The most common result processors conversion function were
       moved to the new "processors" module.  Dialect authors are
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Some platforms will now interpret certain literal values
       as non-bind parameters, rendered literally into the SQL
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added "unicode_errors" parameter to String, Unicode, etc.
       Behaves like the 'errors' keyword argument to
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added math negation operator support, -x.
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       FunctionElement subclasses are now directly executable the
       same way any func.foo() construct is, with automatic
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       The "type" and "bind" keyword arguments of a func.foo()
       construct are now local to "func." constructs and are
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Restored the keys() method to ResultProxy.
 
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Made sqlalchemy.sql.expressions.Executable part of public
       API, used for any expression construct that can be sent to
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       the copy() method of Column now copies over uninitialized
       "on table attach" events.  Helps with the new declarative
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Added an optional C extension to speed up the sql layer by
       reimplementing RowProxy and the most common result processors.
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       the execution sequence pulls all rowcount/last inserted ID
       info from the cursor before commit() is called on the
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       The assert_unicode flag is deprecated.  SQLAlchemy will raise
       a warning in all cases where it is asked to encode a non-unicode
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Bind parameters are sent as a tuple instead of a list. Some
       backend drivers will not accept bind parameters as a list.
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       threadlocal engine wasn't properly closing the connection
       upon close() - fixed that.
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Transaction object doesn't rollback or commit if it isn't
       "active", allows more accurate nesting of begin/rollback/commit.
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Python unicode objects as binds result in the Unicode type,
       not string, thus eliminating a certain class of unicode errors
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       The visit_pool() method of Dialect is removed, and replaced with
       on_connect().  This method returns a callable which receives
 
     .. change::
         :tags: ticket: 1673, metadata
-        :tickets: 
+        :tickets:
 
       Added the ability to strip schema information when using
       "tometadata" by passing "schema=None" as an argument. If schema
 
     .. change::
         :tags: declarative
-        :tickets: 
+        :tickets:
 
       DeclarativeMeta exclusively uses cls.__dict__ (not dict\_)
       as the source of class information; _as_declarative exclusively
 
     .. change::
         :tags: mysql
-        :tickets: 
+        :tickets:
 
       Fixed reflection of TINYINT(1) "boolean" columns defined with
       integer flags like UNSIGNED.
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       Re-established support for the pymssql dialect.
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       Various fixes for implicit returning, reflection,
       etc. - the MS-SQL dialects aren't quite complete
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       Removed the text_as_varchar option.
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       "out" parameters require a type that is supported by
       cx_oracle.  An error will be raised if no cx_oracle
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       Oracle 'DATE' now does not perform any result processing,
       as the DATE type in Oracle stores full date+time objects,
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       Oracle INTERVAL type can now be reflected.
 
 
     .. change::
         :tags: sybase
-        :tickets: 
+        :tickets:
 
       Implemented a preliminary working dialect for Sybase,
       with sub-implementations for Python-Sybase as well
 
     .. change::
         :tags: examples
-        :tickets: 
+        :tickets:
 
       Changed the beaker cache example a bit to have a separate
       RelationCache option for lazyload caching.  This object
 
     .. change::
         :tags: release, major
-        :tickets: 
+        :tickets:
 
       For the full set of feature descriptions, see
       http://docs.sqlalchemy.org/en/latest/changelog/migration_06.html .
 
     .. change::
         :tags: release, major
-        :tickets: 
+        :tickets:
 
       All bug fixes and feature enhancements from the most
       recent 0.5 version and below are also included within 0.6.
 
     .. change::
         :tags: release, major
-        :tickets: 
+        :tickets:
 
       Platforms targeted now include Python 2.4/2.5/2.6, Python
       3.1, Jython2.5.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Changes to query.update() and query.delete():
         - the 'expire' option on query.update() has been renamed to
           'fetch', thus matching that of query.delete().
           'expire' is deprecated and issues a warning.
-      
+
         - query.update() and query.delete() both default to
           'evaluate' for the synchronize strategy.
-      
+
         - the 'synchronize' strategy for update() and delete()
           raises an error on failure. There is no implicit fallback
           onto "fetch". Failure of evaluation is based on the
         - many-to-one relations now fire off a lazyload in fewer
           cases, including in most cases will not fetch the "old"
           value when a new one is replaced.
-      
+
         - many-to-one relation to a joined-table subclass now uses
           get() for a simple load (known as the "use_get"
           condition), i.e. Related->Sub(Base), without the need to
           redefine the primaryjoin condition in terms of the base
           table.
-      
+
         - specifying a foreign key with a declarative column, i.e.
           ForeignKey(MyRelatedClass.id) doesn't break the "use_get"
           condition from taking place
-      
+
         - relation(), eagerload(), and eagerload_all() now feature
           an option called "innerjoin". Specify `True` or `False` to
           control whether an eager join is constructed as an INNER
           relation(). Should generally be set for many-to-one, not
           nullable foreign key relations to allow improved join
           performance.
-      
+
         - the behavior of eagerloading such that the main query is
           wrapped in a subquery when LIMIT/OFFSET are present now
           makes an exception for the case when all eager loads are
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Enhancements / Changes on Session.merge():
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       the "dont_load=True" flag on Session.merge() is deprecated
       and is now "load=False".
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Session.merge() is performance optimized, using half the
       call counts for "load=False" mode compared to 0.5 and
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       merge() will not issue a needless merge of attributes if the
       given instance is the same instance which is already present.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       merge() now also merges the "options" associated with a given
       state, i.e. those passed through query.options() which follow
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       A bug was fixed regarding the serialization of the "loader
       path" present on an instance's state, which is also necessary
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       The all new merge() is showcased in a new comprehensive
       example of how to integrate Beaker with SQLAlchemy.  See
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       the "save-update" cascade will now cascade the pending *removed*
       values from a scalar or collection attribute into the new session
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       a "dynamic" loader sets up its query criterion at construction
       time so that the actual query is returned from non-cloning
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       the "named tuple" objects returned when iterating a
       Query() are now pickleable.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       query.select_from() accepts multiple clauses to produce
       multiple comma separated entries within the FROM clause.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       query.select_from() also accepts mapped classes, aliased()
       constructs, and mappers as arguments.  In particular this
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       the mechanics of "backref" have been fully merged into the
       finer grained "back_populates" system, and take place entirely
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       added "execution_options()" to Query, to so options can be
       passed to the resulting statement. Currently only
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Query.yield_per() will set the "stream_results" statement
       option automatically.
 
     .. change::
         :tags: orm
-        :tickets: 
+        :tickets:
 
       Deprecated or removed:
        * 'allow_null_pks' flag on mapper() is deprecated.  It does
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       the "autocommit" flag on select() and text() as well
       as select().autocommit() are deprecated - now call
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       the autoincrement flag on column now indicates the column
       which should be linked to cursor.lastrowid, if that method
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       returning() support is native to insert(), update(),
       delete(). Implementations of varying levels of
       Oracle. returning() can be called explicitly with column
       expressions which are then returned in the resultset,
       usually via fetchone() or first().
-      
+
       insert() constructs will also use RETURNING implicitly to
       get newly generated primary key values, if the database
       version in use supports it (a version number check is
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added a tuple_() construct, allows sets of expressions
       to be compared to another set, typically with IN against
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       User-defined "default" and "onupdate" callables which
       accept a context should now call upon
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       removed needless "counter" behavior with select()
       labelnames that match a column name in the table,
 
     .. change::
         :tags: sql
-        :tickets: 
+        :tickets:
 
       Added "execution_options()" to select()/text(), which set the
       default options for the Connection.  See the note in "engines".
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Connection has execution_options(), generative method
       which accepts keywords that affect how the statement
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       added first() method to ResultProxy, returns first row and
       closes result set immediately.
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       RowProxy objects are now pickleable, i.e. the object returned
       by result.fetchone(), result.fetchall() etc.
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       RowProxy no longer has a close() method, as the row no longer
       maintains a reference to the parent.  Call close() on
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Databases which rely upon postfetch of "last inserted id"
       to get at a generated sequence value (i.e. MySQL, MS-SQL)
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       the last_inserted_ids() method has been renamed to the
       descriptor "inserted_primary_key".
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       ConnectionProxy now has wrapper methods for all transaction
       lifecycle events, including begin(), rollback(), commit()
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       Connection pool logging now uses both INFO and DEBUG
       log levels for logging.  INFO is for major events such
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       the "threadlocal" engine has been rewritten and simplified
       and now supports SAVEPOINT operations.
 
     .. change::
         :tags: engines
-        :tickets: 
+        :tickets:
 
       deprecated or removed
         * result.last_inserted_ids() is deprecated.  Use
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       deprecated MetaData.connect() and
       ThreadLocalMetaData.connect() have been removed - send
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       deprecated metadata.table_iterator() method removed (use
       sorted_tables)
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       deprecated PassiveDefault - use DefaultClause.
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       the "metadata" argument is removed from DefaultGenerator
       and subclasses, but remains locally present on Sequence,
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       Removed public mutability from Index and Constraint
       objects:
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       UniqueConstraint, Index, PrimaryKeyConstraint all accept
       lists of column names or column objects as arguments.
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       Other removed things:
         - Table.key (no idea what this was for)
 
     .. change::
         :tags: schema
-        :tickets: 
+        :tickets:
 
       The use_alter flag on ForeignKey is now a shortcut option
       for operations that can be hand-constructed using the
 
     .. change::
         :tags: reflection/inspection
-        :tickets: 
+        :tickets:
 
       Table reflection has been expanded and generalized into
       a new API called "sqlalchemy.engine.reflection.Inspector".
 
     .. change::
         :tags: reflection/inspection
-        :tickets: 
+        :tickets:
 
       Views are now reflectable as ordinary Table objects.  The same
       Table constructor is used, with the caveat that "effective"
 
     .. change::
         :tags: reflection/inspection
-        :tickets: 
+        :tickets:
 
       The existing autoload=True system now uses Inspector underneath
       so that each dialect need only return "raw" data about tables
 
     .. change::
         :tags: ddl
-        :tickets: 
+        :tickets:
 
       the DDL system has been greatly expanded.  the DDL() class
       now extends the more generic DDLElement(), which forms the basis
       of many new constructs:
-      
+
         - CreateTable()
         - DropTable()
         - AddConstraint()
         - DropIndex()
         - CreateSequence()
         - DropSequence()
-      
+
        These support "on" and "execute-at()" just like plain DDL()
        does.  User-defined DDLElement subclasses can be created and
        linked to a compiler using the sqlalchemy.ext.compiler extension.
 
     .. change::
         :tags: ddl
-        :tickets: 
+        :tickets:
 
       The signature of the "on" callable passed to DDL() and
       DDLElement() is revised as follows:
-      
+
         ddl
             the DDLElement object itself
         event
             CREATE/DROP DDL is to be issued is passed as the kw
             argument "tables". This is necessary for metadata-level
             DDL that is dependent on the presence of specific tables.
-      
+
       The "schema_item" attribute of DDL has been renamed to
         "target".
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       Dialect modules are now broken into database dialects
       plus DBAPI implementations. Connect URLs are now
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       the setuptools entrypoint for external dialects is now
       called "sqlalchemy.dialects".
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       the "owner" keyword argument is removed from Table. Use
       "schema" to represent any namespaces to be prepended to
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       server_version_info becomes a static attribute.
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       dialects receive an initialize() event on initial
       connection to determine connection properties.
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       dialects receive a visit_pool event have an opportunity
       to establish pool listeners.
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       cached TypeEngine classes are cached per-dialect class
       instead of per-dialect.
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       new UserDefinedType should be used as a base class for
       new types, which preserves the 0.5 behavior of
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       The result_processor() method of all type classes now
       accepts a second argument "coltype", which is the DBAPI
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       Deprecated Dialect.get_params() removed.
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       Dialect.get_rowcount() has been renamed to a descriptor
       "rowcount", and calls cursor.rowcount directly. Dialects
 
     .. change::
         :tags: dialect, refactor
-        :tickets: 
+        :tickets:
 
       Functions and operators generated by the compiler now use
       (almost) regular dispatch functions of the form
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       New dialects: pg8000, zxjdbc, and pypostgresql
       on py3k.
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       The "postgres" dialect is now named "postgresql" !
       Connection strings look like:
-      
+
            postgresql://scott:tiger@localhost/test
            postgresql+pg8000://scott:tiger@localhost/test
-      
+
        The "postgres" name remains for backwards compatibility
        in the following ways:
-      
+
            - There is a "postgres.py" dummy dialect which
              allows old URLs to work, i.e.
              postgres://scott:tiger@localhost/test
-      
+
            - The "postgres" name can be imported from the old
              "databases" module, i.e. "from
              sqlalchemy.databases import postgres" as well as
              "dialects", "from sqlalchemy.dialects.postgres
              import base as pg", will send a deprecation
              warning.
-      
+
            - Special expression arguments are now named
              "postgresql_returning" and "postgresql_where", but
              the older "postgres_returning" and
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       "postgresql_where" now accepts SQL expressions which
       can also include literals, which will be quoted as needed.
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       The psycopg2 dialect now uses psycopg2's "unicode extension"
       on all new connections, which allows all String/Text/etc.
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       INTERVAL supports an optional "precision" argument
       corresponding to the argument that PG accepts.
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       using new dialect.initialize() feature to set up
       version-dependent behavior.
 
     .. change::
         :tags: postgresql
-        :tickets: 
+        :tickets:
 
       autoincrement SELECT statements, i.e. those which
       select from a procedure that modifies rows, now work
 
     .. change::
         :tags: mysql
-        :tickets: 
+        :tickets:
 
       New dialects: oursql, a new native dialect,
       MySQL Connector/Python, a native Python port of MySQLdb,
 
     .. change::
         :tags: mysql
-        :tickets: 
+        :tickets:
 
       VARCHAR/NVARCHAR will not render without a length, raises
       an error before passing to MySQL.   Doesn't impact
 
     .. change::
         :tags: mysql
-        :tickets: 
+        :tickets:
 
       all the _detect_XXX() functions now run once underneath
       dialect.initialize()
 
     .. change::
         :tags: mysql
-        :tickets: 
+        :tickets:
 
       the BINARY and MSBinary types now generate "BINARY" in all
       cases.  Omitting the "length" parameter will generate
 
     .. change::
         :tags: mysql
-        :tickets: 
+        :tickets:
 
       the "quoting='quoted'" argument to MSEnum/ENUM is deprecated.
       It's best to rely upon the automatic quoting.
 
     .. change::
         :tags: mysql
-        :tickets: 
+        :tickets:
 
       ENUM now subclasses the new generic Enum type, and also handles
       unicode values implicitly, if the given labelnames are unicode
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       unit tests pass 100% with cx_oracle !
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       support for cx_Oracle's "native unicode" mode which does
       not require NLS_LANG to be set. Use the latest 5.0.2 or
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       an NCLOB type is added to the base types.
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       use_ansi=False won't leak into the FROM/WHERE clause of
       a statement that's selecting from a subquery that also
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       usage of the CHAR type results in cx_oracle's
       FIXED_CHAR dbapi type being bound to statements.
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       func.char_length is a generic function for LENGTH
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       ForeignKey() which includes onupdate=<value> will emit a
       warning, not emit ON UPDATE CASCADE which is unsupported
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       the keys() method of RowProxy() now returns the result
       column names *normalized* to be SQLAlchemy case
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       using new dialect.initialize() feature to set up
       version-dependent behavior.
 
     .. change::
         :tags: oracle
-        :tickets: 
+        :tickets:
 
       "case sensitivity" feature will detect an all-lowercase
       case-sensitive column name during reflect and add
 
     .. change::
         :tags: firebird
-        :tickets: 
+        :tickets:
 
       the keys() method of RowProxy() now returns the result
       column names *normalized* to be SQLAlchemy case
 
     .. change::
         :tags: firebird
-        :tickets: 
+        :tickets:
 
       using new dialect.initialize() feature to set up
       version-dependent behavior.
 
     .. change::
         :tags: firebird
-        :tickets: 
+        :tickets:
 
       "case sensitivity" feature will detect an all-lowercase
       case-sensitive column name during reflect and add
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       MSSQL + Pyodbc + FreeTDS now works for the most part,
       with possible exceptions regarding binary data as well as
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       the "has_window_funcs" flag is removed. LIMIT/OFFSET
       usage will use ROW NUMBER as always, and if on an older
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       the "auto_identity_insert" flag is removed. This feature
       always takes effect when an INSERT statement overrides a
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       using new dialect.initialize() feature to set up
       version-dependent behavior.
 
     .. change::
         :tags: mssql
-        :tickets: 
+        :tickets:
 
       removed references to sequence which is no longer used.
       implicit identities in mssql work the same as implicit
 
     .. change::
         :tags: sqlite
-        :tickets: 
+        :tickets:
 
       DATE, TIME and DATETIME types can now take optional storage_format
       and regexp argument. storage_format can be used to store those types
 
     .. change::
         :tags: sqlite
-        :tickets: 
+        :tickets:
 
       Time and DateTime types now use by a default a stricter regular
       expression to match strings from the database. Use the regexp
 
     .. change::
         :tags: sqlite
-        :tickets: 
+        :tickets:
 
       __legacy_microseconds__ on SQLite Time and DateTime types is not
       supported anymore. You should use the storage_format argument
 
     .. change::
         :tags: sqlite
-        :tickets: 
+        :tickets:
 
       Date, Time and DateTime types are now stricter in what they accept as
       bind parameters: Date type only accepts date objects (and datetime
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       The construction of types within dialects has been totally
       overhauled.  Dialects now define publicly available types
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       Types no longer make any guesses as to default
       parameters. In particular, Numeric, Float, NUMERIC,
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       String/Text/Unicode types now skip the unicode() check
       on each result column value if the dialect has
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       Most types result processors have been checked for possible speed
       improvements. Specifically, the following generic types have been
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       Reflection of types now returns the exact UPPERCASE
       type within types.py, or the UPPERCASE type within
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       PickleType now uses == for comparison of values when
       mutable=True, unless the "comparator" argument with a
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       The default "precision" and "scale" arguments of Numeric
       and Float have been removed and now default to None.
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       AbstractType.get_search_list() is removed - the games
       that was used for are no longer necessary.
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       sqlsoup has been overhauled to explicitly support an 0.5 style
       session, using autocommit=False, autoflush=True. Default
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       sqlsoup db.<sometable>.update() and delete() now call
       query(cls).update() and delete(), respectively.
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       sqlsoup now has execute() and connection(), which call upon
       the Session methods of those names, ensuring that the bind is
 
     .. change::
         :tags: types
-        :tickets: 
+        :tickets:
 
       sqlsoup objects no longer have the 'query' attribute - it's
       not needed for sqlsoup's usage paradigm and it gets in the
index 2ddeedded2526e12d17f4dddfc557cf1af3aafa3..f921d294919e1673a89d1a026b66f23cab7aedea 100644 (file)
@@ -1,62 +1,62 @@
-
 =============
 0.7 Changelog
 =============
 
 .. changelog::
     :version: 0.7.11
+    :released:
 
     .. change::
         :tags: bug, engine
         :tickets: 2851
         :versions: 0.8.3, 0.9.0b1
 
-        The regexp used by the :func:`~sqlalchemy.engine.url.make_url` function now parses
-        ipv6 addresses, e.g. surrounded by brackets.
+      The regexp used by the :func:`~sqlalchemy.engine.url.make_url` function now parses
+      ipv6 addresses, e.g. surrounded by brackets.
 
     .. change::
         :tags: bug, orm
         :tickets: 2807
         :versions: 0.8.3, 0.9.0b1
 
-        Fixed bug where list instrumentation would fail to represent a
-        setslice of ``[0:0]`` correctly, which in particular could occur
-        when using ``insert(0, item)`` with the association proxy.  Due
-        to some quirk in Python collections, the issue was much more likely
-        with Python 3 rather than 2.
+      Fixed bug where list instrumentation would fail to represent a
+      setslice of ``[0:0]`` correctly, which in particular could occur
+      when using ``insert(0, item)`` with the association proxy.  Due
+      to some quirk in Python collections, the issue was much more likely
+      with Python 3 rather than 2.
 
     .. change::
         :tags: bug, sql
         :tickets: 2801
         :versions: 0.8.3, 0.9.0b1
 
-        Fixed regression dating back to 0.7.9 whereby the name of a CTE might
-        not be properly quoted if it was referred to in multiple FROM clauses.
+      Fixed regression dating back to 0.7.9 whereby the name of a CTE might
+      not be properly quoted if it was referred to in multiple FROM clauses.
 
     .. change::
         :tags: mysql, bug
         :tickets: 2791
         :versions: 0.8.3, 0.9.0b1
 
-        Updates to MySQL reserved words for versions 5.5, 5.6, courtesy
-        Hanno Schlichting.
+      Updates to MySQL reserved words for versions 5.5, 5.6, courtesy
+      Hanno Schlichting.
 
     .. change::
         :tags: sql, bug, cte
         :tickets: 2783
         :versions: 0.8.3, 0.9.0b1
 
-        Fixed bug in common table expression system where if the CTE were
-        used only as an ``alias()`` construct, it would not render using the
-        WITH keyword.
+      Fixed bug in common table expression system where if the CTE were
+      used only as an ``alias()`` construct, it would not render using the
+      WITH keyword.
 
     .. change::
         :tags: bug, sql
         :tickets: 2784
         :versions: 0.8.3, 0.9.0b1
 
-        Fixed bug in :class:`.CheckConstraint` DDL where the "quote" flag from a
-        :class:`.Column` object would not be propagated.
+      Fixed bug in :class:`.CheckConstraint` DDL where the "quote" flag from a
+      :class:`.Column` object would not be propagated.
 
     .. change::
         :tags: bug, orm
index 2144397f749ebdf3ed996320a0b7588f517ed26e..90407b2b2a67acdd97133827284df9acd7e114d1 100644 (file)
@@ -1,4 +1,3 @@
-
 =============
 0.8 Changelog
 =============
index dbc2495f596133c6c9c5f33e3e869a0c42f1218a..451c1a6c9e090dc23097971cb455ee2c4f85670e 100644 (file)
@@ -7,9 +7,11 @@
     .. include:: changelog_08.rst
         :start-line: 5
 
+
     .. include:: changelog_07.rst
         :start-line: 5
 
+
 .. _unreleased_changelog::
     :version: 0.9.11
 
index af716c750b28977fd96fc0d3d197282ee4589825..7f73fa9e4b3ae861510146b804bba59949d39470 100644 (file)
@@ -1,5 +1,3 @@
-
-
 =============
 1.0 Changelog
 =============
@@ -9,13 +7,16 @@
     .. include:: changelog_09.rst
         :start-line: 5
 
+
     .. include:: changelog_08.rst
         :start-line: 5
 
+
     .. include:: changelog_07.rst
         :start-line: 5
 
 
+
 .. changelog::
     :version: 1.0.19
     :released: August 3, 2017
index 247583069b207dbda3537b29e1ba253db7f46446..d4eef6811825cf08e189bd31d9e4eeb456896e70 100644 (file)
@@ -7,16 +7,20 @@
     .. include:: changelog_10.rst
         :start-line: 5
 
+
     .. include:: changelog_09.rst
         :start-line: 5
 
+
     .. include:: changelog_08.rst
         :start-line: 5
 
+
     .. include:: changelog_07.rst
         :start-line: 5
 
 
+
 .. changelog::
     :version: 1.1.19
     :include_notes_from: unreleased_11
index fb47fa336744592cea1167baae5adce3b97f4800..4d8d41bbbdce2a5a2264d62cfbfe8be7e2699014 100644 (file)
@@ -7,9 +7,11 @@
     .. include:: changelog_11.rst
         :start-line: 5
 
+
     .. include:: changelog_10.rst
         :start-line: 5
 
+
 .. changelog::
     :version: 1.2.20
     :include_notes_from: unreleased_12
index a97d818e7d9a042f89932148245a957b7c66c5ba..f8487d51d2d81c4c88f837d6cfa8fff3adbec10f 100644 (file)
@@ -1298,7 +1298,7 @@ be no pending state change on an unloaded attribute.
 :ticket:`2320`
 
 :attr:`.Column.key` is honored in the :attr:`.Select.c` attribute of :func:`~.sql.expression.select` with :meth:`.Select.apply_labels`
------------------------------------------------------------------------------------------------------------------------
+---------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 Users of the expression system know that :meth:`.Select.apply_labels`
 prepends the table name to each column name, affecting the
index 77b4e34af64259dedaadba5a4b03e669dd1cf8a5..d9fc6c6c49bfabb1454506cc5cca278ff2a0e6e9 100644 (file)
@@ -51,7 +51,7 @@ SQLAlchemy 1.x to 2.0 Transition
 
 .. admonition:: Certainty: definite
 
-  ::
+    This change will proceed.
 
 An extremely high priority of the SQLAlchemy 2.0 project is that transition
 from the 1.x to 2.0 series will be as straightforward as possible.  The
@@ -111,7 +111,7 @@ Python 3 Only
 
 .. admonition:: Certainty: definite
 
-  ::
+    This change will proceed.
 
 At the top level, Python 2 is now retired in 2020, and new Python development
 across the board is expected to be in Python 3.   SQLAlchemy will maintain
index a7b6e2edec1706df4c3183899ea5aef169b0a16f..a2b7060d3aaf793eaa086ce279369cd1e36fb252 100644 (file)
@@ -7,6 +7,5 @@ Core API Basics
 
     event
     inspection
-    interfaces
     exceptions
     internals
index 991820efca2e0e2bfcdbc2e513c2e5dcc57edb23..c077cd83779d6d4957fe09fb3dce35dabeeb81cb 100644 (file)
@@ -1,7 +1,7 @@
 .. _metadata_constraints_toplevel:
 .. _metadata_constraints:
 
-.. module:: sqlalchemy.schema
+.. currentmodule:: sqlalchemy.schema
 
 ================================
 Defining Constraints and Indexes
index 1332b7758159e15033f5e009e8eb81ced2d28b27..22c9e702ad200d4eecb70e4f6fdd355fd2489d43 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.types
+.. currentmodule:: sqlalchemy.types
 
 .. _types_custom:
 
index 3ca4dccf485e70d54838155007e6c35a43b9c929..46a4e1d841720bd0838ba9418e8f279dbdb7639f 100644 (file)
@@ -1,6 +1,6 @@
 .. _metadata_ddl_toplevel:
 .. _metadata_ddl:
-.. module:: sqlalchemy.schema
+.. currentmodule:: sqlalchemy.schema
 
 Customizing DDL
 ===============
index be902fd50cb5639bc115c3c4e146c0cf27216393..73520bdfd108fdd612a8e6a2dfc7b541b05fbcfb 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.schema
+.. currentmodule:: sqlalchemy.schema
 
 .. _metadata_defaults_toplevel:
 
index a6ed873d879de1ecb0f8923c2253dd8d75fa9a14..d83a52e7b8d202548c25cec0697f7845a6c9ef63 100644 (file)
@@ -5,7 +5,7 @@ INSERT, UPDATE and DELETE statements build on a hierarchy starting
 with :class:`.UpdateBase`.   The :class:`~.sql.expression.Insert` and :class:`.Update`
 constructs build on the intermediary :class:`.ValuesBase`.
 
-.. module:: sqlalchemy.sql.expression
+.. currentmodule:: sqlalchemy.sql.expression
 
 .. autofunction:: delete
 
index 90164850d4cb8a60915a75dae413fa3f4bfdf881..cb53eda13988f4466df81554dafa2a7922705f14 100644 (file)
@@ -5,7 +5,7 @@
 SQL and Generic Functions
 =========================
 
-.. module:: sqlalchemy.sql.expression
+.. currentmodule:: sqlalchemy.sql.expression
 
 SQL functions which are known to SQLAlchemy with regards to database-specific
 rendering, return types and argument behavior. Generic functions are invoked
index 8092f149064f3b239fcfc5b8e1bae0a7f2d007e5..1848c044e04539452d6aa44fc900e09a69fc7ee4 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.schema
+.. currentmodule:: sqlalchemy.schema
 
 .. _metadata_reflection_toplevel:
 .. _metadata_reflection:
index 8553ebcbf67831c5fa0eb8af633d2c17a3285e61..5de685c7f24840f04ed368e14724595f8929fd96 100644 (file)
@@ -4,7 +4,7 @@
 Schema Definition Language
 ==========================
 
-.. module:: sqlalchemy.schema
+.. currentmodule:: sqlalchemy.schema
 
 This section references SQLAlchemy **schema metadata**, a comprehensive system of describing and inspecting
 database schemas.
index 2ac2437570c824ad4517ae49de4dd213add014b4..4771222e8661fdbc47e5e0c498bd67a43ddd88f5 100644 (file)
@@ -7,7 +7,7 @@ distinguishing feature is their :attr:`.FromClause.c` attribute, which is
 a namespace of all the columns contained within the FROM clause (these
 elements are themselves :class:`.ColumnElement` subclasses).
 
-.. module:: sqlalchemy.sql.expression
+.. currentmodule:: sqlalchemy.sql.expression
 
 .. autofunction:: alias
 
index f7f9cab641ff7a558956bb0581c421393e77a2d2..b7bb48b95b3614880b15b1577860e3a1011d5103 100644 (file)
@@ -1,7 +1,7 @@
 Column Elements and Expressions
 ===============================
 
-.. module:: sqlalchemy.sql.expression
+.. currentmodule:: sqlalchemy.sql.expression
 
 The expression API consists of a series of classes each of which represents a
 specific lexical element within a SQL string.  Composed together
index f165df5a2668259c0075b269d9f2131dc215b764..115cbd202f210469dbfc49ce7c739f7c797dd1e8 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.types
+.. currentmodule:: sqlalchemy.types
 
 .. _types_api:
 
index 0b13fbca5201d9676ac3f3e4031ba0cb60868c3a..0ba4763b42b4dd0694919a5711aa3bf7f34c8b1f 100644 (file)
@@ -124,10 +124,6 @@ pymssql
 -------
 .. automodule:: sqlalchemy.dialects.mssql.pymssql
 
-zxjdbc
-------
-
-.. automodule:: sqlalchemy.dialects.mssql.zxjdbc
 
 AdoDBAPI
 --------
index 9e49f7c1ead814d846c9ba1eb4b4c1cef86c23d5..cba82ef00d9daaccb39a4566710676aacdfa8068 100644 (file)
@@ -13,7 +13,6 @@ This section presents additional information about collection configuration
 and techniques.
 
 .. _largecollections:
-.. currentmodule:: sqlalchemy.orm
 
 Working with Large Collections
 ==============================
@@ -185,6 +184,7 @@ database.
     :paramref:`.orm.mapper.passive_deletes` - similar feature on :func:`.mapper`
 
 .. currentmodule:: sqlalchemy.orm.collections
+
 .. _custom_collections:
 
 Customizing Collection Access
index e933e81c9080309f9f577fbc47a52c04543e415c..786a6b5be8cf6111e77bf4474215dc4321d98d71 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 .. _mapper_composite:
 
index 4d7268557d39c15ed3a74498202e04880ab8ac8f..ded70a9720c5a6b67385a5c3d9ca92d3641ce6e0 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 .. _mapping_constructors:
 
index f20f01c18a14798264bb5228516b8de1749ef2e6..31e543a85ac33d21a63bbc52d6a00c18e152aa43 100644 (file)
@@ -8,5 +8,4 @@ Events and Internals
     events
     internals
     exceptions
-    deprecated
 
index fe35178a6959b89e6395a70ceeabab0c30147d6d..20ddc2b234a52c21de832cc3c12249faddecf0f5 100644 (file)
@@ -21,9 +21,6 @@ sections, are listed here.
 .. autoclass:: sqlalchemy.orm.properties.ColumnProperty
     :members:
 
-.. autoclass:: sqlalchemy.orm.descriptor_props.ComparableProperty
-    :members:
-
 .. autoclass:: sqlalchemy.orm.descriptor_props.CompositeProperty
     :members:
 
index f36f520b02b3ecb29025fc87fe66bcee84183edf..d226ad670cf682f759e939ed33c86d4d00452401 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 ===============
 Loading Columns
index bce40bfb4910b86216f90f052e5604a31d140951..535c075c94b65545baff04eed32e4f63ef1deb23 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 Changing Attribute Behavior
 ===========================
index e819e1ba828d6a0361814dcf50849199092b3668..367139d197f5c9b194bd3d377397a35967ebf4ec 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 .. _mapper_sql_expressions:
 
index cd7c379cd2ee5c849efc279c32bae5bc10c908f8..99e0ba52d441adf00fb379c5c91c3b2d99fd5155 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 Class Mapping API
 =================
index 7d7b691409145cf2fa3047e95d7e7f030df31ae6..71e145747c12c8d7a7854ee6c230335237960918 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 Mapping Table Columns
 =====================
index 7d54de354d339db39c33644e5dbcb185c5e85bf3..0c1af27bca81510618c136ee904bdf8f5ce33c7d 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 .. _query_api_toplevel:
 
index 03045f6980d75d41f26d07d9ddcdc616a73ef85c..2766c4020a714a654f578653c1b9568b2b85c61d 100644 (file)
@@ -1,4 +1,4 @@
-.. automodule:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 Relationships API
 -----------------
index f5cbac87eba4342eb3ea61a6fdd1f53970295ef8..37f59d34523473b02253423728ccdfd0260ee98e 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 .. _relationship_config_toplevel:
 
index 65efd5dbd9f1f01b0c47ac68ee55f673e0b6ff04..e8829af49a61166f04cd6101fdc3f1437c928c5b 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm
+.. currentmodule:: sqlalchemy.orm
 
 ===============================
 Mapping Columns and Expressions
index 683719945fb787831bb282c6345563bc2700793e..11e37a2c87aa09606093800a0698302a65361e94 100644 (file)
@@ -1,4 +1,4 @@
-.. module:: sqlalchemy.orm.session
+.. currentmodule:: sqlalchemy.orm.session
 
 Session API
 ===========
index 7f0270b425217eef530e94d6f7224a137cfba9d8..db5f9dee730f1fef89bc4a4af3e8fbc47e58ac27 100644 (file)
@@ -33,6 +33,7 @@ from .interfaces import ExceptionContext  # noqa
 from .interfaces import ExecutionContext  # noqa
 from .interfaces import TypeCompiler  # noqa
 from .mock import create_mock_engine
+from .result import BaseResult  # noqa
 from .result import BaseRow  # noqa
 from .result import BufferedColumnResultProxy  # noqa
 from .result import BufferedColumnRow  # noqa
index d08b35a2e8d545383940e034ee683d19f083e5bc..029a28c689f9915067c5f824793fff245007d849 100644 (file)
@@ -98,7 +98,9 @@ relationship = public_factory(RelationshipProperty, ".orm.relationship")
 
 @_sa_util.deprecated_20("relation", "Please use :func:`.relationship`.")
 def relation(*arg, **kw):
-    """A synonym for :func:`relationship`."""
+    """A synonym for :func:`relationship`.
+
+    """
 
     return relationship(*arg, **kw)
 
index eea4003f24296baee4cfcc785ce3a80700804b8d..a02955c8c6990b4b03f3fbc5711a022c1461808b 100644 (file)
@@ -578,7 +578,9 @@ class Executable(Generative):
         ":class:`.Session`.",
     )
     def execute(self, *multiparams, **params):
-        """Compile and execute this :class:`.Executable`."""
+        """Compile and execute this :class:`.Executable`.
+
+        """
         e = self.bind
         if e is None:
             label = getattr(self, "description", self.__class__.__name__)
index 4dc2b8bbf3a60affaec9b264680e3b288e6e92b1..e25063372b530e6b10948e2ee95cdf9acbc7839f 100644 (file)
@@ -19,6 +19,7 @@ __all__ = [
     "AliasedReturnsRows",
     "any_",
     "all_",
+    "CacheKey",
     "ClauseElement",
     "ColumnCollection",
     "ColumnElement",
@@ -159,6 +160,7 @@ from .selectable import TableSample  # noqa
 from .selectable import TextAsFrom  # noqa
 from .selectable import TextualSelect  # noqa
 from .selectable import Values  # noqa
+from .traversals import CacheKey  # noqa
 from .visitors import Visitable  # noqa
 from ..util.langhelpers import public_factory  # noqa
 
index 56695708e359c3550f3b602ac50d869cf0e4cde7..d65821c5cda26f9bd0feb0b396507e93e86950e5 100644 (file)
@@ -787,7 +787,9 @@ class Table(DialectKWArgs, SchemaItem, TableClause):
         ":meth:`.Inspector.has_table`.",
     )
     def exists(self, bind=None):
-        """Return True if this table exists."""
+        """Return True if this table exists.
+
+        """
 
         if bind is None:
             bind = _bind_or_error(self)
index 595b1bdfac53a0059424197feeb39c8d4009dbc6..9c593ea5dfeaa002376771633db1dd045b8a9752 100644 (file)
@@ -3814,19 +3814,19 @@ class Select(
         "1.4",
         "The :meth:`.Select.column` method is deprecated and will "
         "be removed in a future release.  Please use "
-        ":meth:`.Select.add_columns",
+        ":meth:`.Select.add_columns`",
     )
     def column(self, column):
         """return a new select() construct with the given column expression
-            added to its columns clause.
+           added to its columns clause.
 
-            E.g.::
+           E.g.::
 
                 my_select = my_select.column(table.c.new_column)
 
-            See the documentation for :meth:`.Select.with_only_columns`
-            for guidelines on adding /replacing the columns of a
-            :class:`.Select` object.
+           See the documentation for :meth:`.Select.with_only_columns`
+           for guidelines on adding /replacing the columns of a
+           :class:`.Select` object.
 
         """
         return self.add_columns(column)
index 5504bf3d8cc9d4e1886ea307e43ed6b0d4ec3dd4..29ed013091175f8b2b15791f7509d779c8935cff 100644 (file)
@@ -386,7 +386,7 @@ class InternalTraversal(util.with_metaclass(_InternalTraversalType, object)):
     """visit the values() ordered tuple list of an :class:`.Update` object."""
 
     dp_dml_values = symbol("DML_V")
-    """visit the values() dictionary of a :class:`.ValuesBase
+    """visit the values() dictionary of a :class:`.ValuesBase`
     (e.g. Insert or Update) object.
 
     """
index 7e990602882bb0269c43da2db9561a6bda405736..bd670f2cc1a2f7252d2e29ea0c2d961712e5e0d3 100644 (file)
@@ -223,7 +223,7 @@ def %(name)s(%(args)s):
             "Inherited from :func:`sqlalchemy%s`; this constructor "
             "creates a :class:`%s` object"
             % (linked_to_location, class_location),
-            0,
+            1,
         )
         decorated.__doc__ = linked_to_doc
     else:
@@ -1637,6 +1637,8 @@ def _dedent_docstring(text):
 def inject_docstring_text(doctext, injecttext, pos):
     doctext = _dedent_docstring(doctext or "")
     lines = doctext.split("\n")
+    if len(lines) == 1:
+        lines.append("")
     injectlines = textwrap.dedent(injecttext).split("\n")
     if injectlines[0]:
         injectlines.insert(0, "")