Skip to content

Conversation

@pyup-bot
Copy link
Collaborator

This PR sets up pyup.io on this repo and updates all dependencies at once, in a single branch.

Subsequent pull requests will update one dependency at a time, each in their own branch. If you want to start with that right away, simply close this PR.

Update python-dateutil from 2.6.0 to 2.7.3.

Changelog

2.7.2

==========================

Bugfixes
--------

- Fixed an issue with the setup script running in non-UTF-8 environment.
Reported and fixed by gergondet (gh pr 651)


Misc
----

- GH 655

2.7.1

===========================

Data updates
------------

- Updated tzdata version to 2018d.


Bugfixes
--------

- Fixed issue where parser.parse would occasionally raise
decimal.Decimal-specific error types rather than ValueError. Reported by
amureki (gh issue 632). Fixed by pganssle (gh pr 636).
- Improve error message when rrule's dtstart and until are not both naive or
both aware. Reported and fixed by ryanpetrello (gh issue 633, gh pr 634)


Misc
----

- GH 644, GH 648

2.7.0

=============
- Dropped support for Python 2.6 (gh pr 362 by jdufresne)
- Dropped support for Python 3.2 (gh pr 626)
- Updated zoneinfo file to 2018c (gh pr 616)
- Changed licensing scheme so all new contributions are dual licensed under
Apache 2.0 and BSD. (gh pr 542, issue 496)
- Added __all__ variable to the root package. Reported by tebriel
(gh issue 406), fixed by mariocj89 (gh pr 494)
- Added python_requires to setup.py so that pip will distribute the right
version of dateutil. Fixed by jakec-github (gh issue 537, pr 552)
- Added the utils submodule, for miscellaneous utilities.
- Added within_delta function to utils - added by justanr (gh issue 432,
gh pr 437)
- Added today function to utils (gh pr 474)
- Added default_tzinfo function to utils (gh pr 475), solving an issue
reported by nealmcb (gh issue 94)
- Added dedicated ISO 8601 parsing function isoparse (gh issue 424).
Initial implementation by pganssle in gh pr 489 and 622, with a
pre-release fix by kirit93 (gh issue 546, gh pr 573). 
- Moved parser module into parser/_parser.py and officially deprecated the use
of several private functions and classes from that module. (gh pr 501, 515)
- Tweaked parser error message to include rejected string format, added by
pbiering (gh pr 300)
- Add support for parsing bytesarray, reported by uckelman (gh issue 417) and
fixed by uckelman and pganssle (gh pr 514)
- Started raising a warning when the parser finds a timezone string that it
cannot construct a tzinfo instance for (rather than succeeding with no
indication of an error). Reported and fixed by jbrockmendel (gh pr 540)
- Dropped the use of assert in the parser. Fixed by jbrockmendel (gh pr 502)
- Fixed to assertion logic in parser to support dates like '2015-15-May',
reported and fixed by jbrockmendel (gh pr 409)
- Fixed IndexError in parser on dates with trailing colons, reported and fixed
by jbrockmendel (gh pr 420)
- Fixed bug where hours were not validated, leading to improper parse. Reported
by heappro (gh pr 353), fixed by jbrockmendel (gh pr 482)
- Fixed problem parsing strings in %b-%Y-%d format. Reported and fixed by
jbrockmendel (gh pr 481)
- Fixed problem parsing strings in the %d%B%y format. Reported by asishm
(gh issue 360), fixed by jbrockmendel (gh pr 483)
- Fixed problem parsing certain unambiguous strings when year <99 (gh pr 510).
Reported by alexwlchan (gh issue 293).
- Fixed issue with parsing an unambiguous string representation of an ambiguous
datetime such that if possible the correct value for fold is set. Fixes
issue reported by JordonPhillips and pganssle (gh issue 318, 320,
gh pr 517)
- Fixed issue with improper rounding of fractional components. Reported by
dddmello (gh issue 427), fixed by m-dz (gh pr 570)
- Performance improvement to parser from removing certain min() calls. Reported
and fixed by jbrockmendel (gh pr 589)
- Significantly refactored parser code by jbrockmendel (gh prs 419, 436,
490, 498, 539) and pganssle (gh prs 435, 468)
- Implementated of __hash__ for relativedelta and weekday, reported and fixed
by mrigor (gh pr 389) 
- Implemented __abs__ for relativedelta. Reported by binnisb and pferreir
(gh issue 350, pr 472)
- Fixed relativedelta.weeks property getter and setter to work for both
negative and positive values. Reported and fixed by souliane (gh issue 459,
pr 460)
- Fixed issue where passing whole number floats to the months or years
arguments of the relativedelta constructor would lead to errors during
addition. Reported by arouanet (gh pr 411), fixed by lkollar (gh pr 553)
- Added a pre-built tz.UTC object representing UTC (gh pr 497)
- Added a cache to tz.gettz so that by default it will return the same object
for identical inputs. This will change the semantics of certain operations
between datetimes constructed with tzinfo=tz.gettz(...). (gh pr 628)
- Changed the behavior of tz.tzutc to return a singleton (gh pr 497, 504)
- Changed the behavior of tz.tzoffset to return the same object when passed the
same inputs, with a corresponding performance improvement (gh pr 504)
- Changed the behavior of tz.tzstr to return the same object when passed the
same inputs. (gh pr 628)
- Added .instance alternate constructors for tz.tzoffset and tz.tzstr, to
allow the construction of a new instance if desired. (gh pr 628)
- Added the tz.gettz.nocache function to allow explicit retrieval of a new
instance of the relevant tzinfo. (gh pr 628)
- Expand definition of tz.tzlocal equality so that the local zone is allow
equality with tzoffset and tzutc. (gh pr 598)
- Deprecated the idiosyncratic tzstr format mentioned in several examples but
evidently designed exclusively for dateutil, and very likely not used by
any current users. (gh issue 595, gh pr 606)
- Added the tz.resolve_imaginary function, which generates a real date from
an imaginary one, if necessary. Implemented by Cheukting (gh issue 339,
gh pr 607)
- Fixed issue where the tz.tzstr constructor would erroneously succeed if
passed an invalid value for tzstr. Fixed by pablogsal (gh issue 259,
gh pr 581)
- Fixed issue with tz.gettz for TZ variables that start with a colon. Reported
and fixed by lapointexavier (gh pr 601)
- Added a lock to tz.tzical's cache. Reported and fixed by Unrud (gh pr 430) 
- Fixed an issue with fold support on certain Python 3 implementations that
used the pre-3.6 pure Python implementation of datetime.replace, most
notably pypy3 (gh pr 446).
- Added support for VALUE=DATE-TIME for DTSTART in rrulestr. Reported by potuz
(gh issue 401) and fixed by Unrud (gh pr 429)
- Started enforcing that within VTIMEZONE, the VALUE parameter can only be
omitted or DATE-TIME, per RFC 5545. Reported by Unrud (gh pr 439)
- Added support for TZID parameter for DTSTART in rrulestr. Reported and
fixed by ryanpetrello (gh issue 614, gh pr 624)
- Added 'RRULE:' prefix to rrule strings generated by rrule.__str__, in
compliance with the RFC. Reported by AndrewPashkin (gh issue 86), fixed by
jarondl and mlorant (gh pr 450)
- Switched to setuptools_scm for version management, automatically calculating
a version number from the git metadata. Reported by jreback (gh issue 511),
implemented by Sulley38 (gh pr 564)
- Switched setup.py to use find_packages, and started testing against pip
installed versions of dateutil in CI. Fixed issue with parser import
discovered by jreback in pandas-dev/pandas18141. (gh issue 507, pr 509)
- Switched test suite to using pytest (gh pr 495)
- Switched CI over to use tox. Fixed by gaborbernat (gh pr 549)
- Added a test-only dependency on freezegun. (gh pr 474)
- Reduced number of CI builds on Appveyor. Fixed by kirit93 (gh issue 529,
gh pr 579)
- Made xfails strict by default, so that an xpass is a failure. (gh pr 567)
- Added a documentation generation stage to tox and CI. (gh pr 568)
- Added an explicit warning when running python setup.py explaining how to run
the test suites with pytest. Fixed by lkollar. (gh issue 544, gh pr 548)
- Added requirements-dev.txt for test dependency management (gh pr 499, 516)
- Fixed code coverage metrics to account for Windows builds (gh pr 526)
- Fixed code coverage metrics to NOT count xfails. Fixed by gaborbernat
(gh issue 519, gh pr 563)
- Style improvement to zoneinfo.tzfile that was confusing to static type
checkers. Reported and fixed by quodlibetor (gh pr 485)
- Several unused imports were removed by jdufresne. (gh pr 486)
- Switched ``isinstance(*, collections.Callable)`` to callable, which is available
on all supported Python versions. Implemented by jdufresne (gh pr 612)
- Added CONTRIBUTING.md (gh pr 533)
- Added AUTHORS.md (gh pr 542)
- Corrected setup.py metadata to reflect author vs. maintainer, (gh issue 477,
gh pr 538)
- Corrected README to reflect that tests are now run in pytest. Reported and
fixed by m-dz (gh issue 556, gh pr 557)
- Updated all references to RFC 2445 (iCalendar) to point to RFC 5545. Fixed
by mariocj89 (gh issue 543, gh pr 555)
- Corrected parse documentation to reflect proper integer offset units,
reported and fixed by abrugh (gh pr 458)
- Fixed dangling parenthesis in tzoffset documentation (gh pr 461)
- Started including the license file in wheels. Reported and fixed by
jdufresne (gh pr 476)
- Indendation fixes to parser docstring by jbrockmendel (gh pr 492)
- Moved many examples from the "examples" documentation into their appropriate
module documentation pages. Fixed by Tomasz-Kluczkowski and jakec-github
(gh pr 558, 561)
- Fixed documentation so that the parser.isoparse documentation displays.
Fixed by alexchamberlain (gh issue 545, gh pr 560)
- Refactored build and release sections and added setup instructions to
CONTRIBUTING. Reported and fixed by kynan (gh pr 562)
- Cleaned up various dead links in the documentation. (gh pr 602, 608, 618)

2.6.1

=============
- Updated zoneinfo file to 2017b. (gh pr 395)
- Added Python 3.6 to CI testing (gh pr 365)
- Removed duplicate test name that was preventing a test from being run.
Reported and fixed by jdufresne (gh pr 371)
- Fixed testing of folds and gaps, particularly on Windows (gh pr 392)
- Fixed deprecated escape characters in regular expressions. Reported by
nascheme and thierryba (gh issue 361), fixed by thierryba (gh pr 358)
- Many PEP8 style violations and other code smells were fixed by jdufresne
(gh prs 358, 363, 364, 366, 367, 368, 372, 374, 379, 380, 398)
- Improved performance of tzutc and tzoffset objects. (gh pr 391)
- Fixed issue with several time zone classes around DST transitions in any
zones with +0 standard offset (e.g. Europe/London) (gh issue 321, pr 390)
- Fixed issue with fuzzy parsing where tokens similar to AM/PM that are in the
end skipped were dropped in the fuzzy_with_tokens list. Reported and fixed
by jbrockmendel (gh pr 332).
- Fixed issue with parsing dates of the form X m YY. Reported by jbrockmendel.
(gh issue 333, pr 393)
- Added support for parser weekdays with less than 3 characters. Reported by
arcadefoam (gh issue 343), fixed by jonemo (gh pr 382)
- Fixed issue with the addition and subtraction of certain relativedeltas.
Reported and fixed by kootenpv (gh issue 346, pr 347)
- Fixed issue where the COUNT parameter of rrules was ignored if 0. Fixed by
mshenfield (gh pr 330), reported by vaultah (gh issue 329).
- Updated documentation to include the new tz methods. (gh pr 324)
- Update documentation to reflect that the parser can raise TypeError, reported
and fixed by tomchuk (gh issue 336, pr 337)
- Fixed an incorrect year in a parser doctest. Fixed by xlotlu (gh pr 357)
- Moved version information into _version.py and set up the versions more
granularly.
Links

Update psycopg2 from 2.7.1 to 2.7.5.

Changelog

2.7.5

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Allow non-ascii chars in namedtuple fields (regression introduced fixing
:ticket:`211`).
- Fixed adaptation of arrays of arrays of nulls (:ticket:`325`).
- Fixed building on Solaris 11 and derivatives such as SmartOS and illumos
(:ticket:`677`).
- Maybe fixed building on MSYS2 (as reported in :ticket:`658`).
- Allow string subclasses in connection and other places (:ticket:`679`).
- Don't raise an exception closing an unused named cursor (:ticket:`716`).
- Wheel package compiled against PostgreSQL 10.4 libpq and OpenSSL 1.0.2o.

2.7.4

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Moving away from installing the wheel package by default.
Packages installed from wheel raise a warning on import. Added package
``psycopg2-binary`` to install from wheel instead (:ticket:`543`).
- Convert fields names into valid Python identifiers in
`~psycopg2.extras.NamedTupleCursor` (:ticket:`211`).
- Fixed Solaris 10 support (:ticket:`532`).
- `cursor.mogrify()` can be called on closed cursors (:ticket:`579`).
- Fixed setting session characteristics in corner cases on autocommit
connections (:ticket:`580`).
- Fixed `~psycopg2.extras.MinTimeLoggingCursor` on Python 3 (:ticket:`609`).
- Fixed parsing of array of points as floats (:ticket:`613`).
- Fixed `~psycopg2.__libpq_version__` building with libpq >= 10.1
(:ticket:`632`).
- Fixed `~cursor.rowcount` after `~cursor.executemany()` with :sql:`RETURNING`
statements (:ticket:`633`).
- Fixed compatibility problem with pypy3 (:ticket:`649`).
- Wheel packages compiled against PostgreSQL 10.1 libpq and OpenSSL 1.0.2n.
- Wheel packages for Python 2.6 no more available (support dropped from
wheel building infrastructure).

2.7.3.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Wheel package compiled against PostgreSQL 10.0 libpq and OpenSSL 1.0.2l
(:tickets:`601, 602`).

2.7.3.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Dropped libresolv from wheel package to avoid incompatibility with
glibc 2.26 (wheels ticket 2).

2.7.3

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Restored default :sql:`timestamptz[]` typecasting to Python `!datetime`.
Regression introduced in Psycopg 2.7.2 (:ticket:`578`).

2.7.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed inconsistent state in externally closed connections
(:tickets:`263, 311, 443`). Was fixed in 2.6.2 but not included in
2.7 by mistake.
- Fixed Python exceptions propagation in green callback (:ticket:`410`).
- Don't display the password in `connection.dsn` when the connection
string is specified as an URI (:ticket:`528`).
- Return objects with timezone parsing "infinity" :sql:`timestamptz`
(:ticket:`536`).
- Dropped dependency on VC9 runtime on Windows binary packages
(:ticket:`541`).
- Fixed segfault in `~connection.lobject()` when *mode*\=\ `!None`
(:ticket:`544`).
- Fixed `~connection.lobject()` keyword argument *lobject_factory*
(:ticket:`545`).
- Fixed `~psycopg2.extras.ReplicationCursor.consume_stream()`
*keepalive_interval* argument (:ticket:`547`).
- Maybe fixed random import error on Python 3.6 in multiprocess
environment (:ticket:`550`).
- Fixed random `!SystemError` upon receiving abort signal (:ticket:`551`).
- Accept `~psycopg2.sql.Composable` objects in
`~psycopg2.extras.ReplicationCursor.start_replication_expert()`
(:ticket:`554`).
- Parse intervals returned as microseconds from Redshift (:ticket:`558`).
- Added `~psycopg2.extras.Json` `!prepare()` method to consider connection
params when adapting (:ticket:`562`).
- `~psycopg2.errorcodes` map updated to PostgreSQL 10 beta 1.
Links

Update SQLAlchemy from 1.1.11 to 1.2.8.

Changelog

1.2.8

:released: May 28, 2018

 .. change::
 	:tags: bug, orm
 	:tickets: 4256

 	Fixed regression in 1.2.7 caused by :ticket:`4228`, which itself was fixing
 	a 1.2-level regression, where the ``query_cls`` callable passed to a
 	:class:`.Session` was assumed to be a subclass of :class:`.Query`  with
 	class method availability, as opposed to an arbitrary callable.    In
 	particular, the dogpile caching example illustrates ``query_cls`` as a
 	function and not a :class:`.Query` subclass.

 .. change::
     :tags: bug, engine
     :tickets: 4252
     :versions: 1.3.0b1

     Fixed connection pool issue whereby if a disconnection error were raised
     during the connection pool's "reset on return" sequence in conjunction with
     an explicit transaction opened against the enclosing :class:`.Connection`
     object (such as from calling :meth:`.Session.close` without a rollback or
     commit, or calling :meth:`.Connection.close` without first closing a
     transaction declared with :meth:`.Connection.begin`), a double-checkin would
     result, which could then lead towards concurrent checkouts of the same
     connection. The double-checkin condition is now prevented overall by an
     assertion, as well as the specific double-checkin scenario has been
     fixed.

 .. change::
     :tags: bug, oracle
     :tickets: 4264
     :versions: 1.3.0b1

     The Oracle BINARY_FLOAT and BINARY_DOUBLE datatypes now participate within
     cx_Oracle.setinputsizes(), passing along NATIVE_FLOAT, so as to support the
     NaN value.  Additionally, :class:`.oracle.BINARY_FLOAT`,
     :class:`.oracle.BINARY_DOUBLE` and :class:`.oracle.DOUBLE_PRECISION` now
     subclass :class:`.Float`, since these are floating point datatypes, not
     decimal.  These datatypes were already defaulting the
     :paramref:`.Float.asdecimal` flag to False in line with what
     :class:`.Float` already does.

 .. change::
     :tags: bug, oracle
     :versions: 1.3.0b1

     Added reflection capabilities for the :class:`.oracle.BINARY_FLOAT`,
     :class:`.oracle.BINARY_DOUBLE` datatypes.


 .. change::
 	:tags: bug, ext
 	:tickets: 4247

 	The horizontal sharding extension now makes use of the identity token
 	added to ORM identity keys as part of :ticket:`4137`, when an object
 	refresh or column-based deferred load or unexpiration operation occurs.
 	Since we know the "shard" that the object originated from, we make
 	use of this value when refreshing, thereby avoiding queries against
 	other shards that don't match this object's identity in any case.

 .. change::
     :tags: bug, sql
     :versions: 1.3.0b1

     Fixed issue where the "ambiguous literal" error message used when
     interpreting literal values as SQL expression values would encounter a
     tuple value, and fail to format the message properly. Pull request courtesy
     Miguel Ventura.

 .. change::
     :tags: bug, mssql
     :tickets: 4250

     Fixed a 1.2 regression caused by :ticket:`4061` where the SQL Server
     "BIT" type would be considered to be "native boolean".  The goal here
     was to avoid creating a CHECK constraint on the column, however the bigger
     issue is that the BIT value does not behave like a true/false constant
     and cannot be interpreted as a standalone expression, e.g.
     "WHERE <column>".   The SQL Server dialect now goes back to being
     non-native boolean, but with an extra flag that still avoids creating
     the CHECK constraint.

 .. change::
     :tags: bug, oracle
     :tickets: 4259
     :versions: 1.3.0b1

     Altered the Oracle dialect such that when an :class:`.Integer` type is in
     use, the cx_Oracle.NUMERIC type is set up for setinputsizes().  In
     SQLAlchemy 1.1 and earlier, cx_Oracle.NUMERIC was passed for all numeric
     types unconditionally, and in 1.2 this was removed to allow for better
     numeric precision.  However, for integers, some database/client setups
     will fail to coerce boolean values True/False into integers which introduces
     regressive behavior when using SQLAlchemy 1.2.  Overall, the setinputsizes
     logic seems like it will need a lot more flexibility going forward so this
     is a start for that.

 .. change::
     :tags: bug, engine
     :versions: 1.3.0b1

     Fixed a reference leak issue where the values of the parameter dictionary
     used in a statement execution would remain referenced by the "compiled
     cache", as a result of storing the key view used by Python 3 dictionary
     keys().  Pull request courtesy Olivier Grisel.

 .. change::
     :tags: bug, orm
     :tickets: 4128

     Fixed a long-standing regression that occurred in version
     1.0, which prevented the use of a custom :class:`.MapperOption`
     that alters the _params of a :class:`.Query` object for a
     lazy load, since the lazy loader itself would overwrite those
     parameters.   This applies to the "temporal range" example
     on the wiki.  Note however that the
     :meth:`.Query.populate_existing` method is now required in
     order to rewrite the mapper options associated with an object
     already loaded in the identity map.

     As part of this change, a custom defined
     :class:`.MapperOption` will now cause lazy loaders related to
     the target object to use a non-baked query by default unless
     the :meth:`.MapperOption._generate_cache_key` method is implemented.
     In particular, this repairs one regression which occured when
     using the dogpile.cache "advanced" example, which was not
     returning cached results and instead emitting SQL due to an
     incompatibility with the baked query loader; with the change,
     the ``RelationshipCache`` option included for many releases
     in the dogpile example will disable the "baked" query altogether.
     Note that the dogpile example is also modernized to avoid both
     of these issues as part of issue :ticket:`4258`.

 .. change::
 	:tags: bug, ext
 	:tickets: 4266
 	:versions: 1.3.0b1

 	Fixed a race condition which could occur if automap
 	:meth:`.AutomapBase.prepare` were used within a multi-threaded context
 	against other threads which  may call :func:`.configure_mappers` as a
 	result of use of other mappers.  The unfinished mapping work of automap
 	is particularly sensitive to being pulled in by a
 	:func:`.configure_mappers` step leading to errors.

 .. change::
     :tags: bug, orm

     Fixed bug where the new :meth:`.baked.Result.with_post_criteria`
     method would not interact with a subquery-eager loader correctly,
     in that the "post criteria" would not be applied to embedded
     subquery eager loaders.   This is related to :ticket:`4128` in that
     the post criteria feature is now used by the lazy loader.

 .. change::
 	:tags: bug, tests
 	:tickets: 4249
 	:versions: 1.3.0b1

 	Fixed a bug in the test suite where if an external dialect returned
 	``None`` for ``server_version_info``, the exclusion logic would raise an
 	``AttributeError``.

 .. change::
     :tags: bug, orm
     :tickets: 4258

     Updated the dogpile.caching example to include new structures that
     accommodate for the "baked" query system, which is used by default within
     lazy loaders and some eager relationship loaders. The dogpile.caching
     "relationship_caching" and "advanced" examples were also broken due to
     :ticket:`4256`.  The issue here is also worked-around by the fix in
     :ticket:`4128`.

.. changelog::

1.2.7

:released: April 20, 2018

 .. change::
     :tags: bug, orm
     :tickets: 4228

     Fixed regression in 1.2 within sharded query feature where the
     new "identity_token" element was not being correctly considered within
     the scope of a lazy load operation, when searching the identity map
     for a related many-to-one element.   The new behavior will allow for
     making use of the "id_chooser" in order to determine the best identity
     key to retrieve from the identity map.  In order to achieve this, some
     refactoring of 1.2's "identity_token" approach has made some slight changes
     to the implementation of ``ShardedQuery`` which should be noted for other
     derivations of this class.

 .. change::
     :tags: bug, postgresql
     :tickets: 4229

     Fixed bug where the special "not equals" operator for the Postgresql
     "range" datatypes such as DATERANGE would fail to render "IS NOT NULL" when
     compared to the Python ``None`` value.



 .. change::
     :tags: bug, mssql
     :tickets: 4234
     :versions: 1.3.0b1

     Fixed 1.2 regression caused by :ticket:`4060` where the query used to
     reflect SQL Server cross-schema foreign keys was limiting the criteria
     incorrectly.



 .. change::
     :tags: bug, oracle
     :versions: 1.3.0b1

     The Oracle NUMBER datatype is reflected as INTEGER if the precision is NULL
     and the scale is zero, as this is how INTEGER values come back when
     reflected from Oracle's tables.  Pull request courtesy Kent Bower.

 .. change::
     :tags: feature, postgresql
     :tickets: 4160
     :versions: 1.3.0b1

     Added new PG type :class:`.postgresql.REGCLASS` which assists in casting
     table names to OID values.  Pull request courtesy Sebastian Bank.

 .. change::
     :tags: bug, sql
     :tickets: 4231
     :versions: 1.3.0b1

     Fixed issue where the compilation of an INSERT statement with the
     "literal_binds" option that also uses an explicit sequence and "inline"
     generation, as on Postgresql and Oracle, would fail to accommodate the
     extra keyword argument within the sequence processing routine.

 .. change::
     :tags: bug, orm
     :tickets: 4241

     Fixed issue in single-inheritance loading where the use of an aliased
     entity against a single-inheritance subclass in conjunction with the
     :meth:`.Query.select_from` method would cause the SQL to be rendered with
     the unaliased table mixed in to the query, causing a cartesian product.  In
     particular this was affecting the new "selectin" loader when used against a
     single-inheritance subclass.

.. changelog::

1.2.6

:released: March 30, 2018

 .. change::
     :tags: bug, mssql
     :tickets: 4227
     :versions: 1.3.0b1

     Adjusted the SQL Server version detection for pyodbc to only allow for
     numeric tokens, filtering out non-integers, since the dialect does tuple-
     numeric comparisons with this value.  This is normally true for all known
     SQL Server / pyodbc drivers in any case.

 .. change::
     :tags: feature, postgresql
     :versions: 1.3.0b1

     Added support for "PARTITION BY" in Postgresql table definitions,
     using "postgresql_partition_by".  Pull request courtesy
     Vsevolod Solovyov.

 .. change::
     :tags: bug, sql
     :tickets: 4204
     :versions: 1.3.0b1

     Fixed a regression that occurred from the previous fix to :ticket:`4204` in
     version 1.2.5, where a CTE that refers to itself after the
     :meth:`.CTE.alias` method has been called would not refer to iself
     correctly.

 .. change::
     :tags: bug, engine
     :tickets: 4225
     :versions: 1.3.0b1

     Fixed bug in connection pool where a connection could be present in the
     pool without all of its "connect" event handlers called, if a previous
     "connect" handler threw an exception; note that the dialects themselves
     have connect handlers that emit SQL, such as those which set transaction
     isolation, which can fail if the database is in a non-available state, but
     still allows a connection.  The connection is now invalidated first if any
     of the connect handlers fail.

 .. change::
     :tags: bug, oracle
     :tickets: 4211
     :versions: 1.3.0b1

     The minimum cx_Oracle version supported is 5.2 (June 2015).  Previously,
     the dialect asserted against version 5.0 but as of 1.2.2 we are using some
     symbols that did not appear until 5.2.

 .. change::
     :tags: bug, declarative
     :tickets: 4221

     Removed a warning that would be emitted when calling upon
     ``__table_args__``, ``__mapper_args__`` as named with a ``declared_attr``
     method, when called from a non-mapped declarative mixin.  Calling these
     directly is documented as the approach to use when one is overidding one
     of these methods on a mapped class.  The warning still emits for regular
     attribute names.

 .. change::
     :tags: bug, orm
     :tickets: 4215
     :versions: 1.3.0b1

     Fixed bug where using :meth:`.Mutable.associate_with` or
     :meth:`.Mutable.as_mutable` in conjunction with a class that has non-
     primary mappers set up with alternatively-named attributes would produce an
     attribute error.  Since non-primary mappers are not used for persistence,
     the mutable extension now excludes non-primary mappers from its
     instrumentation steps.


.. changelog::

1.2.5

:released: March 6, 2018

 .. change::
     :tags: bug, sql
     :tickets: 4210
     :versions: 1.3.0b1

     Fixed bug in :class:.`CTE` construct along the same lines as that of
     :ticket:`4204` where a :class:`.CTE` that was aliased would not copy itself
     correctly during a "clone" operation as is frequent within the ORM as well
     as when using the :meth:`.ClauseElement.params` method.

 .. change::
     :tags: bug, orm
     :tickets: 4199

     Fixed bug in new "polymorphic selectin" loading when a selection of
     polymorphic objects were to be partially loaded from a relationship
     lazy loader, leading to an "empty IN" condition within the load that
     raises an error for the "inline" form of "IN".

 .. change::
     :tags: bug, sql
     :tickets: 4204

     Fixed bug in CTE rendering where a :class:`.CTE` that was also turned into
     an :class:`.Alias` would not render its "ctename AS aliasname" clause
     appropriately if there were more than one reference to the CTE in a FROM
     clause.

 .. change::
     :tags: bug, orm
     :tickets: 4209
     :versions: 1.3.0b1

     Fixed 1.2 regression where a mapper option that contains an
     :class:`.AliasedClass` object, as is typical when using the
     :meth:`.QueryableAttribute.of_type` method, could not be pickled.   1.1's
     behavior was to omit the aliased class objects from the path, so this
     behavior is restored.

 .. change::
     :tags: feature, orm
     :versions: 1.3.0b1

     Added new feature :meth:`.Query.only_return_tuples`.  Causes the
     :class:`.Query` object to return keyed tuple objects unconditionally even
     if the query is against a single entity.   Pull request courtesy Eric
     Atkin.


 .. change::
     :tags: bug, sql
     :tickets: 4198

     Fixed bug in new "expanding IN parameter" feature where the bind parameter
     processors for values wasn't working at all, tests failed to cover this
     pretty basic case which includes that ENUM values weren't working.

.. changelog::

1.2.4

:released: February 22, 2018

 .. change::
     :tags: bug, orm
     :tickets: 4193

     Fixed 1.2 regression in ORM versioning feature where a mapping against a
     :func:`.select` or :func:`.alias` that also used a versioning column
     against the underlying table would fail due to the check added as part of
     :ticket:`3673`.

 .. change::
     :tags: bug, engine
     :tickets: 4190

     Fixed regression caused in 1.2.3 due to fix from :ticket:`4181` where
     the changes to the event system involving :class:`.Engine` and
     :class:`.OptionEngine` did not accommodate for event removals, which
     would raise an ``AttributeError`` when invoked at the class
     level.

 .. change::
     :tags: bug, sql
     :tickets: 4197

     Fixed bug where CTE expressions would not have their name or alias name
     quoted when the given name is case sensitive or otherwise requires quoting.
     Pull request courtesy Eric Atkin.

.. changelog::

1.2.3

:released: February 16, 2018

 .. change::
     :tags: bug, oracle
     :tickets: 4182

     Fixed bug in cx_Oracle disconnect detection, used by pre_ping and other
     features, where an error could be raised as DatabaseError which includes a
     numeric error code; previously we weren't checking in this case for a
     disconnect code.

 .. change::
     :tags: bug, sqlite

     Fixed the import error raised when a platform
     has neither pysqlite2 nor sqlite3 installed, such
     that the sqlite3-related import error is raised,
     not the pysqlite2 one which is not the actual
     failure mode.  Pull request courtesy Robin.

 .. change::
     :tags: bug, orm
     :tickets: 4175

     Fixed bug where the :class:`.Bundle` object did not
     correctly report upon the primary :class:`.Mapper` object
     represened by the bundle, if any.   An immediate
     side effect of this issue was that the new selectinload
     loader strategy wouldn't work with the horizontal sharding
     extension.

 .. change::
     :tags: bug, sql
     :tickets: 4180

     Fixed bug where the :class:`.Enum` type wouldn't handle
     enum "aliases" correctly, when more than one key refers to the
     same value.  Pull request courtesy Daniel Knell.


 .. change::
     :tags: bug, engine
     :tickets: 4181

     Fixed bug where events associated with an :class:`Engine`
     at the class level would be doubled when the
     :meth:`.Engine.execution_options` method were used.  To
     achieve this, the semi-private class :class:`.OptionEngine`
     no longer accepts events directly at the class level
     and will raise an error; the class only propagates class-level
     events from its parent :class:`.Engine`.   Instance-level
     events continue to work as before.

 .. change::
     :tags: bug, tests
     :tickets: 3265

     A test added in 1.2 thought to confirm a Python 2.7 behavior turns out to
     be confirming the behavior only as of Python 2.7.8. Python bug 8743 still
     impacts set comparison in Python 2.7.7 and earlier, so the test in question
     involving AssociationSet no longer runs for these older Python 2.7
     versions.

 .. change::
     :tags: feature, oracle

     The ON DELETE options for foreign keys are now part of
     Oracle reflection.  Oracle does not support ON UPDATE
     cascades.  Pull request courtesy Miroslav Shubernetskiy.



 .. change::
     :tags: bug, orm
     :tickets: 4188

     Fixed bug in concrete inheritance mapping where user-defined
     attributes such as hybrid properties that mirror the names
     of mapped attributes from sibling classes would be overwritten by
     the mapper as non-accessible at the instance level.   Additionally
     ensured that user-bound descriptors are not implicitly invoked at the class
     level during the mapper configuration stage.

 .. change::
     :tags: bug, orm
     :tickets: 4178

     Fixed bug where the :func:`.orm.reconstructor` event
     helper would not be recognized if it were applied to the
     ``__init__()`` method of the mapped class.

 .. change::
     :tags: bug, engine
     :tickets: 4170

     The :class:`.URL` object now allows query keys to be specified multiple
     times where their values will be joined into a list.  This is to support
     the plugins feature documented at :class:`.CreateEnginePlugin` which
     documents that "plugin" can be passed multiple times. Additionally, the
     plugin names can be passed to :func:`.create_engine` outside of the URL
     using the new :paramref:`.create_engine.plugins` parameter.

 .. change::
     :tags: feature, sql
     :tickets: 3906

     Added support for :class:`.Enum` to persist the values of the enumeration,
     rather than the keys, when using a Python pep-435 style enumerated object.
     The user supplies a callable function that will return the string values to
     be persisted.  This allows enumerations against non-string values to be
     value-persistable as well.  Pull request courtesy Jon Snyder.

 .. change::
     :tags: feature, orm

     Added new argument :paramref:`.attributes.set_attribute.inititator`
     to the :func:`.attributes.set_attribute` function, allowing an
     event token received from a listener function to be propagated
     to subsequent set events.

.. changelog::

1.2.2

:released: January 24, 2018

 .. change::
     :tags: bug, mssql
     :tickets: 4164

     Added ODBC error code 10054 to the list of error
     codes that count as a disconnect for ODBC / MSSQL server.


 .. change::
     :tags: bug, orm
     :tickets: 4171

     Fixed 1.2 regression regarding new bulk_replace event
     where a backref would fail to remove an object from the
     previous owner when a bulk-assignment assigned the
     object to a new owner.

 .. change::
     :tags: bug, oracle
     :tickets: 4163

     The cx_Oracle dialect now calls setinputsizes() with cx_Oracle.NCHAR
     unconditionally when the NVARCHAR2 datatype, in SQLAlchemy corresponding
     to sqltypes.Unicode(), is in use.  Per cx_Oracle's author this allows
     the correct conversions to occur within the Oracle client regardless
     of the setting for NLS_NCHAR_CHARACTERSET.

 .. change::
     :tags: bug, mysql

     Added more MySQL 8.0 reserved words to the MySQL dialect
     for quoting purposes.  Pull request courtesy
     Riccardo Magliocchetti.

.. changelog::

1.2.1

:released: January 15, 2018

 .. change::
     :tags: bug, orm
     :tickets: 4159

     Fixed regression where pickle format of a Load / _UnboundLoad object (e.g.
     loader options) changed and ``__setstate__()`` was raising an
     UnboundLocalError for an object received from the legacy format, even
     though an attempt was made to do so.  tests are now added to ensure this
     works.

 .. change::
     :tags: bug, ext
     :tickets: 4150

     Fixed regression in association proxy due to :ticket:`3769`
     (allow for chained any() / has()) where contains() against
     an association proxy chained in the form
     (o2m relationship, associationproxy(m2o relationship, m2o relationship))
     would raise an error regarding the re-application of contains()
     on the final link of the chain.

 .. change::
     :tags: bug, orm
     :tickets: 4153

     Fixed regression caused by new lazyload caching scheme in :ticket:`3954`
     where a query that makes use of loader options with of_type would cause
     lazy loads of unrelated paths to fail with a TypeError.

 .. change::
     :tags: bug, oracle
     :tickets: 4157

     Fixed regression where the removal of most setinputsizes
     rules from cx_Oracle dialect impacted the TIMESTAMP
     datatype's ability to retrieve fractional seconds.



 .. change::
     :tags: bug, tests

     Removed an oracle-specific requirements rule from the public
     test suite that was interfering with third party dialect
     suites.

 .. change::
     :tags: bug, mssql
     :tickets: 4154

     Fixed regression in 1.2 where newly repaired quoting
     of collation names in :ticket:`3785` breaks SQL Server,
     which explicitly does not understand a quoted collation
     name.   Whether or not mixed-case collation names are
     quoted or not is now deferred down to a dialect-level
     decision so that each dialect can prepare these identifiers
     directly.

 .. change::
     :tags: bug, orm
     :tickets: 4156

     Fixed bug in new "selectin" relationship loader where the loader could try
     to load a non-existent relationship when loading a collection of
     polymorphic objects, where only some of the mappers include that
     relationship, typically when :meth:`.PropComparator.of_type` is being used.

 .. change::
     :tags: bug, tests

     Added a new exclusion rule group_by_complex_expression
     which disables tests that use "GROUP BY <expr>", which seems
     to be not viable for at least two third party dialects.

 .. change::
     :tags: bug, oracle

     Fixed regression in Oracle imports where a missing comma caused
     an undefined symbol to be present.  Pull request courtesy
     Miroslav Shubernetskiy.

.. changelog::

1.2.0

:released: December 27, 2017

 .. change::
     :tags: orm, feature
     :tickets: 4137

     Added a new data member to the identity key tuple
     used by the ORM's identity map, known as the
     "identity_token".  This token defaults to None but
     may be used by database sharding schemes to differentiate
     objects in memory with the same primary key that come
     from different databases.   The horizontal sharding
     extension integrates this token applying the shard
     identifier to it, thus allowing primary keys to be
     duplicated across horizontally sharded backends.

     .. seealso::

         :ref:`change_4137`

 .. change::
     :tags: bug, mysql
     :tickets: 4115

     Fixed regression from issue 1.2.0b3 where "MariaDB" version comparison can
     fail for some particular MariaDB version strings under Python 3.

 .. change::
     :tags: enhancement, sql
     :tickets: 959

     Implemented "DELETE..FROM" syntax for Postgresql, MySQL, MS SQL Server
     (as well as within the unsupported Sybase dialect) in a manner similar
     to how "UPDATE..FROM" works.  A DELETE statement that refers to more than
     one table will switch into "multi-table" mode and render the appropriate
     "USING" or multi-table "FROM" clause as understood by the database.
     Pull request courtesy Pieter Mulder.

     .. seealso::

         :ref:`change_959`

 .. change::
    :tags: bug, sql
    :tickets: 2694

    Reworked the new "autoescape" feature introduced in
    :ref:`change_2694` in 1.2.0b2 to be fully automatic; the escape
    character now defaults to a forwards slash ``"/"`` and
    is applied to percent, underscore, as well as the escape
    character itself, for fully automatic escaping.  The
    character can also be changed using the "escape" parameter.

    .. seealso::

         :ref:`change_2694`


 .. change::
     :tags: bug, sql
     :tickets: 4147

     Fixed bug where the :meth:`.Table.tometadata` method would not properly
     accommodate :class:`.Index` objects that didn't consist of simple
     column expressions, such as indexes against a :func:`.text` construct,
     indexes that used SQL expressions or :attr:`.func`, etc.   The routine
     now copies expressions fully to a new :class:`.Index` object while
     substituting all table-bound :class:`.Column` objects for those
     of the target table.

 .. change::
     :tags: bug, sql
     :tickets: 4142

     Changed the "visit name" of :class:`.ColumnElement` from "column" to
     "column_element", so that when this element is used as the basis for a
     user-defined SQL element, it is not assumed to behave like a table-bound
     :class:`.ColumnClause` when processed by various SQL traversal utilities,
     as are commonly used by the ORM.

 .. change::
     :tags: bug, sql, ext
     :tickets: 4141

     Fixed issue in :class:`.ARRAY` datatype which is essentially the same
     issue as that of :ticket:`3832`, except not a regression, where
     column attachment events on top of :class:`.ARRAY` would not fire
     correctly, thus interfering with systems which rely upon this.   A key
     use case that was broken by this is the use of mixins to declare
     columns that make use of :meth:`.MutableList.as_mutable`.

 .. change::
     :tags: feature, engine
     :tickets: 4089

     The "password" attribute of the :class:`.url.URL` object can now be
     any user-defined or user-subclassed string object that responds to the
     Python ``str()`` builtin.   The object passed will be maintained as the
     datamember :attr:`.url.URL.password_original` and will be consulted
     when the :attr:`.url.URL.password` attribute is read to produce the
     string value.

 .. change::
     :tags: bug, orm
     :tickets: 4130

     Fixed bug in :func:`.contains_eager` query option where making use of a
     path that used :meth:`.PropComparator.of_type` to refer to a subclass
     across more than one level of joins would also require that the "alias"
     argument were provided with the same subtype in order to avoid adding
     unwanted FROM clauses to the query; additionally,  using
     :func:`.contains_eager` across subclasses that use :func:`.aliased` objects
     of subclasses as the :meth:`.PropComparator.of_type` argument will also
     render correctly.




 .. change::
     :tags: feature, postgresql

     Added new :class:`.postgresql.MONEY` datatype.  Pull request courtesy
     Cleber J Santos.

 .. change::
     :tags: bug, sql
     :tickets: 4140

     Fixed bug in new "expanding bind parameter" feature whereby if multiple
     params were used in one statement, the regular expression would not
     match the parameter name correctly.

 .. change::
     :tags: enhancement, ext
     :tickets: 4135

     Added new method :meth:`.baked.Result.with_post_criteria` to baked
     query system, allowing non-SQL-modifying transformations to take place
     after the query has been pulled from the cache.  Among other things,
     this method can be used with :class:`.horizontal_shard.ShardedQuery`
     to set the shard identifier.   :class:`.horizontal_shard.ShardedQuery`
     has also been modified such that its :meth:`.ShardedQuery.get` method
     interacts correctly with that of :class:`.baked.Result`.

 .. change::
     :tags: bug, oracle
     :tickets: 4064

     Added some additional rules to fully handle ``Decimal('Infinity')``,
     ``Decimal('-Infinity')`` values with cx_Oracle numerics when using
     ``asdecimal=True``.

 .. change::
     :tags: bug, mssql
     :tickets: 4121

     Fixed bug where sqltypes.BINARY and sqltypes.VARBINARY datatypes
     would not include correct bound-value handlers for pyodbc,
     which allows the pyodbc.NullParam value to be passed that
     helps with FreeTDS.




 .. change::
     :tags: feature, misc

     Added a new errors section to the documentation with background
     about common error messages.   Selected exceptions within SQLAlchemy
     will include a link in their string output to the relevant section
     within this page.

 .. change::
     :tags: bug, orm
     :tickets: 4032

     The :meth:`.Query.exists` method will now disable eager loaders for when
     the query is rendered.  Previously, joined-eager load joins would be rendered
     unnecessarily as well as subquery eager load queries would be needlessly
     generated.   The new behavior matches that of the :meth:`.Query.subquery`
     method.

.. changelog::

1.2.0b3

:released: December 27, 2017
 :released: October 13, 2017

 .. change::
     :tags: feature, postgresql
     :tickets: 4109

     Added a new flag ``use_batch_mode`` to the psycopg2 dialect.  This flag
     enables the use of psycopg2's ``psycopg2.extras.execute_batch``
     extension when the :class:`.Engine` calls upon
     ``cursor.executemany()``. This extension provides a critical
     performance increase by over an order of magnitude when running INSERT
     statements in batch.  The flag is False by default as it is considered
     to be experimental for now.

     .. seealso::

         :ref:`change_4109`

 .. change::
     :tags: bug, mssql
     :tickets: 4061

     SQL Server supports what SQLAlchemy calls "native boolean"
     with its BIT type, as this type only accepts 0 or 1 and the
     DBAPIs return its value as True/False.   So the SQL Server
     dialects now enable "native boolean" support, in that a
     CHECK constraint is not generated for a :class:`.Boolean`
     datatype.  The only difference vs. other native boolean
     is that there are no "true" / "false" constants so "1" and
     "0" are still rendered here.


 .. change::
     :tags: bug, oracle
     :tickets: 4064

     Partial support for persisting and retrieving the Oracle value
     "infinity" is implemented with cx_Oracle, using Python float values
     only, e.g. ``float("inf")``.  Decimal support is not yet fulfilled by
     the cx_Oracle DBAPI driver.

 .. change::
     :tags: bug, oracle

     The cx_Oracle dialect has been reworked and modernized to take advantage of
     new patterns that weren't present in the old 4.x series of cx_Oracle. This
     includes that the minimum cx_Oracle version is the 5.x series and that
     cx_Oracle 6.x is now fully tested. The most significant change involves
     type conversions, primarily regarding the numeric / floating point and LOB
     datatypes, making more effective use of cx_Oracle type handling hooks to
     simplify how bind parameter and result data is processed.

     .. seealso::

         :ref:`change_cxoracle_12`

 .. change::
     :tags: bug, oracle
     :tickets: 3997

     two phase support for cx_Oracle has been completely removed for all
     versions of cx_Oracle, whereas in 1.2.0b1 this change only took effect for
     the 6.x series of cx_Oracle.  This feature never worked correctly
     in any version of cx_Oracle and in cx_Oracle 6.x, the API which SQLAlchemy
     relied upon was removed.

     .. seealso::

         :ref:`change_cxoracle_12`

 .. change::
     :tags: bug, oracle

     The column keys present in a result set when using :meth:`.Insert.returning`
     with the cx_Oracle backend now use the correct column / label names
     like that of all other dialects.  Previously, these came out as
     ``ret_nnn``.

     .. seealso::

         :ref:`change_cxoracle_12`

 .. change::
     :tags: bug, oracle

     Several parameters to the cx_Oracle dialect are now deprecated and will
     have no effect: ``auto_setinputsizes``, ``exclude_setinputsizes``,
     ``allow_twophase``.

     .. seealso::

         :ref:`change_cxoracle_12`


 .. change::
     :tags: bug, sql
     :tickets: 4075

     Added a new method :meth:`.DefaultExecutionContext.get_current_parameters`
     which is used within a function-based default value generator in
     order to retrieve the current parameters being passed to the statement.
     The new function differs from the
     :attr:`.DefaultExecutionContext.current_parameters` attribute in
     that it also provides for optional grouping of parameters that
     correspond to a multi-valued "insert" construct.  Previously it was not
     possible to identify the subset of parameters that were relevant to
     the function call.

     .. seealso::

         :ref:`change_4075`

         :ref:`context_default_functions`

 .. change::
     :tags: bug, orm
     :tickets: 4050

     Fixed regression introduced in 1.2.0b1 due to :ticket:`3934` where the
     :class:`.Session` would fail to "deactivate" the transaction, if a
     rollback failed (the target issue is when MySQL loses track of a SAVEPOINT).
     This would cause a subsequent call to :meth:`.Session.rollback` to raise
     an error a second time, rather than completing and bringing the
     :class:`.Session` back to ACTIVE.

 .. change::
     :tags: bug, postgresql
     :tickets: 4041

     Fixed bug where the pg8000 driver would fail if using
     :meth:`.MetaData.reflect` with a schema name, since the schema name would
     be sent as a "quoted_name" object that's a string subclass, which pg8000
     doesn't recognize.   The quoted_name type is added to pg8000's
     py_types collection on connect.

 .. change::
     :tags: bug, postgresql
     :tickets: 4016

     Enabled UUID support for the pg8000 driver, which supports native Python
     uuid round trips for this datatype.  Arrays of UUID are still not supported,
     however.

 .. change::
     :tags: mssql, bug
     :tickets: 4057

     Fixed the pymssql dialect so that percent signs in SQL text, such
     as used in modulus expressions or literal textual values, are
     **not** doubled up, as seems to be what pymssql expects.  This is
     despite the fact that the pymssql DBAPI uses the "pyformat" parameter
     style which itself considers the percent sign to be significant.

 .. change::
     :tags: bug, orm, declarative
     :tickets: 4091

     A warning is emitted if a subclass attempts to override an attribute
     that was declared on a superclass using ``declared_attr.cascading``
     that the overridden attribute will be ignored. This use
     case cannot be fully supported down to further subclasses without more
     complex development efforts, so for consistency the "cascading" is
     honored all the way down regardless of overriding attributes.

 .. change::
     :tags: bug, orm, declarative
     :tickets: 4092

     A warning is emitted if the ``declared_attr.cascading`` attribute is
     used with a special declarative name such as ``__tablename__``, as this
     has no effect.

 .. change::
     :tags: feature, engine
     :tickets: 4077

     Added ``__next__()`` and ``next()`` methods to :class:`.ResultProxy`,
     so that the ``next()`` builtin function works on the object directly.
     :class:`.ResultProxy` has long had an ``__iter__()`` method which already
     allows it to respond to the ``iter()`` builtin.   The implementation
     for ``__iter__()`` is unchanged, as performance testing has indicated
     that iteration using a ``__next__()`` method with ``StopIteration``
     is about 20% slower in both Python 2.7 and 3.6.

 .. change::
     :tags: feature, mssql
     :tickets: 4086

     Added a new :class:`.mssql.TIMESTAMP` datatype, that
     correctly acts like a binary datatype for SQL Server
     rather than a datetime type, as SQL Server breaks the
     SQL standard here.  Also added :class:`.mssql.ROWVERSION`,
     as the "TIMESTAMP" type in SQL Server is deprecated in
     favor of ROWVERSION.

 .. change::
     :tags: bug, orm
     :tickets: 4084

     Fixed issue where the :func:`.make_transient_to_detached` function
     would expire all attributes on the target object, including "deferred"
     attributes, which has the effect of the attribute being undeferred
     for the next refesh, causing an unexpected load of the attribute.

 .. change::
     :tags: bug, orm
     :tickets: 4026

     Fixed bug in :ref:`change_3948` which prevented "selectin" and
     "inline" settings in a multi-level class hierarchy from interacting
     together as expected.    A new example is added to the documentation.

     .. seealso::

         :ref:`polymorphic_selectin_and_withpoly`

 .. change::
     :tags: bug, oracle
     :tickets: 4042

     Fixed bug where an index reflected under Oracle with an expression like
     "column DESC" would not be returned, if the table also had no primary
     key, as a result of logic that attempts to filter out the
     index implicitly added by Oracle onto the primary key columns.

 .. change::
 	:tags: bug, orm
 	:tickets: 4071

 	Removed the warnings that are emitted when the LRU caches employed
 	by the mapper as well as loader strategies reach their threshold; the
 	purpose of this warning was at first a guard against excess cache keys
 	being generated but became basically a check on the "creating many
 	engines" antipattern.   While this is still an antipattern, the presense
 	of test suites which both create an engine per test as well as raise
 	on all warnings will be an inconvenience; it should not be critical
 	that such test suites change their architecture just for this warning
 	(though engine-per-test suite is always better).

 .. change::
     :tags: bug, orm
     :tickets: 4049

     Fixed regression where the use of a :func:`.undefer_group` option
     in conjunction with a lazy loaded relationship option would cause
     an attribute error, due to a bug in the SQL cache key generation
     added in 1.2 as part of :ticket:`3954`.

 .. change::
     :tags: bug, oracle
     :tickets: 4045

     Fixed more regressions caused by cx_Oracle 6.0; at the moment, the only
     behavioral change for users is disconnect detection now detects for
     cx_Oracle.DatabaseError in addition to cx_Oracle.InterfaceError, as
     this behavior seems to have changed.   Other issues regarding numeric
     precision and uncloseable connections are pending with the upstream
     cx_Oracle issue tracker.

 .. change::
     :tags: bug, mssql
     :tickets: 4060

     Fixed bug where the SQL Server dialect could pull columns from multiple
     schemas when reflecting a self-referential foreign key constraint, if
     multiple schemas contained a constraint of the same name against a
     table of the same name.


 .. change::
     :tags: feature, mssql
     :tickets: 4058

     Added support for "AUTOCOMMIT" isolation level, as established
     via :meth:`.Connection.execution_options`, to the
     PyODBC and pymssql dialects.   This isolation level sets the
     appropriate DBAPI-specific flags on the underlying
     connection object.

 .. change::
     :tags: bug, orm
     :tickets: 4073

     Modified the change made to the ORM update/delete evaluator in
     :ticket:`3366` such that if an unmapped column expression is present
     in the update or delete, if the evaluator can match its name to the
     mapped columns of the target class, a warning is emitted, rather than
     raising UnevaluatableError.  This is essentially the pre-1.2 behavior,
     and is to allow migration for applications that are currently relying
     upon this pattern.  However, if the given attribute name cannot be
     matched to the columns of the mapper, the UnevaluatableError is
     still raised, which is what was fixed in :ticket:`3366`.

 .. change::
     :tags: bug, sql
     :tickets: 4087

     Fixed bug in new SQL comments feature where table and column comment
     would not be copied when using :meth:`.Table.tometadata`.

 .. change::
     :tags: bug, sql
     :tickets: 4102

     In release 1.1, the :class:`.Boolean` type was broken in that
     boolean coercion via ``bool()`` would occur for backends that did not
     feature "native boolean", but would not occur for native boolean backends,
     meaning the string ``"0"`` now behaved inconsistently. After a poll, a
     consensus was reached that non-boolean values should be raising an error,
     especially in the ambiguous case of string ``"0"``; so the :class:`.Boolean`
     datatype will now raise ``ValueError`` if an incoming value is not
     within the range ``None, True, False, 1, 0``.

     .. seealso::

         :ref:`change_4102`

 .. change::
     :tags: bug, sql
     :tickets: 4063

     Refined the behavior of :meth:`.Operators.op` such that in all cases,
     if the :paramref:`.Operators.op.is_comparison` flag is set to True,
     the return type of the resulting expression will be
     :class:`.Boolean`, and if the flag is False, the return type of the
     resulting expression will be the same type as that of the left-hand
     expression, which is the typical default behavior of other operators.
     Also added a new parameter :paramref:`.Operators.op.return_type` as well
     as a helper method :meth:`.Operators.bool_op`.

     .. seealso::

         :ref:`change_4063`

 .. change::
     :tags: bug, mysql
     :tickets: 4072

     Changed the name of the ``.values`` attribute of the new MySQL
     INSERT..ON DUPLICATE KEY UPDATE construct to ``.inserted``, as
     :class:`.Insert` already has a method called :meth:`.Insert.values`.
     The ``.inserted`` attribute ultimately renders the MySQL ``VALUES()``
     function.

 .. change::
     :tags: bug, mssql, orm
     :tickets: 4062

     Added a new class of "rowcount support" for dialects that is specific to
     when "RETURNING", which on SQL Server looks like "OUTPUT inserted", is in
     use, as the PyODBC backend isn't able to give us rowcount on an UPDATE or
     DELETE statement when OUTPUT is in effect.  This primarily affects the ORM
     when a flush is updating a row that contains server-calcluated values,
     raising an error if the backend does not return the expected row count.
     PyODBC now states that it supports rowcount except if OUTPUT.inserted is
     present, which is taken into account by the ORM during a flush as to
     whether it will look for a rowcount.

 .. change::
     :tags: bug, sql
     :tickets: 4088

     Internal refinements to the :class:`.Enum`, :class:`.Interval`, and
     :class:`.Boolean` types, which now extend a common mixin
     :class:`.Emulated` that indicates a type that provides Python-side
     emulation of a DB native type, switching out to the DB native type when a
     supporting backend is in use.   The Postgresql :class:`.INTERVAL` type
     when used directly will now include the correct type coercion rules for
     SQL expressions that also take effect for :class:`.sqltypes.Interval`
     (such as adding a date to an interval yields a datetime).


 .. change::
     :tags: bug, mssql, orm

     Enabled the "sane_rowcount" flag for the pymssql dialect, indicating
     that the DBAPI now reports the correct number of rows affected from
     an UPDATE or DELETE statement.  This impacts mostly the ORM versioning
     feature in that it now can verify the number of rows affected on a
     target version.

 .. change:: 4028
     :tags: bug, 

@coveralls
Copy link

Coverage Status

Coverage remained the same at 91.765% when pulling e96c194 on pyup-initial-update into 2e5cab4 on master.

@aodj aodj merged commit 8913036 into master Jun 18, 2018
@aodj aodj deleted the pyup-initial-update branch June 18, 2018 13:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants