[Python-modules-commits] [sqlalchemy] 01/03: Import sqlalchemy_1.0.12+ds1.orig.tar.xz

Piotr Ożarowski piotr at moszumanska.debian.org
Sun Feb 28 21:38:30 UTC 2016


This is an automated email from the git hooks/post-receive script.

piotr pushed a commit to branch master
in repository sqlalchemy.

commit c25b7c61fa04d6ba2592c2681d9f37d5652bc29b
Author: Piotr Ożarowski <piotr at debian.org>
Date:   Sun Feb 28 22:19:05 2016 +0100

    Import sqlalchemy_1.0.12+ds1.orig.tar.xz
---
 LICENSE                                            |   2 +-
 PKG-INFO                                           |   2 +-
 doc/build/changelog/changelog_09.rst               |   2 +-
 doc/build/changelog/changelog_10.rst               | 172 +++++++++---
 doc/build/changelog/migration_09.rst               |   8 +-
 doc/build/conf.py                                  |   6 +-
 doc/build/copyright.rst                            |   2 +-
 doc/build/core/custom_types.rst                    |   4 +-
 doc/build/core/metadata.rst                        |   4 +-
 doc/build/core/tutorial.rst                        |   2 +-
 doc/build/dialects/postgresql.rst                  |   2 -
 doc/build/glossary.rst                             |   1 +
 doc/build/orm/basic_relationships.rst              |  64 ++++-
 .../orm/extensions/declarative/inheritance.rst     |  88 ++----
 doc/build/orm/inheritance.rst                      | 294 +++++++++++++++++----
 doc/build/orm/session_basics.rst                   |   2 +-
 doc/build/orm/session_events.rst                   |   2 +-
 doc/build/orm/tutorial.rst                         |  43 +--
 lib/sqlalchemy/__init__.py                         |   4 +-
 lib/sqlalchemy/cextension/processors.c             |   2 +-
 lib/sqlalchemy/cextension/resultproxy.c            |   2 +-
 lib/sqlalchemy/cextension/utils.c                  |   2 +-
 lib/sqlalchemy/connectors/__init__.py              |   2 +-
 lib/sqlalchemy/connectors/mxodbc.py                |   2 +-
 lib/sqlalchemy/connectors/pyodbc.py                |   2 +-
 lib/sqlalchemy/connectors/zxJDBC.py                |   2 +-
 lib/sqlalchemy/databases/__init__.py               |   2 +-
 lib/sqlalchemy/dialects/__init__.py                |   2 +-
 lib/sqlalchemy/dialects/firebird/__init__.py       |   2 +-
 lib/sqlalchemy/dialects/firebird/base.py           |   2 +-
 lib/sqlalchemy/dialects/firebird/fdb.py            |   2 +-
 lib/sqlalchemy/dialects/firebird/kinterbasdb.py    |   2 +-
 lib/sqlalchemy/dialects/mssql/__init__.py          |   2 +-
 lib/sqlalchemy/dialects/mssql/adodbapi.py          |   2 +-
 lib/sqlalchemy/dialects/mssql/base.py              |   4 +-
 .../dialects/mssql/information_schema.py           |   2 +-
 lib/sqlalchemy/dialects/mssql/mxodbc.py            |   2 +-
 lib/sqlalchemy/dialects/mssql/pymssql.py           |   2 +-
 lib/sqlalchemy/dialects/mssql/pyodbc.py            |   2 +-
 lib/sqlalchemy/dialects/mssql/zxjdbc.py            |   2 +-
 lib/sqlalchemy/dialects/mysql/__init__.py          |   2 +-
 lib/sqlalchemy/dialects/mysql/base.py              |   2 +-
 lib/sqlalchemy/dialects/mysql/cymysql.py           |   2 +-
 lib/sqlalchemy/dialects/mysql/gaerdbms.py          |   2 +-
 lib/sqlalchemy/dialects/mysql/mysqlconnector.py    |   2 +-
 lib/sqlalchemy/dialects/mysql/mysqldb.py           |   2 +-
 lib/sqlalchemy/dialects/mysql/oursql.py            |   2 +-
 lib/sqlalchemy/dialects/mysql/pymysql.py           |   2 +-
 lib/sqlalchemy/dialects/mysql/pyodbc.py            |   2 +-
 lib/sqlalchemy/dialects/mysql/zxjdbc.py            |   2 +-
 lib/sqlalchemy/dialects/oracle/__init__.py         |   2 +-
 lib/sqlalchemy/dialects/oracle/base.py             |   2 +-
 lib/sqlalchemy/dialects/oracle/cx_oracle.py        |   2 +-
 lib/sqlalchemy/dialects/oracle/zxjdbc.py           |   8 +-
 lib/sqlalchemy/dialects/postgres.py                |   2 +-
 lib/sqlalchemy/dialects/postgresql/__init__.py     |   2 +-
 lib/sqlalchemy/dialects/postgresql/base.py         |   4 +-
 lib/sqlalchemy/dialects/postgresql/constraints.py  |   2 +-
 lib/sqlalchemy/dialects/postgresql/hstore.py       |   2 +-
 lib/sqlalchemy/dialects/postgresql/json.py         |   2 +-
 lib/sqlalchemy/dialects/postgresql/pg8000.py       |   2 +-
 lib/sqlalchemy/dialects/postgresql/psycopg2.py     |   2 +-
 lib/sqlalchemy/dialects/postgresql/psycopg2cffi.py |   2 +-
 lib/sqlalchemy/dialects/postgresql/pypostgresql.py |   2 +-
 lib/sqlalchemy/dialects/postgresql/ranges.py       |   2 +-
 lib/sqlalchemy/dialects/postgresql/zxjdbc.py       |   2 +-
 lib/sqlalchemy/dialects/sqlite/__init__.py         |   2 +-
 lib/sqlalchemy/dialects/sqlite/base.py             |  18 +-
 lib/sqlalchemy/dialects/sqlite/pysqlcipher.py      |   2 +-
 lib/sqlalchemy/dialects/sqlite/pysqlite.py         |   2 +-
 lib/sqlalchemy/dialects/sybase/__init__.py         |   2 +-
 lib/sqlalchemy/dialects/sybase/base.py             |   2 +-
 lib/sqlalchemy/dialects/sybase/mxodbc.py           |   2 +-
 lib/sqlalchemy/dialects/sybase/pyodbc.py           |   2 +-
 lib/sqlalchemy/dialects/sybase/pysybase.py         |   2 +-
 lib/sqlalchemy/engine/__init__.py                  |   2 +-
 lib/sqlalchemy/engine/base.py                      |   4 +-
 lib/sqlalchemy/engine/default.py                   |   5 +-
 lib/sqlalchemy/engine/interfaces.py                |   2 +-
 lib/sqlalchemy/engine/reflection.py                |   2 +-
 lib/sqlalchemy/engine/result.py                    |   2 +-
 lib/sqlalchemy/engine/strategies.py                |   2 +-
 lib/sqlalchemy/engine/threadlocal.py               |   2 +-
 lib/sqlalchemy/engine/url.py                       |   2 +-
 lib/sqlalchemy/engine/util.py                      |   2 +-
 lib/sqlalchemy/event/__init__.py                   |   2 +-
 lib/sqlalchemy/event/api.py                        |   2 +-
 lib/sqlalchemy/event/attr.py                       |   2 +-
 lib/sqlalchemy/event/base.py                       |   2 +-
 lib/sqlalchemy/event/legacy.py                     |   2 +-
 lib/sqlalchemy/event/registry.py                   |   2 +-
 lib/sqlalchemy/events.py                           |   2 +-
 lib/sqlalchemy/exc.py                              |   2 +-
 lib/sqlalchemy/ext/__init__.py                     |   2 +-
 lib/sqlalchemy/ext/associationproxy.py             |   2 +-
 lib/sqlalchemy/ext/automap.py                      |   4 +-
 lib/sqlalchemy/ext/baked.py                        |   2 +-
 lib/sqlalchemy/ext/compiler.py                     |  14 +-
 lib/sqlalchemy/ext/declarative/__init__.py         |   2 +-
 lib/sqlalchemy/ext/declarative/api.py              |  18 +-
 lib/sqlalchemy/ext/declarative/base.py             |   2 +-
 lib/sqlalchemy/ext/declarative/clsregistry.py      |   2 +-
 lib/sqlalchemy/ext/horizontal_shard.py             |   2 +-
 lib/sqlalchemy/ext/hybrid.py                       |   2 +-
 lib/sqlalchemy/ext/mutable.py                      |  14 +-
 lib/sqlalchemy/ext/orderinglist.py                 |   2 +-
 lib/sqlalchemy/ext/serializer.py                   |   2 +-
 lib/sqlalchemy/inspection.py                       |   2 +-
 lib/sqlalchemy/interfaces.py                       |   2 +-
 lib/sqlalchemy/log.py                              |   2 +-
 lib/sqlalchemy/orm/__init__.py                     |   2 +-
 lib/sqlalchemy/orm/attributes.py                   |   2 +-
 lib/sqlalchemy/orm/base.py                         |   2 +-
 lib/sqlalchemy/orm/collections.py                  |   2 +-
 lib/sqlalchemy/orm/dependency.py                   |   2 +-
 lib/sqlalchemy/orm/deprecated_interfaces.py        |   2 +-
 lib/sqlalchemy/orm/descriptor_props.py             |   2 +-
 lib/sqlalchemy/orm/dynamic.py                      |   2 +-
 lib/sqlalchemy/orm/evaluator.py                    |   2 +-
 lib/sqlalchemy/orm/events.py                       |   2 +-
 lib/sqlalchemy/orm/exc.py                          |   2 +-
 lib/sqlalchemy/orm/identity.py                     |   2 +-
 lib/sqlalchemy/orm/instrumentation.py              |   2 +-
 lib/sqlalchemy/orm/interfaces.py                   |   2 +-
 lib/sqlalchemy/orm/loading.py                      |   2 +-
 lib/sqlalchemy/orm/mapper.py                       |   2 +-
 lib/sqlalchemy/orm/path_registry.py                |   2 +-
 lib/sqlalchemy/orm/persistence.py                  |   2 +-
 lib/sqlalchemy/orm/properties.py                   |   2 +-
 lib/sqlalchemy/orm/query.py                        |   2 +-
 lib/sqlalchemy/orm/relationships.py                |   2 +-
 lib/sqlalchemy/orm/scoping.py                      |  17 +-
 lib/sqlalchemy/orm/session.py                      |  84 ++++--
 lib/sqlalchemy/orm/state.py                        |   4 +-
 lib/sqlalchemy/orm/strategies.py                   |   4 +-
 lib/sqlalchemy/orm/strategy_options.py             |  27 +-
 lib/sqlalchemy/orm/sync.py                         |   2 +-
 lib/sqlalchemy/orm/unitofwork.py                   |   2 +-
 lib/sqlalchemy/orm/util.py                         |   2 +-
 lib/sqlalchemy/pool.py                             |   2 +-
 lib/sqlalchemy/processors.py                       |   2 +-
 lib/sqlalchemy/schema.py                           |   2 +-
 lib/sqlalchemy/sql/__init__.py                     |   2 +-
 lib/sqlalchemy/sql/annotation.py                   |   2 +-
 lib/sqlalchemy/sql/base.py                         |  30 +--
 lib/sqlalchemy/sql/compiler.py                     |  14 +-
 lib/sqlalchemy/sql/crud.py                         |   9 +-
 lib/sqlalchemy/sql/ddl.py                          |   2 +-
 lib/sqlalchemy/sql/default_comparator.py           |   3 +-
 lib/sqlalchemy/sql/dml.py                          |   2 +-
 lib/sqlalchemy/sql/elements.py                     |  17 +-
 lib/sqlalchemy/sql/expression.py                   |   2 +-
 lib/sqlalchemy/sql/functions.py                    |   2 +-
 lib/sqlalchemy/sql/naming.py                       |   2 +-
 lib/sqlalchemy/sql/operators.py                    |   7 +-
 lib/sqlalchemy/sql/schema.py                       |   2 +-
 lib/sqlalchemy/sql/selectable.py                   |   2 +-
 lib/sqlalchemy/sql/sqltypes.py                     |  17 +-
 lib/sqlalchemy/sql/type_api.py                     |   2 +-
 lib/sqlalchemy/sql/util.py                         |   2 +-
 lib/sqlalchemy/sql/visitors.py                     |   2 +-
 lib/sqlalchemy/testing/__init__.py                 |   2 +-
 lib/sqlalchemy/testing/assertions.py               |   2 +-
 lib/sqlalchemy/testing/assertsql.py                |   2 +-
 lib/sqlalchemy/testing/config.py                   |   2 +-
 lib/sqlalchemy/testing/engines.py                  |   2 +-
 lib/sqlalchemy/testing/entities.py                 |   2 +-
 lib/sqlalchemy/testing/exclusions.py               |   2 +-
 lib/sqlalchemy/testing/fixtures.py                 |   2 +-
 lib/sqlalchemy/testing/mock.py                     |   2 +-
 lib/sqlalchemy/testing/pickleable.py               |   2 +-
 lib/sqlalchemy/testing/plugin/noseplugin.py        |   2 +-
 lib/sqlalchemy/testing/plugin/plugin_base.py       |   2 +-
 lib/sqlalchemy/testing/plugin/pytestplugin.py      |   4 +-
 lib/sqlalchemy/testing/profiling.py                |   7 +-
 lib/sqlalchemy/testing/provision.py                | 124 ++++++++-
 lib/sqlalchemy/testing/requirements.py             |   2 +-
 lib/sqlalchemy/testing/runner.py                   |   2 +-
 lib/sqlalchemy/testing/schema.py                   |   2 +-
 lib/sqlalchemy/testing/suite/test_reflection.py    |  21 +-
 lib/sqlalchemy/testing/suite/test_sequence.py      |  10 +-
 lib/sqlalchemy/testing/util.py                     |   4 +-
 lib/sqlalchemy/testing/warnings.py                 |   2 +-
 lib/sqlalchemy/types.py                            |   2 +-
 lib/sqlalchemy/util/__init__.py                    |   2 +-
 lib/sqlalchemy/util/_collections.py                |   2 +-
 lib/sqlalchemy/util/compat.py                      |  26 +-
 lib/sqlalchemy/util/deprecations.py                |   2 +-
 lib/sqlalchemy/util/langhelpers.py                 |   9 +-
 lib/sqlalchemy/util/queue.py                       |   2 +-
 lib/sqlalchemy/util/topological.py                 |   2 +-
 setup.cfg                                          |   2 +-
 test/aaa_profiling/test_resultset.py               |   5 +-
 test/base/test_tutorials.py                        |   2 +-
 test/base/test_utils.py                            |  93 ++++++-
 test/dialect/mssql/test_compiler.py                |   2 +-
 test/dialect/mssql/test_types.py                   |  12 +
 test/dialect/mysql/test_compiler.py                |   6 +
 test/dialect/mysql/test_query.py                   |  25 +-
 test/dialect/postgresql/test_types.py              |  14 +-
 test/dialect/test_oracle.py                        |  46 +++-
 test/dialect/test_sqlite.py                        |  38 +--
 test/engine/test_transaction.py                    |  21 ++
 test/orm/test_deferred.py                          |  58 ++++
 test/orm/test_merge.py                             |  51 +++-
 test/orm/test_transaction.py                       |   6 +-
 test/requirements.py                               |   4 +
 test/sql/test_compiler.py                          |  25 ++
 test/sql/test_metadata.py                          |  19 ++
 test/sql/test_operators.py                         |  14 +-
 test/sql/test_resultset.py                         |  34 ++-
 test/sql/test_rowcount.py                          |  17 ++
 test/sql/test_text.py                              |  11 +
 test/sql/test_types.py                             |  60 -----
 tox.ini                                            |   2 +-
 215 files changed, 1429 insertions(+), 657 deletions(-)

diff --git a/LICENSE b/LICENSE
index 0208c3f..12dbfc6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 This is the MIT license: http://www.opensource.org/licenses/mit-license.php
 
-Copyright (c) 2005-2015 the SQLAlchemy authors and contributors <see AUTHORS file>.
+Copyright (c) 2005-2016 the SQLAlchemy authors and contributors <see AUTHORS file>.
 SQLAlchemy is a trademark of Michael Bayer.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this
diff --git a/PKG-INFO b/PKG-INFO
index ac53786..c95fb48 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: SQLAlchemy
-Version: 1.0.11
+Version: 1.0.12
 Summary: Database Abstraction Library
 Home-page: http://www.sqlalchemy.org
 Author: Mike Bayer
diff --git a/doc/build/changelog/changelog_09.rst b/doc/build/changelog/changelog_09.rst
index ace2242..3ac0ab0 100644
--- a/doc/build/changelog/changelog_09.rst
+++ b/doc/build/changelog/changelog_09.rst
@@ -17,7 +17,7 @@
     .. change::
         :tags: bug, oracle, py3k
         :tickets: 3491
-        :versions: 1.1.0b1, 1.0.9
+        :versions: 1.0.9
 
         Fixed support for cx_Oracle version 5.2, which was tripping
         up SQLAlchemy's version detection under Python 3 and inadvertently
diff --git a/doc/build/changelog/changelog_10.rst b/doc/build/changelog/changelog_10.rst
index 25592a3..1e10b97 100644
--- a/doc/build/changelog/changelog_10.rst
+++ b/doc/build/changelog/changelog_10.rst
@@ -16,12 +16,135 @@
         :start-line: 5
 
 .. changelog::
+    :version: 1.0.12
+    :released: February 15, 2016
+
+    .. change::
+        :tags: bug, orm
+        :tickets: 3647
+
+        Fixed bug in :meth:`.Session.merge` where an object with a composite
+        primary key that has values for some but not all of the PK fields
+        would emit a SELECT statement leaking the internal NEVER_SET symbol
+        into the query, rather than detecting that this object does not have
+        a searchable primary key and no SELECT should be emitted.
+
+    .. change::
+        :tags: bug, postgresql
+        :tickets: 3644
+
+        Fixed bug in :func:`.expression.text` construct where a double-colon
+        expression would not escape properly, e.g. ``some\:\:expr``, as is most
+        commonly required when rendering Postgresql-style CAST expressions.
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 3643
+        :pullreq: github:232
+
+        Fixed issue where the "literal_binds" flag was not propagated
+        for :func:`.expression.insert`, :func:`.expression.update` or
+        :func:`.expression.delete` constructs when compiled to string
+        SQL.  Pull request courtesy Tim Tate.
+
+    .. change::
+        :tags: bug, oracle, jython
+        :tickets: 3621
+
+        Fixed a small issue in the Jython Oracle compiler involving the
+        rendering of "RETURNING" which allows this currently
+        unsupported/untested dialect to work rudimentally with the 1.0 series.
+        Pull request courtesy Carlos Rivas.
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 3642
+
+        Fixed issue where inadvertent use of the Python ``__contains__``
+        override with a column expression (e.g. by using ``'x' in col``)
+        would cause an endless loop in the case of an ARRAY type, as Python
+        defers this to ``__getitem__`` access which never raises for this
+        type.  Overall, all use of ``__contains__`` now raises
+        NotImplementedError.
+
+    .. change::
+        :tags: bug, engine, mysql
+        :tickets: 2696
+
+        Revisiting :ticket:`2696`, first released in 1.0.10, which attempts to
+        work around Python 2's lack of exception context reporting by emitting
+        a warning for an exception that was interrupted by a second exception
+        when attempting to roll back the already-failed transaction; this
+        issue continues to occur for MySQL backends in conjunction with a
+        savepoint that gets unexpectedly lost, which then causes a
+        "no such savepoint" error when the rollback is attempted, obscuring
+        what the original condition was.
+
+        The approach has been generalized to the Core "safe
+        reraise" function which takes place across the ORM and Core in any
+        place that a transaction is being rolled back in response to an error
+        which occurred trying to commit, including the context managers
+        provided by :class:`.Session` and :class:`.Connection`, and taking
+        place for operations such as a failure on "RELEASE SAVEPOINT".
+        Previously, the fix was only in place for a specific path within
+        the ORM flush/commit process; it now takes place for all transational
+        context managers as well.
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 3632
+
+        Fixed bug in :class:`.Table` metadata construct which appeared
+        around the 0.9 series where adding columns to a :class:`.Table`
+        that was unpickled would fail to correctly establish the
+        :class:`.Column` within the 'c' collection, leading to issues in
+        areas such as ORM configuration.   This could impact use cases such
+        as ``extend_existing`` and others.
+
+    .. change::
+        :tags: bug, py3k
+        :tickets: 3625
+
+        Fixed bug where some exception re-raise scenarios would attach
+        the exception to itself as the "cause"; while the Python 3 interpreter
+        is OK with this, it could cause endless loops in iPython.
+
+    .. change::
+        :tags: bug, mssql
+        :tickets: 3624
+        :pullreq: bitbucket:70
+
+        Fixed the syntax of the :func:`.extract` function when used on
+        MSSQL against a datetime value; the quotes around the keyword
+        are removed.  Pull request courtesy Guillaume Doumenc.
+
+    .. change::
+        :tags: bug, orm
+        :tickets: 3623
+
+        Fixed regression since 0.9 where the 0.9 style loader options
+        system failed to accommodate for multiple :func:`.undefer_group`
+        loader options in a single query.   Multiple :func:`.undefer_group`
+        options will now be taken into account even against the same
+        entity.
+
+    .. change::
+        :tags: bug, mssql, firebird
+        :tickets: 3622
+
+        Fixed 1.0 regression where the eager fetch of cursor.rowcount was
+        no longer called for an UPDATE or DELETE statement emitted via plain
+        text or via the :func:`.text` construct, affecting those drivers
+        that erase cursor.rowcount once the cursor is closed such as SQL
+        Server ODBC and Firebird drivers.
+
+
+.. changelog::
     :version: 1.0.11
     :released: December 22, 2015
 
     .. change::
         :tags: bug, mysql
-        :versions: 1.1.0b1
         :tickets: 3613
 
         An adjustment to the regular expression used to parse MySQL views,
@@ -31,7 +154,6 @@
 
     .. change::
         :tags: bug, mysql
-        :versions: 1.1.0b1
         :pullreq: github:222
 
         Added new reserved words for MySQL 5.7 to the MySQL dialect,
@@ -41,7 +163,6 @@
     .. change::
         :tags: bug, ext
         :tickets: 3605
-        :versions: 1.1.0b1
 
         Further fixes to :ticket:`3605`, pop method on :class:`.MutableDict`,
         where the "default" argument was not included.
@@ -49,7 +170,6 @@
     .. change::
         :tags: bug, ext
         :tickets: 3612
-        :versions: 1.1.0b1
 
         Fixed bug in baked loader system where the systemwide monkeypatch
         for setting up baked lazy loaders would interfere with other
@@ -60,7 +180,6 @@
     .. change::
         :tags: bug, orm
         :tickets: 3611
-        :versions: 1.1.0b1
 
         Fixed regression caused in 1.0.10 by the fix for :ticket:`3593` where
         the check added for a polymorphic joinedload from a
@@ -70,7 +189,6 @@
     .. change::
         :tags: bug, orm
         :tickets: 3610
-        :versions: 1.1.0b1
 
         Fixed bug where :meth:`.Session.bulk_update_mappings` and related
         would not bump a version id counter when in use.  The experience
@@ -81,7 +199,6 @@
     .. change::
         :tags: bug, sql
         :tickets: 3609
-        :versions: 1.1.0b1
 
         Fixed bug in :meth:`.Update.return_defaults` which would cause all
         insert-default holding columns not otherwise included in the SET
@@ -91,7 +208,6 @@
     .. change::
         :tags: bug, orm
         :tickets: 3609
-        :versions: 1.1.0b1
 
         Major fixes to the :paramref:`.Mapper.eager_defaults` flag, this
         flag would not be honored correctly in the case that multiple
@@ -102,7 +218,6 @@
     .. change::
         :tags: bug, orm
         :tickets: 3606
-        :versions: 1.1.0b1
 
         Fixed bug where use of the :meth:`.Query.select_from` method would
         cause a subsequent call to the :meth:`.Query.with_parent` method to
@@ -115,14 +230,12 @@
     .. change::
         :tags: bug, ext
         :tickets: 3605
-        :versions: 1.1.0b1
 
         Added support for the ``dict.pop()`` and ``dict.popitem()`` methods
         to the :class:`.mutable.MutableDict` class.
 
     .. change::
         :tags: change, tests
-        :versions: 1.1.0b1
 
         The ORM and Core tutorials, which have always been in doctest format,
         are now exercised within the normal unit test suite in both Python
@@ -131,7 +244,6 @@
     .. change::
         :tags: bug, sql
         :tickets: 3603
-        :versions: 1.1.0b1
 
         Fixed issue within the :meth:`.Insert.from_select` construct whereby
         the :class:`.Select` construct would have its ``._raw_columns``
@@ -145,7 +257,6 @@
     .. change::
         :tags: bug, mysql
         :tickets: 3602
-        :versions: 1.1.0b1
 
         Fixed bug in MySQL reflection where the "fractional sections portion"
         of the :class:`.mysql.DATETIME`, :class:`.mysql.TIMESTAMP` and
@@ -156,7 +267,6 @@
     .. change::
         :tags: bug, orm
         :tickets: 3599
-        :versions: 1.1.0b1
 
         Fixed issue where post_update on a many-to-one relationship would
         fail to emit an UPDATE in the case where the attribute were set to
@@ -165,7 +275,6 @@
     .. change::
         :tags: bug, sql, postgresql
         :tickets: 3598
-        :versions: 1.1.0b1
 
         Fixed bug where CREATE TABLE with a no-column table, but a constraint
         such as a CHECK constraint would render an erroneous comma in the
@@ -175,7 +284,7 @@
     .. change::
         :tags: bug, mssql
         :tickets: 3585
-        :versions: 1.1.0b1
+
 
         Added the error "20006: Write to the server failed" to the list
         of disconnect errors for the pymssql driver, as this has been observed
@@ -185,7 +294,7 @@
         :tags: bug, postgresql
         :pullreq: github:216
         :tickets: 3573
-        :versions: 1.1.0b1
+
 
         Fixed issue where the "FOR UPDATE OF" Postgresql-specific SELECT
         modifier would fail if the referred table had a schema qualifier;
@@ -195,7 +304,7 @@
     .. change::
         :tags: bug, postgresql
         :pullreq: github:215
-        :versions: 1.1.0b1
+
 
         Fixed bug where some varieties of SQL expression passed to the
         "where" clause of :class:`.postgresql.ExcludeConstraint` would fail
@@ -204,7 +313,7 @@
     .. change::
         :tags: bug, orm, declarative
         :pullreq: github:212
-        :versions: 1.1.0b1
+
 
         Fixed bug where in Py2K a unicode literal would not be accepted as the
         string name of a class or other argument within declarative using
@@ -213,7 +322,6 @@
 
     .. change::
         :tags: bug, mssql
-        :versions: 1.1.0b1
         :pullreq: github:206
 
         A descriptive ValueError is now raised in the event that SQL server
@@ -223,7 +331,6 @@
 
     .. change::
         :tags: bug, py3k
-        :versions: 1.1.0b1
         :pullreq: github:210, github:218, github:211
 
         Updates to internal getargspec() calls, some py36-related
@@ -234,7 +341,6 @@
 
     .. change::
         :tags: bug, ext
-        :versions: 1.1.0b1
         :tickets: 3597
 
         Fixed an issue in baked queries where the .get() method, used either
@@ -246,7 +352,6 @@
 
     .. change::
         :tags: feature, sql
-        :versions: 1.1.0b1
         :pullreq: github:200
 
         Added support for parameter-ordered SET clauses in an UPDATE
@@ -263,7 +368,6 @@
 
     .. change::
         :tags: bug, orm
-        :versions: 1.1.0b1
         :tickets: 3593
 
         Fixed bug which is actually a regression that occurred between
@@ -274,7 +378,6 @@
 
     .. change::
         :tags: bug, orm
-        :versions: 1.1.0b1
         :tickets: 3592
 
         Fixed joinedload bug which would occur when a. the query includes
@@ -289,7 +392,6 @@
 
     .. change::
         :tags: bug, orm
-        :versions: 1.1.0b1
         :tickets: 2696
 
         A rare case which occurs when a :meth:`.Session.rollback` fails in the
@@ -304,7 +406,6 @@
 
     .. change::
         :tags: bug, postgresql
-        :versions: 1.1.0b1
         :tickets: 3571
 
         Fixed the ``.python_type`` attribute of :class:`.postgresql.INTERVAL`
@@ -315,7 +416,7 @@
     .. change::
         :tags: bug, mssql
         :pullreq: github:213
-        :versions: 1.1.0b1
+
 
         Fixed issue where DDL generated for the MSSQL types DATETIME2,
         TIME and DATETIMEOFFSET with a precision of "zero" would not generate
@@ -328,7 +429,6 @@
 
     .. change::
         :tags: bug, orm, postgresql
-        :versions: 1.1.0b1
         :tickets: 3556
 
         Fixed regression in 1.0 where new feature of using "executemany"
@@ -340,7 +440,6 @@
 
     .. change::
         :tags: feature, ext
-        :versions: 1.1.0b1
         :tickets: 3551
 
         Added the :paramref:`.AssociationProxy.info` parameter to the
@@ -352,7 +451,6 @@
 
     .. change::
         :tags: bug, oracle
-        :versions: 1.1.0b1
         :tickets: 3548
 
         Fixed bug in Oracle dialect where reflection of tables and other
@@ -363,7 +461,6 @@
 
     .. change::
         :tags: feature, orm
-        :versions: 1.1.0b1
         :pullreq: github:201
 
         Added new method :meth:`.Query.one_or_none`; same as
@@ -372,7 +469,6 @@
 
     .. change::
         :tags: bug, orm
-        :versions: 1.1.0b1
         :tickets: 3539
 
         Fixed rare TypeError which could occur when stringifying certain
@@ -380,7 +476,6 @@
 
     .. change::
         :tags: bug, orm
-        :versions: 1.1.0b1
         :tickets: 3525
 
         Fixed bug in :meth:`.Session.bulk_save_objects` where a mapped
@@ -390,7 +485,6 @@
 
     .. change::
         :tags: bug, sql
-        :versions: 1.1.0b1
         :tickets: 3520
 
         Fixed regression in 1.0-released default-processor for multi-VALUES
@@ -401,7 +495,7 @@
 
     .. change::
         :tags: bug, examples
-        :versions: 1.1.0b1
+
 
         Fixed two issues in the "history_meta" example where history tracking
         could encounter empty history, and where a column keyed to an alternate
@@ -411,7 +505,7 @@
     .. change::
         :tags: bug, orm
         :tickets: 3510
-        :versions: 1.1.0b1
+
 
         Fixed 1.0 regression where the "noload" loader strategy would fail
         to function for a many-to-one relationship.  The loader used an
@@ -421,7 +515,7 @@
     .. change::
         :tags: bug, sybase
         :tickets: 3508, 3509
-        :versions: 1.1.0b1
+
 
         Fixed two issues regarding Sybase reflection, allowing tables
         without primary keys to be reflected as well as ensured that
@@ -433,7 +527,7 @@
     .. change::
         :tags: bug, postgresql
         :pullreq: github:190
-        :versions: 1.1.0b1
+
 
         An adjustment to the new Postgresql feature of reflecting storage
         options and USING of :ticket:`3455` released in 1.0.6,
diff --git a/doc/build/changelog/migration_09.rst b/doc/build/changelog/migration_09.rst
index b07aed9..9138157 100644
--- a/doc/build/changelog/migration_09.rst
+++ b/doc/build/changelog/migration_09.rst
@@ -1125,7 +1125,7 @@ as INNER JOINs could always be flattened)::
 
     SELECT a.*, b.*, c.* FROM a LEFT OUTER JOIN (b JOIN c ON b.id = c.id) ON a.id
 
-This was due to the fact that SQLite, even today, cannot parse a statement of the above format::
+This was due to the fact that SQLite up until version **3.7.16** cannot parse a statement of the above format::
 
     SQLite version 3.7.15.2 2013-01-09 11:53:05
     Enter ".help" for instructions
@@ -1248,6 +1248,12 @@ with the above queries rewritten as::
         JOIN item ON item.id = order_item_1.item_id AND item.type IN (?)
     ) AS anon_1 ON "order".id = anon_1.order_item_1_order_id
 
+.. note::
+
+    As of SQLAlchemy 1.1, the workarounds present in this feature for SQLite
+    will automatically disable themselves when SQLite version **3.7.16**
+    or greater is detected, as SQLite has repaired support for right-nested joins.
+
 The :meth:`.Join.alias`, :func:`.aliased` and :func:`.with_polymorphic` functions now
 support a new argument, ``flat=True``, which is used to construct aliases of joined-table
 entities without embedding into a SELECT.   This flag is not on by default, to help with
diff --git a/doc/build/conf.py b/doc/build/conf.py
index f3061b6..b600743 100644
--- a/doc/build/conf.py
+++ b/doc/build/conf.py
@@ -129,7 +129,7 @@ master_doc = 'contents'
 
 # General information about the project.
 project = u'SQLAlchemy'
-copyright = u'2007-2015, the SQLAlchemy authors and contributors'
+copyright = u'2007-2016, the SQLAlchemy authors and contributors'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -138,9 +138,9 @@ copyright = u'2007-2015, the SQLAlchemy authors and contributors'
 # The short X.Y version.
 version = "1.0"
 # The full version, including alpha/beta/rc tags.
-release = "1.0.11"
+release = "1.0.12"
 
-release_date = "December 12, 2015"
+release_date = "February 15, 2016"
 
 site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org")
 site_adapter_template = "docs_adapter.mako"
diff --git a/doc/build/copyright.rst b/doc/build/copyright.rst
index 50ca03a..e5ec969 100644
--- a/doc/build/copyright.rst
+++ b/doc/build/copyright.rst
@@ -6,7 +6,7 @@ Appendix:  Copyright
 
 This is the MIT license: `<http://www.opensource.org/licenses/mit-license.php>`_
 
-Copyright (c) 2005-2015 Michael Bayer and contributors.
+Copyright (c) 2005-2016 Michael Bayer and contributors.
 SQLAlchemy is a trademark of Michael Bayer.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this
diff --git a/doc/build/core/custom_types.rst b/doc/build/core/custom_types.rst
index 7fca1a5..f3a3b2b 100644
--- a/doc/build/core/custom_types.rst
+++ b/doc/build/core/custom_types.rst
@@ -153,10 +153,10 @@ binary in CHAR(16) if desired::
                 return str(value)
             else:
                 if not isinstance(value, uuid.UUID):
-                    return "%.32x" % uuid.UUID(value)
+                    return "%.32x" % uuid.UUID(value).int
                 else:
                     # hexstring
-                    return "%.32x" % value
+                    return "%.32x" % value.int
 
         def process_result_value(self, value, dialect):
             if value is None:
diff --git a/doc/build/core/metadata.rst b/doc/build/core/metadata.rst
index 1eade1c..24df3bc 100644
--- a/doc/build/core/metadata.rst
+++ b/doc/build/core/metadata.rst
@@ -45,7 +45,7 @@ Note also that each column describes its datatype using objects corresponding
 to genericized types, such as :class:`~sqlalchemy.types.Integer` and
 :class:`~sqlalchemy.types.String`. SQLAlchemy features dozens of types of
 varying levels of specificity as well as the ability to create custom types.
-Documentation on the type system can be found at :ref:`types`.
+Documentation on the type system can be found at :ref:`types_toplevel`.
 
 Accessing Tables and Columns
 ----------------------------
@@ -248,7 +248,7 @@ There are two major migration tools available for SQLAlchemy:
   supporting such features as transactional DDL, automatic generation of "candidate"
   migrations, an "offline" mode which generates SQL scripts, and support for branch
   resolution.
-* `SQLAlchemy-Migrate <http://code.google.com/p/sqlalchemy-migrate/>`_ - The original
+* `SQLAlchemy-Migrate <https://github.com/openstack/sqlalchemy-migrate>`_ - The original
   migration tool for SQLAlchemy, SQLAlchemy-Migrate is widely used and continues
   under active development.   SQLAlchemy-Migrate includes features such as
   SQL script generation, ORM class generation, ORM model comparison, and extensive
diff --git a/doc/build/core/tutorial.rst b/doc/build/core/tutorial.rst
index b52d194..982da55 100644
--- a/doc/build/core/tutorial.rst
+++ b/doc/build/core/tutorial.rst
@@ -869,7 +869,7 @@ need to refer to any pre-established :class:`.Table` metadata:
     :ref:`orm_tutorial_literal_sql` - integrating ORM-level queries with
     :func:`.text`
 
-.. fchanged:: 1.0.0
+.. versionchanged:: 1.0.0
    The :func:`.select` construct emits warnings when string SQL
    fragments are coerced to :func:`.text`, and :func:`.text` should
    be used explicitly.  See :ref:`migration_2992` for background.
diff --git a/doc/build/dialects/postgresql.rst b/doc/build/dialects/postgresql.rst
index e5d8d51..3026f2e 100644
--- a/doc/build/dialects/postgresql.rst
+++ b/doc/build/dialects/postgresql.rst
@@ -41,9 +41,7 @@ construction arguments, are as follows:
 .. autoclass:: BYTEA
     :members: __init__
 
-
 .. autoclass:: CIDR
-    :members: __init__
 
 
 .. autoclass:: DOUBLE_PRECISION
diff --git a/doc/build/glossary.rst b/doc/build/glossary.rst
index c0ecee8..5f68624 100644
--- a/doc/build/glossary.rst
+++ b/doc/build/glossary.rst
@@ -129,6 +129,7 @@ Glossary
 
     lazy load
     lazy loads
+    lazy loaded
     lazy loading
         In object relational mapping, a "lazy load" refers to an
         attribute that does not contain its database-side value
diff --git a/doc/build/orm/basic_relationships.rst b/doc/build/orm/basic_relationships.rst
index acb2dba..de156c2 100644
--- a/doc/build/orm/basic_relationships.rst
+++ b/doc/build/orm/basic_relationships.rst
@@ -118,7 +118,7 @@ of the relationship. To convert one-to-many into one-to-one::
         __tablename__ = 'child'
         id = Column(Integer, primary_key=True)
         parent_id = Column(Integer, ForeignKey('parent.id'))
-        parent = relationship("Child", back_populates="child")
+        parent = relationship("Parent", back_populates="child")
 
 Or for many-to-one::
 
@@ -131,7 +131,7 @@ Or for many-to-one::
     class Child(Base):
         __tablename__ = 'child'
         id = Column(Integer, primary_key=True)
-        parent = relationship("Child", back_populates="child", uselist=False)
+        parent = relationship("Parent", back_populates="child", uselist=False)
 
 As always, the :paramref:`.relationship.backref` and :func:`.backref` functions
 may be used in lieu of the :paramref:`.relationship.back_populates` approach;
@@ -369,13 +369,55 @@ extension allows the configuration of attributes which will
 access two "hops" with a single access, one "hop" to the
 associated object, and a second to a target attribute.
 
-.. note::
+.. warning::
 
-  When using the association object pattern, it is advisable that the
-  association-mapped table not be used as the
-  :paramref:`~.relationship.secondary` argument on a
-  :func:`.relationship` elsewhere, unless that :func:`.relationship`
-  contains the option :paramref:`~.relationship.viewonly` set to
-  ``True``. SQLAlchemy otherwise may attempt to emit redundant INSERT
-  and DELETE statements on the same table, if similar state is
-  detected on the related attribute as well as the associated object.
+  The association object pattern **does not coordinate changes with a
+  separate relationship that maps the association table as "secondary"**.
+
+  Below, changes made to ``Parent.children`` will not be coordinated
+  with changes made to ``Parent.child_associations`` or
+  ``Child.parent_associations`` in Python; while all of these relationships will continue
+  to function normally by themselves, changes on one will not show up in another
+  until the :class:`.Session` is expired, which normally occurs automatically
+  after :meth:`.Session.commit`::
+
+        class Association(Base):
+            __tablename__ = 'association'
+
+            left_id = Column(Integer, ForeignKey('left.id'), primary_key=True)
+            right_id = Column(Integer, ForeignKey('right.id'), primary_key=True)
+            extra_data = Column(String(50))
+
+            child = relationship("Child", back_populates="parent_associations")
+            parent = relationship("Parent", back_populates="child_associations")
+
+        class Parent(Base):
+            __tablename__ = 'left'
+            id = Column(Integer, primary_key=True)
+
+            children = relationship("Child", secondary="association")
+
+        class Child(Base):
+            __tablename__ = 'right'
+            id = Column(Integer, primary_key=True)
+
+  Additionally, just as changes to one relationship aren't reflected in the
+  others automatically, writing the same data to both relationships will cause
+  conflicting INSERT or DELETE statements as well, such as below where we
+  establish the same relationship between a ``Parent`` and ``Child`` object
+  twice::
+
+        p1 = Parent()
+        c1 = Child()
+        p1.children.append(c1)
+
+        # redundant, will cause a duplicate INSERT on Association
+        p1.parent_associations.append(Association(child=c1))
+
+  It's fine to use a mapping like the above if you know what
+  you're doing, though it may be a good idea to apply the ``viewonly=True`` parameter
+  to the "secondary" relationship to avoid the issue of redundant changes
+  being logged.  However, to get a foolproof pattern that allows a simple
+  two-object ``Parent->Child`` relationship while still using the association
+  object pattern, use the association proxy extension
+  as documented at :ref:`associationproxy_toplevel`.
diff --git a/doc/build/orm/extensions/declarative/inheritance.rst b/doc/build/orm/extensions/declarative/inheritance.rst
index 684b07b..20a51ef 100644
--- a/doc/build/orm/extensions/declarative/inheritance.rst
+++ b/doc/build/orm/extensions/declarative/inheritance.rst
@@ -8,6 +8,11 @@ as possible.  The ``inherits`` mapper keyword argument is not needed
 as declarative will determine this from the class itself.   The various
 "polymorphic" keyword arguments are specified using ``__mapper_args__``.
 
+.. seealso::
+
+    :ref:`inheritance_toplevel` - general introduction to inheritance
+    mapping with Declarative.
+
 Joined Table Inheritance
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -41,10 +46,6 @@ only the ``engineers.id`` column, give it a different attribute name::
         primary_language = Column(String(50))
 
 
-.. versionchanged:: 0.7 joined table inheritance favors the subclass
-   column over that of the superclass, such as querying above
-   for ``Engineer.id``.  Prior to 0.7 this was the reverse.
-
 .. _declarative_single_table:
 
 Single Table Inheritance
@@ -190,10 +191,12 @@ The same concept can be used with mixin classes (see
 
 The above mixin checks the local ``__table__`` attribute for the column.
 Because we're using single table inheritance, we're sure that in this case,
-``cls.__table__`` refers to ``People.__table__``.  If we were mixing joined-
+``cls.__table__`` refers to ``Person.__table__``.  If we were mixing joined-
 and single-table inheritance, we might want our mixin to check more carefully
 if ``cls.__table__`` is really the :class:`.Table` we're looking for.
 
+.. _declarative_concrete_table:
+
 Concrete Table Inheritance
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -245,74 +248,13 @@ before the class is built::
         __table__ = managers
         __mapper_args__ = {'polymorphic_identity':'manager', 'concrete':True}
 
-.. _declarative_concrete_helpers:
-
-Using the Concrete Helpers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Helper classes provides a simpler pattern for concrete inheritance.
-With these objects, the ``__declare_first__`` helper is used to configure the
-"polymorphic" loader for the mapper after all subclasses have been declared.
-
-.. versionadded:: 0.7.3
-
-An abstract base can be declared using the
-:class:`.AbstractConcreteBase` class::
... 4556 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/sqlalchemy.git



More information about the Python-modules-commits mailing list