[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