Add history/changelog to docs

Change-Id: I6f96f02f73ef0c217c6327172f391a06900c2cf9
ModelsMigrationsSync:add correct server_default check for Enum

If Column which type is Enum has server_default it is compared
incorrectly for PostgreSQL.

For example, Column('test', sa.Enum('one', 'two', name='enum'),
                     server_default='one').
In model it has DefaultClause('one', for_update=False)) alembic
finds it different from server variant "'one'::enum".

Change-Id: Id30858f9c4c7a2bfb7f9313d47930845fe354a70
Use the six provided iterator mix-in

Instead of having a customized next() and __next__() methods
just use the mix-in that six provides and used it to avoid
having to declare our own next() compatability function.

Change-Id: I1a5fc9bd43783577af879476ca46afcc668185f5
Use six.wraps instead of functools.wraps

The six module provides a helper wraps function that correctly
tracks the original wrapped function in python 2.x and 3.x so
use it where we can so that we maintain better compatability with
3.x

Change-Id: Ifa994bf63153f58f0aa1f6203a963ac7312ac2b1
Unwrap DialectFunctionDispatcher from itself.

The DialectFunctionDispatcher.dispatch_for() decorator method
necessarily returns the dispatcher itself and not the
decorated function, so that the object can continue to be
re-used even if the function name is the same as that of the
dispatcher.   In order to support a single function being
wrapped by the dispatcher multiple times with different
criteria, dispatch_for() will now check for the last function
wrapped and use that.

Change-Id: I331670d9b76ae30e7a666648e7e2d4c72641c9ff
Closes-Bug: #1373568
Explicitly depend on six in requirements file

Six is used directly in oslo.db (and is not just a transitive
dependency) so it should be listed in the requirements file
just like other non-transitive dependencies.

Change-Id: I81d2d7d0db9142bace7ecf8882efbbcd605fb527
Start adding a environment for py34/py33

Get a tox environment for py34/py33 that doesn't stop the existing
py26 and py27 to continue working with the adjusted test-requirements since
MySQL-python and sqlalchemy-migrate do not yet exist in 3.x.

Note that this does not fully make py34 work yet but it starts to work
in this direction of getting it to work (which will apparently require
quite a big more tweaking).

Change-Id: I024957a76f2de0bd406d14da5af6e4caf3d493e7
Create a nested helper function that will work on py3.x

The contextlib.nested function doesn't exist on py3.x so
in order to retain similar functionality create an equivalent
that will perform good enough for oslo.db usage.

Change-Id: I326816c9301f1c625e1e2723d4d639fd81cc596c
Use fixture from oslo.config instead of oslo-incubator

Change-Id: Ic80562c662960a946b3083f0509700e4809d628d
Merge "Use the six provided iterator mix-in"
Merge "Use six.wraps instead of functools.wraps"
Merge "Start adding a environment for py34/py33"
Merge "Create a nested helper function that will work on py3.x"
Merge "Unwrap DialectFunctionDispatcher from itself."
Merge "Add history/changelog to docs"
Merge "Use fixture from oslo.config instead of oslo-incubator"
Merge "Explicitly depend on six in requirements file"
Imported Translations from Transifex

Change-Id: I93f686641085244cb30020c6c946fab9e51a2206
Ensure create_engine() retries the initial connection test

Before return create_engine() tests the connectivity to a DB. At this
moment a DB might be unavailable for some reason, in which case
create_engine() retries a few times. When used with MySQL, we didn't
actually retry, but instead failed on the first connectivity error
when trying to get the value of sql_mode session variable.

Closes-Bug: #1376211

Co-Authored-By: Mike Bayer <mike_mp@zzzcomputing.com>
Change-Id: I14e25cfe1ed51b0d51a94e491b7267f26e42d34e
Improve error reporting for backend import failures

Use import_module instead of try_import so that any import exception
includes a full stack trace and the original error message.

Change-Id: I64449688f22a224b590807317472f26e64f377a3