Skip to content

Scheduled monthly dependency update for February#171

Merged
samuelcolvin merged 15 commits intomasterfrom
pyup-scheduled-update-02-01-2018
Feb 10, 2018
Merged

Scheduled monthly dependency update for February#171
samuelcolvin merged 15 commits intomasterfrom
pyup-scheduled-update-02-01-2018

Conversation

@pyup-bot
Copy link
Copy Markdown
Contributor

@pyup-bot pyup-bot commented Feb 1, 2018

Updates

Here's a list of all the updates bundled in this pull request. I've added some links to make it easier for you to find all the information you need.

pytest 3.2.3 » 3.4.0 PyPI | Changelog | Repo | Homepage
pytest-aiohttp 0.1.3 » 0.3.0 PyPI | Changelog | Repo
aiohttp-jinja2 0.14.0 » 0.15.0 PyPI | Changelog | Repo
aiohttp-session[secure] 1.0.1 » 2.2.0 PyPI | Changelog | Repo
aiopg 0.13.1 » 0.13.2 PyPI | Changelog | Docs
SQLAlchemy 1.1.14 » 1.2.2 PyPI | Changelog | Homepage
coverage 4.4.1 » 4.4.2 PyPI | Changelog | Repo
pytest-timeout 1.2.0 » 1.2.1 PyPI | Repo
pytest-xdist 1.20.1 » 1.22.0 PyPI | Changelog | Repo
Sphinx 1.6.5 » 1.6.6 PyPI | Changelog | Homepage

Changelogs

pytest 3.2.3 -> 3.4.0

3.4.0

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

Deprecations and Removals

  • All pytest classes now subclass object for better Python 2/3 compatibility.
    This should not affect user code except in very rare edge cases. (2147 <https://github.com/pytest-dev/pytest/issues/2147>_)

Features

  • Introduce empty_parameter_set_mark ini option to select which mark to
    apply when pytest.mark.parametrize is given an empty set of parameters.
    Valid options are skip (default) and xfail. Note that it is planned
    to change the default to xfail in future releases as this is considered
    less error prone. (2527 <https://github.com/pytest-dev/pytest/issues/2527>_)
  • Incompatible change: after community feedback the logging <https://docs.pytest.org/en/latest/logging.html>_ functionality has
    undergone some changes. Please consult the logging documentation <https://docs.pytest.org/en/latest/logging.htmlincompatible-changes-in-pytest-3-4>_
    for details. (3013 <https://github.com/pytest-dev/pytest/issues/3013>_)
  • Console output falls back to "classic" mode when capturing is disabled (-s),
    otherwise the output gets garbled to the point of being useless. (3038 <https://github.com/pytest-dev/pytest/issues/3038>_)
  • New pytest_runtest_logfinish <https://docs.pytest.org/en/latest/writing_plugins.html_pytest.hookspec.pytest_runtest_logfinish>_
    hook which is called when a test item has finished executing, analogous to
    pytest_runtest_logstart <https://docs.pytest.org/en/latest/writing_plugins.html_pytest.hookspec.pytest_runtest_start>.
    (3101 <https://github.com/pytest-dev/pytest/issues/3101>
    )
  • Improve performance when collecting tests using many fixtures. (3107 <https://github.com/pytest-dev/pytest/issues/3107>_)
  • New caplog.get_records(when) method which provides access to the captured
    records for the "setup", "call" and "teardown"
    testing stages. (3117 <https://github.com/pytest-dev/pytest/issues/3117>_)
  • New fixture record_xml_attribute that allows modifying and inserting
    attributes on the <testcase> xml node in JUnit reports. (3130 <https://github.com/pytest-dev/pytest/issues/3130>_)
  • The default cache directory has been renamed from .cache to
    .pytest_cache after community feedback that the name .cache did not
    make it clear that it was used by pytest. (3138 <https://github.com/pytest-dev/pytest/issues/3138>_)
  • Colorize the levelname column in the live-log output. (3142 <https://github.com/pytest-dev/pytest/issues/3142>_)

Bug Fixes

  • Fix hanging pexpect test on MacOS by using flush() instead of wait().
    (2022 <https://github.com/pytest-dev/pytest/issues/2022>_)
  • Fix restoring Python state after in-process pytest runs with the
    pytester plugin; this may break tests using multiple inprocess
    pytest runs if later ones depend on earlier ones leaking global interpreter
    changes. (3016 <https://github.com/pytest-dev/pytest/issues/3016>_)
  • Fix skipping plugin reporting hook when test aborted before plugin setup
    hook. (3074 <https://github.com/pytest-dev/pytest/issues/3074>_)
  • Fix progress percentage reported when tests fail during teardown. (3088 <https://github.com/pytest-dev/pytest/issues/3088>_)
  • Incompatible change: -o/--override option no longer eats all the
    remaining options, which can lead to surprising behavior: for example,
    pytest -o foo=1 /path/to/test.py would fail because /path/to/test.py
    would be considered as part of the -o command-line argument. One
    consequence of this is that now multiple configuration overrides need
    multiple -o flags: pytest -o foo=1 -o bar=2. (3103 <https://github.com/pytest-dev/pytest/issues/3103>_)

Improved Documentation

  • Document hooks (defined with historic=True) which cannot be used with
    hookwrapper=True. (2423 <https://github.com/pytest-dev/pytest/issues/2423>_)
  • Clarify that warning capturing doesn't change the warning filter by default.
    (2457 <https://github.com/pytest-dev/pytest/issues/2457>_)
  • Clarify a possible confusion when using pytest_fixture_setup with fixture
    functions that return None. (2698 <https://github.com/pytest-dev/pytest/issues/2698>_)
  • Fix the wording of a sentence on doctest flags used in pytest. (3076 <https://github.com/pytest-dev/pytest/issues/3076>_)
  • Prefer https://*.readthedocs.io over http://*.rtfd.org for links in
    the documentation. (3092 <https://github.com/pytest-dev/pytest/issues/3092>_)
  • Improve readability (wording, grammar) of Getting Started guide (3131 <https://github.com/pytest-dev/pytest/issues/3131>_)
  • Added note that calling pytest.main multiple times from the same process is
    not recommended because of import caching. (3143 <https://github.com/pytest-dev/pytest/issues/3143>_)

Trivial/Internal Changes

  • Show a simple and easy error when keyword expressions trigger a syntax error
    (for example, "-k foo and import" will show an error that you can not use
    the import keyword in expressions). (2953 <https://github.com/pytest-dev/pytest/issues/2953>_)
  • Change parametrized automatic test id generation to use the __name__
    attribute of functions instead of the fallback argument name plus counter.
    (2976 <https://github.com/pytest-dev/pytest/issues/2976>_)
  • Replace py.std with stdlib imports. (3067 <https://github.com/pytest-dev/pytest/issues/3067>_)
  • Corrected 'you' to 'your' in logging docs. (3129 <https://github.com/pytest-dev/pytest/issues/3129>_)

3.3.2

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

Bug Fixes

  • pytester: ignore files used to obtain current user metadata in the fd leak
    detector. (2784 <https://github.com/pytest-dev/pytest/issues/2784>_)
  • Fix memory leak where objects returned by fixtures were never destructed
    by the garbage collector. (2981 <https://github.com/pytest-dev/pytest/issues/2981>_)
  • Fix conversion of pyargs to filename to not convert symlinks on Python 2. (2985 <https://github.com/pytest-dev/pytest/issues/2985>_)
  • PYTEST_DONT_REWRITE is now checked for plugins too rather than only for
    test modules. (2995 <https://github.com/pytest-dev/pytest/issues/2995>_)

Improved Documentation

  • Add clarifying note about behavior of multiple parametrized arguments (3001 <https://github.com/pytest-dev/pytest/issues/3001>_)

Trivial/Internal Changes

  • Code cleanup. (3015 <https://github.com/pytest-dev/pytest/issues/3015>,
    3021 <https://github.com/pytest-dev/pytest/issues/3021>
    )
  • Clean up code by replacing imports and references of _ast to ast. (3018 <https://github.com/pytest-dev/pytest/issues/3018>_)

3.3.1

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

Bug Fixes

  • Fix issue about -p no:<plugin> having no effect. (2920 <https://github.com/pytest-dev/pytest/issues/2920>_)
  • Fix regression with warnings that contained non-strings in their arguments in
    Python 2. (2956 <https://github.com/pytest-dev/pytest/issues/2956>_)
  • Always escape null bytes when setting PYTEST_CURRENT_TEST. (2957 <https://github.com/pytest-dev/pytest/issues/2957>_)
  • Fix ZeroDivisionError when using the testmon plugin when no tests
    were actually collected. (2971 <https://github.com/pytest-dev/pytest/issues/2971>_)
  • Bring back TerminalReporter.writer as an alias to
    TerminalReporter._tw. This alias was removed by accident in the 3.3.0
    release. (2984 <https://github.com/pytest-dev/pytest/issues/2984>_)
  • The pytest-capturelog plugin is now also blacklisted, avoiding errors when
    running pytest with it still installed. (3004 <https://github.com/pytest-dev/pytest/issues/3004>_)

Improved Documentation

  • Fix broken link to plugin pytest-localserver. (2963 <https://github.com/pytest-dev/pytest/issues/2963>_)

Trivial/Internal Changes

  • Update github "bugs" link in CONTRIBUTING.rst (2949 <https://github.com/pytest-dev/pytest/issues/2949>_)

3.3.0

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

Deprecations and Removals

  • Pytest no longer supports Python 2.6 and 3.3. Those Python versions
    are EOL for some time now and incur maintenance and compatibility costs on
    the pytest core team, and following up with the rest of the community we
    decided that they will no longer be supported starting on this version. Users
    which still require those versions should pin pytest to <3.3. (2812 <https://github.com/pytest-dev/pytest/issues/2812>_)
  • Remove internal _preloadplugins() function. This removal is part of the
    pytest_namespace() hook deprecation. (2636 <https://github.com/pytest-dev/pytest/issues/2636>_)
  • Internally change CallSpec2 to have a list of marks instead of a broken
    mapping of keywords. This removes the keywords attribute of the internal
    CallSpec2 class. (2672 <https://github.com/pytest-dev/pytest/issues/2672>_)
  • Remove ParameterSet.deprecated_arg_dict - its not a public api and the lack
    of the underscore was a naming error. (2675 <https://github.com/pytest-dev/pytest/issues/2675>_)
  • Remove the internal multi-typed attribute Node._evalskip and replace it
    with the boolean Node._skipped_by_mark. (2767 <https://github.com/pytest-dev/pytest/issues/2767>_)
  • The params list passed to pytest.fixture is now for
    all effects considered immutable and frozen at the moment of the pytest.fixture
    call. Previously the list could be changed before the first invocation of the fixture
    allowing for a form of dynamic parametrization (for example, updated from command-line options),
    but this was an unwanted implementation detail which complicated the internals and prevented
    some internal cleanup. See issue 2959 <https://github.com/pytest-dev/pytest/issues/2959>_
    for details and a recommended workaround.

Features

  • pytest_fixture_post_finalizer hook can now receive a request
    argument. (2124 <https://github.com/pytest-dev/pytest/issues/2124>_)
  • Replace the old introspection code in compat.py that determines the available
    arguments of fixtures with inspect.signature on Python 3 and
    funcsigs.signature on Python 2. This should respect __signature__
    declarations on functions. (2267 <https://github.com/pytest-dev/pytest/issues/2267>_)
  • Report tests with global pytestmark variable only once. (2549 <https://github.com/pytest-dev/pytest/issues/2549>_)
  • Now pytest displays the total progress percentage while running tests. The
    previous output style can be set by configuring the console_output_style
    setting to classic. (2657 <https://github.com/pytest-dev/pytest/issues/2657>_)
  • Match warns signature to raises by adding match keyword. (2708 <https://github.com/pytest-dev/pytest/issues/2708>_)
  • Pytest now captures and displays output from the standard logging module.
    The user can control the logging level to be captured by specifying options
    in pytest.ini, the command line and also during individual tests using
    markers. Also, a caplog fixture is available that enables users to test
    the captured log during specific tests (similar to capsys for example).
    For more information, please see the logging docs <https://docs.pytest.org/en/latest/logging.html>. This feature was
    introduced by merging the popular pytest-catchlog <https://pypi.org/project/pytest-catchlog/>
    plugin, thanks to Thomas Hisch <https://github.com/thisch>. Be advised that during the merging the
    backward compatibility interface with the defunct pytest-capturelog has
    been dropped. (2794 <https://github.com/pytest-dev/pytest/issues/2794>
    )
  • Add allow_module_level kwarg to pytest.skip(), enabling to skip the
    whole module. (2808 <https://github.com/pytest-dev/pytest/issues/2808>_)
  • Allow setting file_or_dir, -c, and -o in PYTEST_ADDOPTS. (2824 <https://github.com/pytest-dev/pytest/issues/2824>_)
  • Return stdout/stderr capture results as a namedtuple, so out and
    err can be accessed by attribute. (2879 <https://github.com/pytest-dev/pytest/issues/2879>_)
  • Add capfdbinary, a version of capfd which returns bytes from
    readouterr(). (2923 <https://github.com/pytest-dev/pytest/issues/2923>_)
  • Add capsysbinary a version of capsys which returns bytes from
    readouterr(). (2934 <https://github.com/pytest-dev/pytest/issues/2934>_)
  • Implement feature to skip setup.py files when run with
    --doctest-modules. (502 <https://github.com/pytest-dev/pytest/issues/502>_)

Bug Fixes

  • Resume output capturing after capsys/capfd.disabled() context manager.
    (1993 <https://github.com/pytest-dev/pytest/issues/1993>_)
  • pytest_fixture_setup and pytest_fixture_post_finalizer hooks are now
    called for all conftest.py files. (2124 <https://github.com/pytest-dev/pytest/issues/2124>_)
  • If an exception happens while loading a plugin, pytest no longer hides the
    original traceback. In Python 2 it will show the original traceback with a new
    message that explains in which plugin. In Python 3 it will show 2 canonized
    exceptions, the original exception while loading the plugin in addition to an
    exception that pytest throws about loading a plugin. (2491 <https://github.com/pytest-dev/pytest/issues/2491>_)
  • capsys and capfd can now be used by other fixtures. (2709 <https://github.com/pytest-dev/pytest/issues/2709>_)
  • Internal pytester plugin properly encodes bytes arguments to
    utf-8. (2738 <https://github.com/pytest-dev/pytest/issues/2738>_)
  • testdir now uses use the same method used by tmpdir to create its
    temporary directory. This changes the final structure of the testdir
    directory slightly, but should not affect usage in normal scenarios and
    avoids a number of potential problems. (2751 <https://github.com/pytest-dev/pytest/issues/2751>_)
  • Pytest no longer complains about warnings with unicode messages being
    non-ascii compatible even for ascii-compatible messages. As a result of this,
    warnings with unicode messages are converted first to an ascii representation
    for safety. (2809 <https://github.com/pytest-dev/pytest/issues/2809>_)
  • Change return value of pytest command when --maxfail is reached from
    2 (interrupted) to 1 (failed). (2845 <https://github.com/pytest-dev/pytest/issues/2845>_)
  • Fix issue in assertion rewriting which could lead it to rewrite modules which
    should not be rewritten. (2939 <https://github.com/pytest-dev/pytest/issues/2939>_)
  • Handle marks without description in pytest.ini. (2942 <https://github.com/pytest-dev/pytest/issues/2942>_)

Trivial/Internal Changes

  • pytest now depends on attrs <https://pypi.org/project/attrs/>_ for internal
    structures to ease code maintainability. (2641 <https://github.com/pytest-dev/pytest/issues/2641>_)
  • Refactored internal Python 2/3 compatibility code to use six. (2642 <https://github.com/pytest-dev/pytest/issues/2642>_)
  • Stop vendoring pluggy - we're missing out on its latest changes for not
    much benefit (2719 <https://github.com/pytest-dev/pytest/issues/2719>_)
  • Internal refactor: simplify ascii string escaping by using the
    backslashreplace error handler in newer Python 3 versions. (2734 <https://github.com/pytest-dev/pytest/issues/2734>_)
  • Remove unnecessary mark evaluator in unittest plugin (2767 <https://github.com/pytest-dev/pytest/issues/2767>_)
  • Calls to Metafunc.addcall now emit a deprecation warning. This function
    is scheduled to be removed in pytest-4.0. (2876 <https://github.com/pytest-dev/pytest/issues/2876>_)
  • Internal move of the parameterset extraction to a more maintainable place.
    (2877 <https://github.com/pytest-dev/pytest/issues/2877>_)
  • Internal refactoring to simplify scope node lookup. (2910 <https://github.com/pytest-dev/pytest/issues/2910>_)
  • Configure pytest to prevent pip from installing pytest in unsupported
    Python versions. (2922 <https://github.com/pytest-dev/pytest/issues/2922>_)

3.2.5

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

Bug Fixes

  • Remove py<1.5 restriction from pytest as this can cause version
    conflicts in some installations. (2926 <https://github.com/pytest-dev/pytest/issues/2926>_)

3.2.4

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

Bug Fixes

  • Fix the bug where running with --pyargs will result in items with
    empty parent.nodeid if run from a different root directory. (2775 <https://github.com/pytest-dev/pytest/issues/2775>_)
  • Fix issue with pytest.parametrize if argnames was specified as keyword arguments.
    (2819 <https://github.com/pytest-dev/pytest/issues/2819>_)
  • Strip whitespace from marker names when reading them from INI config. (2856 <https://github.com/pytest-dev/pytest/issues/2856>_)
  • Show full context of doctest source in the pytest output, if the line number of
    failed example in the docstring is < 9. (2882 &lt;https://github.com/pytest-dev/pytest/issues/2882&gt;_)
  • Match fixture paths against actual path segments in order to avoid matching folders which share a prefix.
    (2836 &lt;https://github.com/pytest-dev/pytest/issues/2836&gt;_)

Improved Documentation

  • Introduce a dedicated section about conftest.py. (1505 &lt;https://github.com/pytest-dev/pytest/issues/1505&gt;_)
  • Explicitly mention xpass in the documentation of xfail. (1997 &lt;https://github.com/pytest-dev/pytest/issues/1997&gt;_)
  • Append example for pytest.param in the example/parametrize document. (2658 &lt;https://github.com/pytest-dev/pytest/issues/2658&gt;_)
  • Clarify language of proposal for fixtures parameters (2893 &lt;https://github.com/pytest-dev/pytest/issues/2893&gt;_)
  • List python 3.6 in the documented supported versions in the getting started
    document. (2903 &lt;https://github.com/pytest-dev/pytest/issues/2903&gt;_)
  • Clarify the documentation of available fixture scopes. (538 &lt;https://github.com/pytest-dev/pytest/issues/538&gt;_)
  • Add documentation about the python -m pytest invocation adding the
    current directory to sys.path. (911 &lt;https://github.com/pytest-dev/pytest/issues/911&gt;_)

pytest-aiohttp 0.1.3 -> 0.3.0

0.2.0


  • Fix backward incompatibility changes introduced by pytest 3.3+

aiohttp-jinja2 0.14.0 -> 0.15.0

0.15.0


  • Upgrade middleware to new style from aiohttp 2.3+ 182
  • Autoescape all templates by default 179

aiohttp-session[secure] 1.0.1 -> 2.2.0

2.2.0


  • Fixed the formatting of an error handling bad middleware return types. 249

2.1.0


  • Add session.set_new_identity() method for changing identity for a
    new session 236

2.0.1


  • Replace assertions in aioredis installation checks by RuntimeError 235

2.0.0


  • Update to aioredis 1.0+. The aiohttp-session 2.0 is not compatible
    with aioredis 0.X 234

1.2.1


  • Pin aioredis<1.0 231

1.2.0


  • Add MemcachedStorage 224

1.1.0


  • Upgrade middleware to new style from aiohttp 2.3+

aiopg 0.13.1 -> 0.13.2

0.13.2

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

  • Fixed compatibility with SQLAlchemy 1.2.0 412
  • Added support for transaction isolation levels 219

SQLAlchemy 1.1.14 -> 1.2.2

1.2.2

:released: January 24, 2018

.. change::
:tags: bug, mssql
🎟️ 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
🎟️ 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
🎟️ 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&#39;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
🎟️ 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
🎟️ 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
🎟️ 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
🎟️ 4157

   Fixed regression where the removal of most setinputsizes
   rules from cx_Oracle dialect impacted the TIMESTAMP
   datatype&#39;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
🎟️ 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
🎟️ 4156

   Fixed bug in new &quot;selectin&quot; 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 &quot;GROUP BY &lt;expr&gt;&quot;, 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
🎟️ 4137

   Added a new data member to the identity key tuple
   used by the ORM&#39;s identity map, known as the
   &quot;identity_token&quot;.  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
🎟️ 4115

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

.. change::
:tags: enhancement, sql
🎟️ 959

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

.. change::
:tags: bug, sql
🎟️ 2694

  Reworked the new &quot;autoescape&quot; feature introduced in
  :ref:`change_2694` in 1.2.0b2 to be fully automatic; the escape
  character now defaults to a forwards slash ``&quot;/&quot;`` 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 &quot;escape&quot; parameter.
  .. seealso::
       :ref:`change_2694`

.. change::
:tags: bug, sql
🎟️ 4147

   Fixed bug where the :meth:`.Table.tometadata` method would not properly
   accommodate :class:`.Index` objects that didn&#39;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
🎟️ 4142

   Changed the &quot;visit name&quot; of :class:`.ColumnElement` from &quot;column&quot; to
   &quot;column_element&quot;, 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
🎟️ 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
🎟️ 4089

   The &quot;password&quot; 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
🎟️ 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 &quot;alias&quot;
   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
🎟️ 4140

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

.. change::
:tags: enhancement, ext
🎟️ 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
🎟️ 4064

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

.. change::
:tags: bug, mssql
🎟️ 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
🎟️ 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
🎟️ 4109

   Added a new flag ``use_batch_mode`` to the psycopg2 dialect.  This flag
   enables the use of psycopg2&#39;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
🎟️ 4061

   SQL Server supports what SQLAlchemy calls &quot;native boolean&quot;
   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 &quot;native boolean&quot; 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 &quot;true&quot; / &quot;false&quot; constants so &quot;1&quot; and
   &quot;0&quot; are still rendered here.

.. change::
:tags: bug, oracle
🎟️ 4064

   Partial support for persisting and retrieving the Oracle value
   &quot;infinity&quot; is implemented with cx_Oracle, using Python float values
   only, e.g. ``float(&quot;inf&quot;)``.  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&#39;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
🎟️ 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
🎟️ 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 &quot;insert&quot; 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
🎟️ 4050

   Fixed regression introduced in 1.2.0b1 due to :ticket:`3934` where the
   :class:`.Session` would fail to &quot;deactivate&quot; 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
🎟️ 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 &quot;quoted_name&quot; object that&#39;s a string subclass, which pg8000
   doesn&#39;t recognize.   The quoted_name type is added to pg8000&#39;s
   py_types collection on connect.

.. change::
:tags: bug, postgresql
🎟️ 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
🎟️ 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 &quot;pyformat&quot; parameter
   style which itself considers the percent sign to be significant.

.. change::
:tags: bug, orm, declarative
🎟️ 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 &quot;cascading&quot; is
   honored all the way down regardless of overriding attributes.

.. change::
:tags: bug, orm, declarative
🎟️ 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
🎟️ 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
🎟️ 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 &quot;TIMESTAMP&quot; type in SQL Server is deprecated in
   favor of ROWVERSION.

.. change::
:tags: bug, orm
🎟️ 4084

   Fixed issue where the :func:`.make_transient_to_detached` function
   would expire all attributes on the target object, including &quot;deferred&quot;
   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
🎟️ 4026

   Fixed bug in :ref:`change_3948` which prevented &quot;selectin&quot; and
   &quot;inline&quot; 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
🎟️ 4042

   Fixed bug where an index reflected under Oracle with an expression like
   &quot;column DESC&quot; 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
🎟️ 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 &quot;creating many
  engines&quot; 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
🎟️ 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
🎟️ 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
🎟️ 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
🎟️ 4058

   Added support for &quot;AUTOCOMMIT&quot; 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
🎟️ 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
🎟️ 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
🎟️ 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 &quot;native boolean&quot;, but would not occur for native boolean backends,
   meaning the string ``&quot;0&quot;`` 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 ``&quot;0&quot;``; 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
🎟️ 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
🎟️ 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
🎟️ 4062

   Added a new class of &quot;rowcount support&quot; for dialects that is specific to
   when &quot;RETURNING&quot;, which on SQL Server looks like &quot;OUTPUT inserted&quot;, is in
   use, as the PyODBC backend isn&#39;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
🎟️ 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 &quot;sane_rowcount&quot; 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, engine
🎟️ 4028

   Made some adjustments to :class:`.Pool` and :class:`.Connection` such
   that recovery logic is not run underneath exception catches for
   ``pool.Empty``, ``AttributeError``, since when the recovery operation
   itself fails, Python 3 creates a misleading stack trace referring to the
   ``Empty`` / ``AttributeError`` as the cause, when in fact these exception
   catches are part of control flow.

.. change::
:tags: bug, oracle
🎟️ 4076

   Fixed bug where Oracle 8 &quot;non ansi&quot; join mode would not add the
   ``(+)`` operator to expressions that used an operator other than the
   ``=`` operator.  The ``(+)`` needs to be on all columns that are part
   of the right-hand side.

.. change::
:tags: bug, mssql
🎟️ 4059

   Added a rule to SQL Server index reflection to ignore the so-called
   &quot;heap&quot; index that is implicitly present on a table that does not
   specify a clustered index.

.. changelog::

1.2.0b2

:released: December 27, 2017
:released: July 24, 2017

.. change:: 4033
:tags: bug, orm
🎟️ 4033

   Fixed regression from 1.1.11 where adding additional non-entity
   columns to a query that includes an entity with subqueryload
   relationships would fail, due to an inspection added in 1.1.11 as a
   result of :ticket:`4011`.

.. changelog::

1.2.0b1

:released: December 27, 2017
:released: July 10, 2017

.. change:: scoped_autocommit
:tags: feature, orm

   Added ``.autocommit`` attribute to :class:`.scoped_session`, proxying
   the ``.autocommit`` attribute of the underling :class:`.Session`
   currently assigned to the thread.  Pull request courtesy
   Ben Fagin.

.. change:: 4009
:tags: feature, mysql
🎟️ 4009

   Added support for MySQL&#39;s ON DUPLICATE KEY UPDATE
   MySQL-specific :class:`.mysql.dml.Insert` object.
   Pull request courtesy Michael Doronin.
   .. seealso::
       :ref:`change_4009`

.. change:: 4018
:tags: bug, sql
🎟️ 4018

   The rules for type coercion between :class:`.Numeric`, :class:`.Integer`,
   and date-related types now include additional logic that will attempt
   to preserve the settings of the incoming type on the &quot;resolved&quot; type.
   Currently the target for this is the ``asdecimal`` flag, so that
   a math operation between :class:`.Numeric` or :class:`.Float` and
   :class:`.Integer` will preserve the &quot;asdecimal&quot; flag as well as
   if the type should be the :class:`.Float` subclass.
   .. seealso::
       :ref:`change_floats_12`

.. change:: 4020
:tags: bug, sql, mysql
🎟️ 4020

   The result processor for the :class:`.Float` type now unconditionally
   runs values through the ``float()`` processor if the dialect
   specifies that it also supports &quot;native decimal&quot; mode.  While most
   backends will deliver Python ``float`` objects for a floating point
   datatype, the MySQL backends in some cases lack the typing information
   in order to provide this and return ``Decimal`` unless the float
   conversion is done.
   .. seealso::
       :ref:`change_floats_12`

.. change:: 4017
:tags: bug, sql
🎟️ 4017

   Added some extra strictness to the handling of Python &quot;float&quot; values
   passed to SQL statements.  A &quot;float&quot; value will be associated with the
   :class:`.Float` datatype and not the Decimal-coercing :class:`.Numeric`
   datatype as was the case before, eliminating a confusing warning
   emitted on SQLite as well as unecessary coercion to Decimal.
   .. seealso::
       :ref:`change_floats_12`

.. change:: 3058
:tags: feature, orm
🎟️ 3058

   Added a new feature :func:`.orm.with_expression` that allows an ad-hoc
   SQL expression to be added to a specific entity in a query at result
   time.  This is an alternative to the SQL expression being delivered as
   a separate element in the result tuple.
   .. seealso::
       :ref:`change_3058`

.. change:: 3496
:tags: bug, orm
🎟️ 3496

   An UPDATE emitted as a result of the
   :paramref:`.relationship.post_update` feature will now integrate with
   the versioning feature to both bump the version id of the row as well
   as assert that the existing version number was matched.
   .. seealso::
       :ref:`change_3496`

.. change:: 3769
:tags: bug, ext
🎟️ 3769

   The :meth:`.AssociationProxy.any`, :meth:`.AssociationProxy.has`
   and :meth:`.AssociationProxy.contains` comparison methods now support
   linkage to an attribute that is itself also an
   :class:`.AssociationProxy`, recursively.
   .. seealso::
       :ref:`change_3769`

.. change:: 3853
:tags: bug, ext
🎟️ 3853

   Implemented in-place mutation operators ``__ior__``, ``__iand__``,
   ``__ixor__`` and ``__isub__`` for :class:`.mutable.MutableSet`
   and ``__iadd__`` for :class:`.mutable.MutableList` so that change
   events are fired off when these mutator methods are used to alter the
   collection.
   .. seealso::
       :ref:`change_3853`

.. change:: 3847
:tags: bug, declarative
🎟️ 3847

   A warning is emitted if the :attr:`.declared_attr.cascading` modifier
   is used with a declarative attribute that is itself declared on
   a class that is to be mapped, as opposed to a declarative mixin
   class or ``__abstract__`` class.  The :attr:`.declared_attr.cascading`
   modifier currently only applies to mixin/abstract classes.

.. change:: 4003
:tags: feature, oracle
🎟️ 4003

   The Oracle dialect now inspects unique and check constraints when using
   :meth:`.Inspector.get_unique_constraints`,
   :meth:`.Inspector.get_check_constraints`.
   As Oracle does not have unique constraints that are separate from a unique
   :class:`.Index`, a :class:`.Table` that&#39;s reflected will still continue
   to not have :class:`.UniqueConstraint` objects associated with it.
   Pull requests courtesy Eloy Felix.
   .. seealso::
       :ref:`change_4003`

.. change:: 3948
:tags: feature, orm
🎟️ 3948

   Added a new style of mapper-level inheritance loading
   &quot;polymorphic selectin&quot;.  This style of loading
   emits queries for each subclass in an inheritance
   hierarchy subsequent to the load of the base
   object type, using IN to specify the desired
   primary key values.
   .. seealso::
       :ref:`change_3948`

.. change:: 3472
:tags: bug, orm
🎟️ 3471, 3472

   Repaired several use cases involving the
   :paramref:`.relationship.post_update` feature when used in conjunction
   with a column that has an &quot;onupdate&quot; value.   When the UPDATE emits,
   the corresponding object attribute is now expired or refreshed so that
   the newly generated &quot;onupdate&quot; value can populate on the object;
   previously the stale value would remain.  Additionally, if the target
   attribute is set in Python for the INSERT of the object, the value is
   now re-sent during the UPDATE so that the &quot;onupdate&quot; does not overwrite
   it (note this works just as well for server-generated onupdates).
   Finally, the :meth:`.SessionEvents.refresh_flush` event is now emitted
   for these attributes when refreshed within the flush.
   .. seealso::
       :ref:`change_3471`

.. change:: 3996
:tags: bug, orm
🎟️ 3996

   Fixed bug where programmatic version_id counter in conjunction with
   joined table inheritance would fail if the version_id counter
   were not actually incremented and no other values on the base table
   were modified, as the UPDATE would have an empty SET clause.  Since
   programmatic version_id where version counter is not incremented
   is a documented use case, this specific condition is now detected
   and the UPDATE now sets the version_id value to itself, so that
   concurrency checks still take place.

.. change:: 3848
:tags: bug, orm, declarative
🎟️ 3848

   Fixed bug where using :class:`.declared_attr` on an
   :class:`.AbstractConcreteBase` where a particular return value were some
   non-mapped symbol, including ``None``, would cause the attribute
   to hard-evaluate just once and store the value to the object
   dictionary, not allowing it to invoke for subclasses.   This behavior
   is normal when :class:`.declared_attr` is on a mapped class, and
   does not occur on a mixin or abstract class.  Since
   :class:`.AbstractConcreteBase` is both &quot;abstract&quot; and actually
   &quot;mapped&quot;, a special exception case is made here so that the
   &quot;abstract&quot; behavior takes precedence for :class:`.declared_attr`.

.. change:: 3673
:tags: bug, orm
🎟️ 3673

   The versioning feature does not support NULL for the version counter.
   An exception is now raised if the version id is programmatic and
   was set to NULL for an UPDATE.  Pull request courtesy Diana Clarke.

.. change:: 3999
:tags: bug, sql
🎟️ 3999

   The operator precedence for all comparison operators such as LIKE, IS,
   IN, MATCH, equals, greater than, less than, etc. has all been merged
   into one level, so that expressions which make use of these against
   each other will produce parentheses between them.   This suits the
   stated operator precedence of databases like Oracle, MySQL and others
   which place all of these operators as equal precedence, as well as
   Postgresql as of 9.5 which has also flattened its operator precendence.
   .. seealso::
       :ref:`change_3999`

.. change:: 3796
:tags: bug, orm
🎟️ 3796

   Removed a very old keyword argument from :class:`.scoped_session`
   called ``scope``.  This keyword was never documented and was an
   early attempt at allowing for variable scopes.
   .. seealso::
       :ref:`change_3796`

.. change:: 3871
:tags: bug, mysql
🎟️ 3871

   Added support for views that are unreflectable due to stale
   table definitions, when calling :meth:`.MetaData.reflect`; a warning
   is emitted for the table that cannot respond to ``DESCRIBE``,
   but the operation succeeds.

.. change:: baked_opts
:tags: feature, ext

   Added new flag :paramref:`.Session.enable_baked_queries` to the
   :class:`.Session` to allow baked queries to be disabled
   session-wide, reducing memory use.   Also added new :class:`.Bakery`
   wrapper so that the bakery returned by :paramref:`.BakedQuery.bakery`
   can be inspected.

.. change:: 3988
:tags: bug, orm
🎟️ 3988

   Fixed bug where combining a &quot;with_polymorphic&quot; load in conjunction
   with subclass-linked relationships that specify joinedload with
   innerjoin=True, would fail to demote those &quot;innerjoins&quot; to
   &quot;outerjoins&quot; to suit the other polymorphic classes that don&#39;t
   support that relationship.   This applies to both a single and a
   joined inheritance polymorphic load.

.. change:: 3991
:tags: bug, orm
🎟️ 3991

   Added new argument :paramref:`.with_for_update` to the
   :meth:`.Session.refresh` method.  When the :meth:`.Query.with_lockmode`
   method were deprecated in favor of :meth:`.Query.with_for_update`,
   the :meth:`.Session.refresh` method was never updated to reflect
   the new option.
   .. seealso::
       :ref:`change_3991`

.. change:: 3984
:tags: bug, orm
🎟️ 3984

   Fixed bug where a :func:`.column_property` that is also marked as
   &quot;deferred&quot; would be marked as &quot;expired&quot; during a flush, causing it
   to be loaded along with the unexpiry of regular attributes even
   though this attribute was never accessed.

.. change:: 3873
:tags: bug, sql
🎟️ 3873

   Repaired issue where the type of an expression that used
   :meth:`.ColumnOperators.is_` or similar would not be a &quot;boolean&quot; type,
   instead the type would be &quot;nulltype&quot;, as well as when using custom
   comparison operators against an untyped expression.   This typing can
   impact how the expression behaves in larger contexts as well as
   in result-row-handlin

@samuelcolvin samuelcolvin force-pushed the pyup-scheduled-update-02-01-2018 branch from def22b3 to c7d9d11 Compare February 10, 2018 16:40
@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 10, 2018

Codecov Report

Merging #171 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #171   +/-   ##
=======================================
  Coverage   94.54%   94.54%           
=======================================
  Files          12       12           
  Lines         715      715           
  Branches       90       90           
=======================================
  Hits          676      676           
  Misses         24       24           
  Partials       15       15

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4c0a3cb...c7d9d11. Read the comment docs.

@samuelcolvin samuelcolvin merged commit d70b58f into master Feb 10, 2018
@samuelcolvin samuelcolvin deleted the pyup-scheduled-update-02-01-2018 branch February 10, 2018 16:54
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.

2 participants