{"action":"created","issue":{"url":"https://api.github.com/repos/Connexions/cnx-deploy/issues/342","repository_url":"https://api.github.com/repos/Connexions/cnx-deploy","labels_url":"https://api.github.com/repos/Connexions/cnx-deploy/issues/342/labels{/name}","comments_url":"https://api.github.com/repos/Connexions/cnx-deploy/issues/342/comments","events_url":"https://api.github.com/repos/Connexions/cnx-deploy/issues/342/events","html_url":"https://github.com/Connexions/cnx-deploy/pull/342","id":241707087,"number":342,"title":"Scheduled weekly dependency update for week 28","user":{"login":"pyup-bot","id":16239342,"avatar_url":"https://avatars4.githubusercontent.com/u/16239342?v=4","gravatar_id":"","url":"https://api.github.com/users/pyup-bot","html_url":"https://github.com/pyup-bot","followers_url":"https://api.github.com/users/pyup-bot/followers","following_url":"https://api.github.com/users/pyup-bot/following{/other_user}","gists_url":"https://api.github.com/users/pyup-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/pyup-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyup-bot/subscriptions","organizations_url":"https://api.github.com/users/pyup-bot/orgs","repos_url":"https://api.github.com/users/pyup-bot/repos","events_url":"https://api.github.com/users/pyup-bot/events{/privacy}","received_events_url":"https://api.github.com/users/pyup-bot/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-07-10T13:11:39Z","updated_at":"2017-07-17T13:11:44Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Connexions/cnx-deploy/pulls/342","html_url":"https://github.com/Connexions/cnx-deploy/pull/342","diff_url":"https://github.com/Connexions/cnx-deploy/pull/342.diff","patch_url":"https://github.com/Connexions/cnx-deploy/pull/342.patch"},"body":"\n\n\n## Updates\nHere'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.\n<table align=\"center\">\n\n<tr>\n<td><b>argparse</b></td>\n<td align=\"center\">1.2.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.4.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/argparse\">PyPI</a> | <a href=\"https://pyup.io/changelogs/argparse/\">Changelog</a> | <a href=\"https://github.com/ThomasWaldmann/argparse/\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>Beaker</b></td>\n<td align=\"center\">1.8.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.9.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/beaker\">PyPI</a> | <a href=\"https://pyup.io/changelogs/beaker/\">Changelog</a> | <a href=\"https://beaker.readthedocs.io/\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>cnx-db</b></td>\n<td align=\"center\">0.3.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.7.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/cnx-db\">PyPI</a> | <a href=\"https://pyup.io/changelogs/cnx-db/\">Changelog</a> | <a href=\"https://github.com/connexions/cnx-db\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>db-migrator</b></td>\n<td align=\"center\">0.1.4</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.2.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/db-migrator\">PyPI</a> | <a href=\"https://pyup.io/changelogs/db-migrator/\">Changelog</a> | <a href=\"https://github.com/karenc/db-migrator\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>Jinja2</b></td>\n<td align=\"center\">2.7.3</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.9.6</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/jinja2\">PyPI</a> | <a href=\"https://pyup.io/changelogs/jinja2/\">Changelog</a> | <a href=\"http://jinja.pocoo.org/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>lxml</b></td>\n<td align=\"center\">3.4.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">3.8.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/lxml\">PyPI</a> | <a href=\"https://pyup.io/changelogs/lxml/\">Changelog</a> | <a href=\"http://lxml.de/\">Homepage</a> | <a href=\"https://bugs.launchpad.net/lxml\">Bugtracker</a> \n\n</td>\n\n<tr>\n<td><b>MarkupSafe</b></td>\n<td align=\"center\">0.23</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/markupsafe\">PyPI</a> | <a href=\"https://pyup.io/changelogs/markupsafe/\">Changelog</a> | <a href=\"http://github.com/pallets/markupsafe\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>parsimonious</b></td>\n<td align=\"center\">0.6.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.7.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/parsimonious\">PyPI</a> | <a href=\"https://github.com/erikrose/parsimonious\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>Paste</b></td>\n<td align=\"center\">1.7.5.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.0.3</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/paste\">PyPI</a> | <a href=\"https://pyup.io/changelogs/paste/\">Changelog</a> | <a href=\"http://pythonpaste.org\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>PasteScript</b></td>\n<td align=\"center\">1.7.5</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.0.2</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/pastescript\">PyPI</a> | <a href=\"https://pyup.io/changelogs/pastescript/\">Changelog</a> | <a href=\"http://pythonpaste.org/script/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>psycopg2</b></td>\n<td align=\"center\">2.5.4</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.7.1</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/psycopg2\">PyPI</a> | <a href=\"https://pyup.io/changelogs/psycopg2/\">Changelog</a> | <a href=\"http://initd.org/psycopg/\">Homepage</a> | <a href=\"http://pythonhosted.org/psycopg2/\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>pyramid</b></td>\n<td align=\"center\">1.6a2</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.9</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/pyramid\">PyPI</a> | <a href=\"https://pyup.io/changelogs/pyramid/\">Changelog</a> | <a href=\"https://trypyramid.com\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>pyramid-jinja2</b></td>\n<td align=\"center\">2.6.2</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.7</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/pyramid-jinja2\">PyPI</a> | <a href=\"https://pyup.io/changelogs/pyramid-jinja2/\">Changelog</a> | <a href=\"https://github.com/Pylons/pyramid_jinja2\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>pyramid-multiauth</b></td>\n<td align=\"center\">0.8.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.9.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/pyramid-multiauth\">PyPI</a> | <a href=\"https://pyup.io/changelogs/pyramid-multiauth/\">Changelog</a> | <a href=\"https://github.com/mozilla-services/pyramid_multiauth\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>python-memcached</b></td>\n<td align=\"center\">1.53</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.58</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/python-memcached\">PyPI</a> | <a href=\"http://www.tummy.com/Community/software/python-memcached/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>requests</b></td>\n<td align=\"center\">2.7.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">2.18.1</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/requests\">PyPI</a> | <a href=\"https://pyup.io/changelogs/requests/\">Changelog</a> | <a href=\"http://python-requests.org\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>tzlocal</b></td>\n<td align=\"center\">1.1.3</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.4</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/tzlocal\">PyPI</a> | <a href=\"https://pyup.io/changelogs/tzlocal/\">Changelog</a> | <a href=\"https://github.com/regebro/tzlocal\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>venusian</b></td>\n<td align=\"center\">1.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.1.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/venusian\">PyPI</a> | <a href=\"https://pyup.io/changelogs/venusian/\">Changelog</a> | <a href=\"http://pylonsproject.org\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>webencodings</b></td>\n<td align=\"center\">0.5</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.5.1</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/webencodings\">PyPI</a> | <a href=\"https://github.com/SimonSapin/python-webencodings\">Repo</a> | <a href=\"http://pythonhosted.org/webencodings/\">Docs</a> \n\n</td>\n\n<tr>\n<td><b>WebOb</b></td>\n<td align=\"center\">1.5.0a1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.7.3</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/webob\">PyPI</a> | <a href=\"https://pyup.io/changelogs/webob/\">Changelog</a> | <a href=\"http://webob.org/\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>zope.deprecation</b></td>\n<td align=\"center\">4.1.2</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">4.2.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/zope.deprecation\">PyPI</a> | <a href=\"https://pyup.io/changelogs/zope.deprecation/\">Changelog</a> | <a href=\"http://pypi.python.org/pypi/zope.deprecation\">Homepage</a> \n\n</td>\n\n<tr>\n<td><b>zope.interface</b></td>\n<td align=\"center\">4.1.2</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">4.4.2</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/zope.interface\">PyPI</a> | <a href=\"https://pyup.io/changelogs/zope.interface/\">Changelog</a> | <a href=\"https://github.com/zopefoundation/zope.interface\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>cnx-publishing</b></td>\n<td align=\"center\">0.6.0</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">0.8.0</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/cnx-publishing\">PyPI</a> | <a href=\"https://pyup.io/changelogs/cnx-publishing/\">Changelog</a> | <a href=\"https://github.com/connexions/cnx-publishing\">Repo</a> \n\n</td>\n\n<tr>\n<td><b>cssselect</b></td>\n<td align=\"center\">0.9.1</td>\n<td align=\"center\">&raquo;</td>\n<td align=\"center\">1.0.1</td>\n<td>\n     <a href=\"https://pypi.python.org/pypi/cssselect\">PyPI</a> | <a href=\"https://pyup.io/changelogs/cssselect/\">Changelog</a> | <a href=\"https://github.com/scrapy/cssselect\">Repo</a> | <a href=\"http://pythonhosted.org/cssselect/\">Docs</a> \n\n</td>\n\n</tr>\n</table>\n\n\n\n## Changelogs\n\n\n### argparse 1.2.1 -> 1.4.0\n\n>### 1.4.0\n\n>--------------\n\n>- make argparse behave for default args aka\n>  issue 12776, 11839: call argparse type function only once.\n>- move to github:ThomasWaldmann/argparse\n>- add TW as maintainer / give TW&#39;s email\n>- add some usecase to README, clarify issue tracking\n>- add a note to tox.ini about testing on dead snakes\n\n\n\n>### 1.3.0\n\n>--------------\n\n>- added aliases support (thanks to Roland Kammerer!) + tests for it\n>- use tox for testing python &gt;= 2.6\n>- tests successfully on 3.4 also (without random hash seed)\n>- added argparse.__external_lib__ = True so one can test one is really using /\n>  testing the external library (and not the builtin one in stdlib of recent\n>  Pythons)\n\n\n\n>### 1.2.2\n\n>--------------\n\n>- added universal wheel support, built, signed and uploaded with:\n>  python setup.py sdist bdist_wheel upload --identity=&quot;Thomas Waldmann&quot; --sign\n>- host the files on pypi\n\n\n\n\n\n\n\n### Beaker 1.8.0 -> 1.9.0\n\n>### 1.9.0\n\n>==========================\n\n>* Beaker now provides builtin ``ext:mongodb`` and ``ext:redis`` namespace managers.\n>  Both come with a Synchronizer implemented on the storage backend instead of relying on file one.\n>* Fixed an issue where cookie options like ``Secure``, ``Domain`` and so on where lost.\n>* Improved support for cache entries expiration. NamespaceManagers that support it will expire their key automatically.\n>* Pycryptodome can be used instead of pycrypto.\n>* An issue with ``Cookie`` module import on case insensitive file systems should have been resolved.\n>* Cryptography module is now as a crypto function provider instead of pycrypto\n\n\n\n>### 1.8.1\n\n>==========================\n\n>* Sessions have a new option save_accessed_time which defaults to true for\n>  backwards compatibility. Set to false to tell beaker not to update\n>  _accessed_time if the session hasn&#39;t been changed, for non-cookie sessions\n>  stores. This lets you avoid needless datastore writes. _accessed_time will\n>  always be updated when the session is intentionally saved.\n>* data_serializer parameter in Session accepts a custom object with `dumps` and `loads` methods.\n>* Fixed a TypeError in exception reporting when failing to load a NamespaceManager\n>* Allow to change Cookie Expiration from a value back to None, previously it had no effect.\n>* Allow SessionMiddleware to setup a custom Session class through the `session_class` argument.\n>* Added `invalidate_corrupt` option to CookieSessions too for valid cookies containing invalid data.\n\n\n\n\n\n\n\n### cnx-db 0.3.0 -> 0.7.0\n\n>### 0.7.0\n\n>-----\n\n>- Add association table for celery results to documents.\n\n\n\n>### 0.6.0\n\n>-----\n\n>- Share this project&#39;s pytest fixtures for use in dependent projects.\n>- Create the cnxdb.contrib package.\n>- Fix to exclude subcollections from the search query.\n\n\n\n>### 0.5.4\n\n>-----\n\n>- Fix to only create the moduletags index when it does not exist.\n\n\n\n>### 0.5.3\n\n>-----\n\n>- Add an index for moduletags to improve search.\n\n\n\n>### 0.5.2\n\n>-----\n\n>- Fix to speedup in-book search for baked content.\n\n\n\n>### 0.5.1\n\n>-----\n\n>- Include a migration for the post_publication channel payload change.\n\n\n\n>### 0.5.0\n\n>-----\n\n>- Add a payload to the post_publication channel notification.\n>- Fix tests by explicitly including cnx-archive.\n>- Fix tests to only run trigger tests within Python 2.7.\n\n\n\n>### 0.4.0\n\n>-----\n\n>- Add a Make recipe for building and serving this project/component.\n>- Correct styling, documentation and test running code.\n>- Add the Make interface for common developer tasks.\n>- Install versioneer for version management via git.\n>- Add SQL function and trigger to rebake on baking recipe insert or update.\n>- Update SQL manifest to add subcollection uuid SQL functions.\n\n\n\n\n\n\n\n### db-migrator 0.1.4 -> 0.2.0\n\n>### 0.2.0\n\n>------------------\n\n>- Add psycopg2 wait callback so ctrl-c stops a migration\n>- Implement mark a migration as deferred: ``mark -d``\n>- Add --wide option for ``list`` to display the full migration name\n>- Update command usage in README\n>- Add help message to dbmigrator commands\n>- Warn user with ``dbmigrator init --help`` if schema migrations doesn&#39;t exist\n>- Add CLI test for generating migrations\n\n\n\n\n\n\n\n### Jinja2 2.7.3 -> 2.9.6\n\n>### 2.9.6\n\n>-------------\n>(bugfix release, released on April 3rd 2017)\n\n>- Fixed custom context behavior in fast resolve mode (675)\n\n\n\n>### 2.9.5\n\n>-------------\n>(bugfix release, released on January 28th 2017)\n\n>- Restored the original repr of the internal `_GroupTuple` because this\n>  caused issues with ansible and it was an unintended change.  (654)\n>- Added back support for custom contexts that override the old `resolve`\n>  method since it was hard for people to spot that this could cause a\n>  regression.\n>- Correctly use the buffer for the else block of for loops.  This caused\n>  invalid syntax errors to be caused on 2.x and completely wrong behavior\n>  on Python 3 (669)\n>- Resolve an issue where the `{% extends %}` tag could not be used with\n>  async environments. (668)\n>- Reduce memory footprint slightly by reducing our unicode database dump\n>  we use for identifier matching on Python 3 (666)\n>- Fixed autoescaping not working for macros in async compilation mode. (671)\n\n\n\n>### 2.9.4\n\n>-------------\n>(bugfix release, released on January 10th 2017)\n\n>- Solved some warnings for string literals.  (646)\n>- Increment the bytecode cache version which was not done due to an\n>  oversight before.\n>- Corrected bad code generation and scoping for filtered loops.  (649)\n>- Resolved an issue where top-level output silencing after known extend\n>  blocks could generate invalid code when blocks where contained in if\n>  statements.  (651)\n>- Made the `truncate.leeway` default configurable to improve compatibility\n>  with older templates.\n\n\n\n>### 2.9.3\n\n>-------------\n>(bugfix release, released on January 8th 2017)\n\n>- Restored the use of blocks in macros to the extend that was possible\n>  before.  On Python 3 it would render a generator repr instead of\n>  the block contents. (645)\n>- Set a consistent behavior for assigning of variables in inner scopes\n>  when the variable is also read from an outer scope.  This now sets the\n>  intended behavior in all situations however it does not restore the\n>  old behavior where limited assignments to outer scopes was possible.\n>  For more information and a discussion see 641\n>- Resolved an issue where `block scoped` would not take advantage of the\n>  new scoping rules.  In some more exotic cases a variable overriden in a\n>  local scope would not make it into a block.\n>- Change the code generation of the `with` statement to be in line with the\n>  new scoping rules.  This resolves some unlikely bugs in edge cases.  This\n>  also introduces a new internal `With` node that can be used by extensions.\n\n\n\n>### 2.9.2\n\n>-------------\n>(bugfix release, released on January 8th 2017)\n\n>- Fixed a regression that caused for loops to not be able to use the same\n>  variable for the target as well as source iterator.  (640)\n>- Add support for a previously unknown behavior of macros.  It used to be\n>  possible in some circumstances to explicitly provide a caller argument\n>  to macros.  While badly buggy and unintended it turns out that this is a\n>  common case that gets copy pasted around.  To not completely break backwards\n>  compatibility with the most common cases it&#39;s now possible to provide an\n>  explicit keyword argument for caller if it&#39;s given an explicit default.\n>  (642)\n\n\n\n>### 2.9.1\n\n>-------------\n>(bugfix release, released on January 7th 2017)\n\n>- Resolved a regression with call block scoping for macros.  Nested caller\n>  blocks that used the same identifiers as outer macros could refer to the\n>  wrong variable incorrectly.\n\n\n\n>### 2.9\n\n>-----------\n>(codename Derivation, released on January 7th 2017)\n\n>- Change cache key definition in environment. This fixes a performance\n>  regression introduced in 2.8.\n>- Added support for `generator_stop` on supported Python versions\n>  (Python 3.5 and later)\n>- Corrected a long standing issue with operator precedence of math operations\n>  not being what was expected.\n>- Added support for Python 3.6 async iterators through a new async mode.\n>- Added policies for filter defaults and similar things.\n>- urlize now sets &quot;rel noopener&quot; by default.\n>- Support attribute fallback for old-style classes in 2.x.\n>- Support toplevel set statements in extend situations.\n>- Restored behavior of Cycler for Python 3 users.\n>- Subtraction now follows the same behavior as other operators on undefined\n>  values.\n>- `map` and friends will now give better error messages if you forgot to\n>  quote the parameter.\n>- Depend on MarkupSafe 0.23 or higher.\n>- Improved the `truncate` filter to support better truncation in case\n>  the string is barely truncated at all.\n>- Change the logic for macro autoescaping to be based on the runtime\n>  autoescaping information at call time instead of macro define time.\n>- Ported a modified version of the `tojson` filter from Flask to Jinja2\n>  and hooked it up with the new policy framework.\n>- Block sets are now marked `safe` by default.\n>- On Python 2 the asciification of ASCII strings can now be disabled with\n>  the `compiler.ascii_str` policy.\n>- Tests now no longer accept an arbitrary expression as first argument but\n>  a restricted one.  This means that you can now properly use multiple\n>  tests in one expression without extra parentheses.  In particular you can\n>  now write ``foo is divisibleby 2 or foo is divisibleby 3``\n>  as you would expect.\n>- Greatly changed the scoping system to be more consistent with what template\n>  designers and developers expect.  There is now no more magic difference\n>  between the different include and import constructs.  Context is now always\n>  propagated the same way.  The only remaining differences is the defaults\n>  for `with context` and `without context`.\n>- The `with` and `autoescape` tags are now built-in.\n>- Added the new `select_autoescape` function which helps configuring better\n>  autoescaping easier.\n\n\n\n>### 2.8.2\n\n>-------------\n\n>(bugfix release, unreleased)\n\n>- Fixed a runtime error in the sandbox when attributes of async generators\n>  were accessed.\n\n\n\n>### 2.8.1\n\n>-------------\n\n>(bugfix release, released on December 29th 2016)\n\n>- Fixed the `for_qs` flag for `urlencode`.\n>- Fixed regression when applying `int` to non-string values.\n>- SECURITY: if the sandbox mode is used format expressions are now sandboxed\n>  with the same rules as in Jinja.  This solves various information leakage\n>  problems that can occur with format strings.\n\n\n\n>### 2.8\n\n>-----------\n>(codename Replacement, released on July 26th 2015)\n\n>- Added `target` parameter to urlize function.\n>- Added support for `followsymlinks` to the file system loader.\n>- The truncate filter now counts the length.\n>- Added equalto filter that helps with select filters.\n>- Changed cache keys to use absolute file names if available\n>  instead of load names.\n>- Fixed loop length calculation for some iterators.\n>- Changed how Jinja2 enforces strings to be native strings in\n>  Python 2 to work when people break their default encoding.\n>- Added :func:`make_logging_undefined` which returns an undefined\n>  object that logs failures into a logger.\n>- If unmarshalling of cached data fails the template will be\n>  reloaded now.\n>- Implemented a block ``set`` tag.\n>- Default cache size was increased to 400 from a low 50.\n>- Fixed ``is number`` test to accept long integers in all Python versions.\n>- Changed ``is number`` to accept Decimal as a number.\n>- Added a check for default arguments followed by non-default arguments. This\n>  change makes ``{% macro m(x, y=1, z) %}...{% endmacro %}`` a syntax error. The\n>  previous behavior for this code was broken anyway (resulting in the default\n>  value being applied to `y`).\n>- Add ability to use custom subclasses of ``jinja2.compiler.CodeGenerator`` and\n>  ``jinja2.runtime.Context`` by adding two new attributes to the environment\n>  (`code_generator_class` and `context_class`) (pull request ``404``).\n>- added support for context/environment/evalctx decorator functions on\n>  the finalize callback of the environment.\n>- escape query strings for urlencode properly.  Previously slashes were not\n>  escaped in that place.\n>- Add &#39;base&#39; parameter to &#39;int&#39; filter.\n\n\n\n\n\n\n\n### lxml 3.4.0 -> 3.8.0\n\n>### 3.8.0\n\n>==================\n\n>Features added\n>--------------\n\n>* ``ElementTree.write()`` has a new option ``doctype`` that writes out a\n>  doctype string before the serialisation, in the same way as ``tostring()``.\n\n>* GH220: ``xmlfile`` allows switching output methods at an element level.\n>  Patch by Burak Arslan.\n\n>* LP1595781, GH240: added a PyCapsule Python API and C-level API for\n>  passing externally generated libxml2 documents into lxml.\n\n>* GH244: error log entries have a new property ``path`` with an XPath\n>  expression (if known, None otherwise) that points to the tree element\n>  responsible for the error. Patch by Bob Kline.\n\n>* The namespace prefix mapping that can be used in ElementPath now injects\n>  a default namespace when passing a None prefix.\n\n>Bugs fixed\n>----------\n\n>* GH238: Character escapes were not hex-encoded in the ``xmlfile`` serialiser.\n>  Patch by matejcik.\n\n>* GH229: fix for externally created XML documents.  Patch by Theodore Dubois.\n\n>* LP1665241, GH228: Form data handling in lxml.html no longer strips the\n>  option values specified in form attributes but only the text values.\n>  Patch by Ashish Kulkarni.\n\n>* LP1551797: revert previous fix for XSLT error logging as it breaks\n>  multi-threaded XSLT processing.\n\n>* LP1673355, GH233: ``fromstring()`` html5parser failed to parse byte strings.\n\n>Other changes\n>-------------\n\n>* The previously undocumented ``docstring`` option in ``ElementTree.write()``\n>  produces a deprecation warning and will eventually be removed.\n\n\n\n\n>### 3.7.4\n\n>==================\n\n>Bugs fixed\n>----------\n\n>* LP1551797: revert previous fix for XSLT error logging as it breaks\n>  multi-threaded XSLT processing.\n\n>* LP1673355, GH233: ``fromstring()`` html5parser failed to parse byte strings.\n\n\n\n\n>### 3.7.3\n\n>==================\n\n>Bugs fixed\n>----------\n\n>* GH218 was ineffective in Python 3.\n\n>* GH222: ``lxml.html.submit_form()`` failed in Python 3.\n>  Patch by Jakub Wilk.\n\n\n\n\n>### 3.7.2\n\n>==================\n\n>* GH220: ``xmlfile`` allows switching output methods at an element level.\n>  Patch by Burak Arslan.\n\n>Bugs fixed\n>----------\n\n>* Work around installation problems in recent Python 2.7 versions\n>  due to FTP download failures.\n\n>* GH219: ``xmlfile.element()`` was not properly quoting attribute values.\n>  Patch by Burak Arslan.\n\n>* GH218: ``xmlfile.element()`` was not properly escaping text content of\n>  script/style tags.  Patch by Burak Arslan.\n\n\n\n\n>### 3.7.1\n\n>==================\n\n>* No source changes, issued only to solve problems with the\n>  binary packages released for 3.7.0.\n\n\n\n\n>### 3.7.0\n\n>==================\n\n>Features added\n>--------------\n\n>* GH217: ``XMLSyntaxError`` now behaves more like its ``SyntaxError``\n>  baseclass.  Patch by Philipp A.\n\n>* GH216: ``HTMLParser()`` now supports the same ``collect_ids`` parameter\n>  as ``XMLParser()``.  Patch by Burak Arslan.\n\n>* GH210: Allow specifying a serialisation method in ``xmlfile.write()``.\n>  Patch by Burak Arslan.\n\n>* GH203: New option ``default_doctype`` in ``HTMLParser`` that allows\n>  disabling the automatic doctype creation.  Patch by Shadab Zafar.\n\n>* GH201: Calling the method ``.set(&#39;attrname&#39;)`` without value argument\n>  (or ``None``) on HTML elements creates an attribute without value that\n>  serialises like ``&lt;div attrname&gt;&lt;/div&gt;``.  Patch by Daniel Holth.\n\n>* GH197: Ignore form input fields in ``form_values()`` when they are\n>  marked as ``disabled`` in HTML.  Patch by Kristian Klemon.\n\n>Bugs fixed\n>----------\n\n>* GH206: File name and line number were missing from XSLT error messages.\n>  Patch by Marcus Brinkmann.\n\n>Other changes\n>-------------\n\n>* Log entries no longer allow anything but plain string objects as message text\n>  and file name.\n\n>* ``zlib`` is included in the list of statically built libraries.\n\n\n\n\n>### 3.6.4\n\n>==================\n\n>* GH204, LP1614693: build fix for MacOS-X.\n\n\n\n\n>### 3.6.3\n\n>==================\n\n>* LP1614603: change linker flags to build multi-linux wheels\n\n\n\n\n>### 3.6.2\n\n>==================\n\n>* LP1614603: release without source changes to provide cleanly built Linux wheels\n\n\n\n\n>### 3.6.1\n\n>==================\n\n>Features added\n>--------------\n\n>* GH180: Separate option ``inline_style`` for Cleaner that only removes ``style``\n>  attributes instead of all styles.  Patch by Christian Pedersen.\n\n>* GH196: Windows build support for Python 3.5.  Contribution by Maximilian Hils.\n\n>Bugs fixed\n>----------\n\n>* GH199: Exclude ``file`` fields from ``FormElement.form_values`` (as browsers do).\n>  Patch by Tomas Divis.\n\n>* GH198, LP1568167: Try to provide base URL from ``Resolver.resolve_string()``.\n>  Patch by Michael van Tellingen.\n\n>* GH191: More accurate float serialisation in ``objectify.FloatElement``.\n>  Patch by Holger Joukl.\n\n>* LP1551797: Repair XSLT error logging. Patch by Marcus Brinkmann.\n\n\n\n\n>### 3.6.0\n\n>==================\n\n>Features added\n>--------------\n\n>* GH187: Now supports (only) version 5.x and later of PyPy.\n>  Patch by Armin Rigo.\n\n>* GH181: Direct support for ``.rnc`` files in `RelaxNG()` if ``rnc2rng``\n>  is installed.  Patch by Dirkjan Ochtman.\n\n>Bugs fixed\n>----------\n\n>* GH189: Static builds honour FTP proxy configurations when downloading\n>  the external libs.  Patch by Youhei Sakurai.\n\n>* GH186: Soupparser failed to process entities in Python 3.x.\n>  Patch by Duncan Morris.\n\n>* GH185: Rare encoding related ``TypeError`` on import was fixed.\n>  Patch by Petr Demin.\n\n\n\n\n>### 3.5.0\n\n>==================\n\n>Bugs fixed\n>----------\n\n>* Unicode string results failed XPath queries in PyPy.\n\n>* LP1497051: HTML target parser failed to terminate on exceptions\n>  and continued parsing instead.\n\n>* Deprecated API usage in doctestcompare.\n\n\n\n\n>### 3.5.0b1\n\n>====================\n\n>Features added\n>--------------\n\n>* ``cleanup_namespaces()`` accepts a new argument ``keep_ns_prefixes``\n>  that does not remove definitions of the provided prefix-namespace\n>  mapping from the tree.\n\n>* ``cleanup_namespaces()`` accepts a new argument ``top_nsmap`` that\n>  moves definitions of the provided prefix-namespace mapping to the\n>  top of the tree.\n\n>* LP1490451: ``Element`` objects gained a ``cssselect()`` method as\n>  known from ``lxml.html``.  Patch by Simon Sapin.\n\n>* API functions and methods behave and look more like Python functions,\n>  which allows introspection on them etc.  One side effect to be aware of\n>  is that the functions now bind as methods when assigned to a class\n>  variable.  A quick fix is to wrap them in ``staticmethod()`` (as for\n>  normal Python functions).\n\n>* ISO-Schematron support gained an option ``error_finder`` that allows\n>  passing a filter function for picking validation errors from reports.\n\n>* LP1243600: Elements in ``lxml.html`` gained a ``classes`` property\n>  that provides a set-like interface to the ``class`` attribute.\n>  Original patch by masklinn.\n\n>* LP1341964: The soupparser now handles DOCTYPE declarations, comments\n>  and processing instructions outside of the root element.\n>  Patch by Olli Pottonen.\n\n>* LP1421512: The ``docinfo`` of a tree was made editable to allow\n>  setting and removing the public ID and system ID of the DOCTYPE.\n>  Patch by Olli Pottonen.\n\n>* LP1442427: More work-arounds for quirks and bugs in pypy and pypy3.\n\n>* ``lxml.html.soupparser`` now uses BeautifulSoup version 4 instead\n>  of version 3 if available.\n\n>Bugs fixed\n>----------\n\n>* Memory errors that occur during tree adaptations (e.g. moving subtrees\n>  to foreign documents) could leave the tree in a crash prone state.\n\n>* Calling ``process_children()`` in an XSLT extension element without\n>  an ``output_parent`` argument failed with a ``TypeError``.\n>  Fix by Jens Tröger.\n\n>* GH162: Image data in HTML ``data`` URLs is considered safe and\n>  no longer removed by ``lxml.html.clean`` JavaScript cleaner.\n\n>* GH166: Static build could link libraries in wrong order.\n\n>* GH172: Rely a bit more on libxml2 for encoding detection rather than\n>  rolling our own in some cases.  Patch by Olli Pottonen.\n\n>* GH159: Validity checks for names and string content were tightened\n>  to detect the use of illegal characters early.  Patch by Olli Pottonen.\n\n>* LP1421921: Comments/PIs before the DOCTYPE declaration were not\n>  serialised.  Patch by Olli Pottonen.\n\n>* LP659367: Some HTML DOCTYPE declarations were not serialised.\n>  Patch by Olli Pottonen.\n\n>* LP1238503: lxml.doctestcompare is now consistent with stdlib&#39;s doctest\n>  in how it uses ``+`` and ``-`` to refer to unexpected and missing output.\n\n>* Empty prefixes are explicitly rejected when a namespace mapping is used\n>  with ElementPath to avoid hiding bugs in user code.\n\n>* Several problems with PyPy were fixed by switching to Cython 0.23.\n\n\n\n\n>### 3.4.4\n\n>==================\n\n>Bugs fixed\n>----------\n\n>* An ElementTree compatibility test added in lxml 3.4.3 that failed in\n>  Python 3.4+ was removed again.\n\n\n\n\n>### 3.4.3\n\n>==================\n\n>Bugs fixed\n>----------\n\n>* Expression cache in ElementPath was ignored.  Fix by Changaco.\n\n>* LP1426868: Passing a default namespace and a prefixed namespace mapping\n>  as nsmap into ``xmlfile.element()`` raised a ``TypeError``.\n\n>* LP1421927: DOCTYPE system URLs were incorrectly quoted when containing\n>  double quotes.  Patch by Olli Pottonen.\n\n>* LP1419354: meta-redirect URLs were incorrectly processed by\n>  ``iterlinks()`` if preceded by whitespace.\n\n\n\n\n>### 3.4.2\n\n>==================\n\n>Bugs fixed\n>----------\n\n>* LP1415907: Crash when creating an XMLSchema from a non-root element\n>  of an XML document.\n\n>* LP1369362: HTML cleaning failed when hitting processing instructions\n>  with pseudo-attributes.\n\n>* ``CDATA()`` wrapped content was rejected for tail text.\n\n>* CDATA sections were not serialised as tail text of the top-level element.\n\n\n\n\n>### 3.4.1\n\n>==================\n\n>Features added\n>--------------\n\n>* New ``htmlfile`` HTML generator to accompany the incremental ``xmlfile``\n>  serialisation API.  Patch by Burak Arslan.\n\n>Bugs fixed\n>----------\n\n>* ``lxml.sax.ElementTreeContentHandler`` did not initialise its superclass.\n\n\n\n\n\n\n\n\n### MarkupSafe 0.23 -> 1.0\n\n>### 1.0\n\n>-----------\n\n>- Fixed custom types not invoking `__unicode__` when used\n>  with `format()`.\n>- Added `__version__` module attribute\n>- Improve unescape code to leave lone ampersands alone.\n\n\n\n\n\n\n\n### Paste 1.7.5.1 -> 2.0.3\n\n>### 2.0.3\n\n>-----\n\n>* 26: Change six requirement to &gt;=1.4.0\n>  from [Linus Heckemann](https://bitbucket.org/sphalerite/)\n>  https://bitbucket.org/ianb/paste/pull-requests/26/change-six-requirement-to-140/diff\n\n>* 28: Py3k fixes\n>  from [Nils Philippsen](https://bitbucket.org/nilsph/)\n>  https://bitbucket.org/ianb/paste/pull-requests/28/py3k-fixes/diff\n\n>* 29: paste.wsgilib.add_close: Add __next__ method to support using `add_close` objects as iterators on Python 3.\n>  fixes https://bitbucket.org/ianb/pastedeploy/issues/18/py3-test_config_middleware-failed\n>  from [Marc Abramowitz](https://bitbucket.org/msabramo/)\n>  https://bitbucket.org/ianb/paste/pull-requests/29/pastewsgilibadd_close-add-__next__-method/diff\n\n>* 30: tox.ini: Add py35 to envlist\n>  from [Marc Abramowitz](https://bitbucket.org/msabramo/)\n>  https://bitbucket.org/ianb/paste/pull-requests/30/toxini-add-py35-to-envlist/diff\n\n>* 31: Enable testing with pypy\n>  from [Marc Abramowitz](https://bitbucket.org/msabramo/)\n>  https://bitbucket.org/ianb/paste/pull-requests/31/enable-testing-with-pypy/diff\n\n>* 33: tox.ini: Measure test coveraage\n>  from [Marc Abramowitz](https://bitbucket.org/msabramo/)\n>  https://bitbucket.org/ianb/paste/pull-requests/33/toxini-measure-test-coverage/diff\n\n\n\n>### 2.0.2\n\n>-----\n\n>* 22: Fix improper commas in request headers in wsgi_environ (https://bitbucket.org/ianb/paste/pull-request/22/fix-improper-commas-in-request-headers-in)\n>  Fixes issue 4 (&quot;WSGI environ totally borked&quot;) (https://bitbucket.org/ianb/paste/issue/4/wsgi-environ-totally-borked)\n\n>* 24: test_wsgirequest_charset: Use UTF-8 instead of iso-8859-1 (https://bitbucket.org/ianb/paste/pull-request/24/test_wsgirequest_charset-use-utf-8-instead)\n>  Fixes issue 7 (&quot;Python 3 test failure&quot;) (https://bitbucket.org/ianb/paste/issue/7/python-3-test-failure)\n\n>* 23: Replace cgi.parse_qsl w/ six.moves.urllib.parse.parse_qsl (https://bitbucket.org/ianb/paste/pull-request/23/replace-cgiparse_qsl-w)\n>  Fixes issue 8 (&quot;cgi.parse_qsl is pending deprecation&quot;) (https://bitbucket.org/ianb/paste/issue/8/cgiparse_qsl-is-pending-deprecation)\n\n>* 20: Escape CGI environment variables in HTTP 404 responses (https://bitbucket.org/ianb/paste/pull-request/20/escape-cgi-environment-variables-in-http)\n\n>* 6: Add HTTP exception for new code 429 &quot;Too Many Requests&quot; (https://bitbucket.org/ianb/paste/pull-request/6/add-http-exception-for-new-code-429-too)\n\n>* 25: replace ``has_key`` method to ``in`` operator 9 (https://bitbucket.org/ianb/paste/pull-request/25/replace-has_key-method-to-in-operator-9)\n>  Fixes 9 (&quot;used methods removed from py3&quot;) (https://bitbucket.org/ianb/paste/issue/9/used-methods-removed-from-py3)\n\n>* 5: Invalid error message when the socket is already in use (https://bitbucket.org/ianb/paste/issue/5/invalid-error-message-when-the-socket-is)\n\n\n\n>### 2.0.1\n\n>-----\n\n>* Fix setup.py for six dependency: move the six dependency from extras_require\n>  to install_requires.\n\n>* Port paste.proxy to Python 3.\n\n>* Fix paste.exceptions.serial_number_generator.hash_identifier() on Python 3.\n\n>* Fix paste.util.threadedprint.uninstall(). Rename duplicated uninstall()\n>  function to uninstall_stdin() and fix typo in variable name (_oldstin =&gt;\n>  _oldstdin).\n\n>* Add README.rst file.\n\n\n\n>### 2.0\n\n>---\n\n>* Experimental Python 3 support.\n\n>* paste now requires the six module.\n\n>* Drop support of Python 2.5 and older.\n\n>* Fixed ``egg:Pastecgi``\n\n>* In ``paste.httpserver``: give a 100 Continue response even when the\n>  server has been configured as an HTTP/1.0 server (clients may send\n>  ``Expect: 100-Continue`` before they know the version), and wrap\n>  100 Continue ``environ[&#39;wsgi.input&#39;]`` files with LimitedLengthFile\n>  just like normal request bodies are wrapped, keeping WSGI\n>  applications from over-reading from the socket.\n\n>* Fixed parsing of paths beginning with multiple forward slashes.\n\n>* Add tox.ini to run tests with tox on Python 2.6, 2.7 and 3.4.\n\n\n\n\n\n\n\n### PasteScript 1.7.5 -> 2.0.2\n\n>### 2.0.2\n\n>------------------\n\n>* Issue 20: Fix &quot;paster points --list&quot; on Python 3.\n\n>* Fix cgi_server on Python 3.\n\n>* Fix usage of the sort() method on Python 3.\n\n>* Fix grep on Python 3.\n\n\n\n>### 2.0.1\n\n>------------------\n\n>* Fix --help command on Python 3. Patch written by Atsushi Odagiri (aodag).\n\n>* Fix &quot;paster create --template=basic_package test&quot; command on Python 3.\n>  Patch written by Atsushi Odagiri (aodag).\n\n>* Fix error when &#39;paster create --list-template&#39; on Python 3. Patch written by\n>  FGtatsuro.\n\n>* Create universal wheel package.\n\n\n\n>### 2.0\n\n>----------------\n\n>* Experimental Python 3 support.\n\n>* six module is now required.\n\n>* Drop support of Python 2.5 and older\n\n\n\n\n\n\n\n### psycopg2 2.5.4 -> 2.7.1\n\n>### 2.7.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Ignore `!None` arguments passed to `~psycopg2.connect()` and\n>  `~psycopg2.extensions.make_dsn()` (:ticket:`517`).\n>- OpenSSL upgraded from major version 0.9.8 to 1.0.2 in the Linux wheel\n>  packages (:ticket:`518`).\n>- Fixed build with libpq versions &lt; 9.3 (:ticket:`520`).\n\n\n\n\n>### 2.7\n\n>-------------------------\n\n>New features:\n\n>- Added `~psycopg2.sql` module to generate SQL dynamically (:ticket:`308`).\n>- Added :ref:`replication-support` (:ticket:`322`). Main authors are\n>  Oleksandr Shulgin and Craig Ringer, who deserve a huge thank you.\n>- Added `~psycopg2.extensions.parse_dsn()` and\n>  `~psycopg2.extensions.make_dsn()` functions (:tickets:`321, 363`).\n>  `~psycopg2.connect()` now can take both *dsn* and keyword arguments, merging\n>  them together.\n>- Added `~psycopg2.__libpq_version__` and\n>  `~psycopg2.extensions.libpq_version()` to inspect the version of the\n>  ``libpq`` library the module was compiled/loaded with\n>  (:tickets:`35, 323`).\n>- The attributes `~connection.notices` and `~connection.notifies` can be\n>  customized replacing them with any object exposing an `!append()` method\n>  (:ticket:`326`).\n>- Adapt network types to `ipaddress` objects when available. When not\n>  enabled, convert arrays of network types to lists by default. The old `!Inet`\n>  adapter is deprecated (:tickets:`317, 343, 387`).\n>- Added `~psycopg2.extensions.quote_ident()` function (:ticket:`359`).\n>- Added `~connection.get_dsn_parameters()` connection method (:ticket:`364`).\n>- `~cursor.callproc()` now accepts a dictionary of parameters (:ticket:`381`).\n>- Give precedence to `!__conform__()` over superclasses to choose an object\n>  adapter (:ticket:`456`).\n>- Using Python C API decoding functions and codecs caching for faster\n>  unicode encoding/decoding (:ticket:`473`).\n>- `~cursor.executemany()` slowness addressed by\n>  `~psycopg2.extras.execute_batch()` and `~psycopg2.extras.execute_values()`\n>  (:ticket:`491`).\n>- Added ``async_`` as an alias for ``async`` to support Python 3.7 where\n>  ``async`` will become a keyword (:ticket:`495`).\n>- Unless in autocommit, do not use :sql:`default_transaction_*` settings to\n>  control the session characteristics as it may create problems with external\n>  connection pools such as pgbouncer; use :sql:`BEGIN` options instead\n>  (:ticket:`503`).\n>- `~connection.isolation_level` is now writable and entirely separated from\n>  `~connection.autocommit`; added `~connection.readonly`,\n>  `~connection.deferrable` writable attributes.\n\n>Bug fixes:\n\n>- Fixed error caused by missing decoding `~psycopg2.extras.LoggingConnection`\n>  (:ticket:`483`).\n>- Fixed integer overflow in :sql:`interval` seconds (:ticket:`512`).\n\n>Other changes:\n\n>- Dropped support for Python 2.5 and 3.1.\n>- Dropped support for client library older than PostgreSQL 9.1 (but older\n>  server versions are still supported).\n>- `~connection.isolation_level` doesn&#39;t read from the database but will return\n>  `~psycopg2.extensions.ISOLATION_LEVEL_DEFAULT` if no value was set on the\n>  connection.\n>- Empty arrays no more converted into lists if they don&#39;t have a type attached\n>  (:ticket:`506`)\n\n\n\n\n>### 2.6.3\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Throw an exception trying to pass ``NULL`` chars as parameters\n>  (:ticket:`420`).\n>- Make `~psycopg2.extras.Range` objects picklable (:ticket:`462`).\n\n\n\n\n>### 2.6.2\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Fixed inconsistent state in externally closed connections\n>  (:tickets:`263, 311, 443`).\n>- Report the server response status on errors (such as :ticket:`281`).\n>- Raise `!NotSupportedError` on unhandled server response status\n>  (:ticket:`352`).\n>- Allow overriding string adapter encoding with no connection (:ticket:`331`).\n>- The `~psycopg2.extras.wait_select` callback allows interrupting a\n>  long-running query in an interactive shell using :kbd:`Ctrl-C`\n>  (:ticket:`333`).\n>- Fixed `!PersistentConnectionPool` on Python 3 (:ticket:`348`).\n>- Fixed segfault on `repr()` of an unitialized connection (:ticket:`361`).\n>- Allow adapting bytes using `~psycopg2.extensions.QuotedString` on Python 3\n>  (:ticket:`365`).\n>- Added support for setuptools/wheel (:ticket:`370`).\n>- Fix build on Windows with Python 3.5, VS 2015 (:ticket:`380`).\n>- Fixed `!errorcodes.lookup` initialization thread-safety (:ticket:`382`).\n>- Fixed `!read()` exception propagation in copy_from (:ticket:`412`).\n>- Fixed possible NULL TZ decref  (:ticket:`424`).\n>- `~psycopg2.errorcodes` map updated to PostgreSQL 9.5.\n\n\n\n\n>### 2.6.1\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Lists consisting of only `None` are escaped correctly (:ticket:`285`).\n>- Fixed deadlock in multithread programs using OpenSSL (:ticket:`290`).\n>- Correctly unlock the connection after error in flush (:ticket:`294`).\n>- Fixed `!MinTimeLoggingCursor.callproc()` (:ticket:`309`).\n>- Added support for MSVC 2015 compiler (:ticket:`350`).\n\n\n\n\n>### 2.6\n\n>-------------------------\n\n>New features:\n\n>- Added support for large objects larger than 2GB. Many thanks to Blake Rouse\n>  and the MAAS Team for the feature development.\n>- Python `time` objects with a tzinfo specified and PostgreSQL :sql:`timetz`\n>  data are converted into each other (:ticket:`272`).\n\n>Bug fixes:\n\n>- Json adapter&#39;s `!str()` returns the adapted content instead of the `!repr()`\n>  (:ticket:`191`).\n\n\n\n\n>### 2.5.5\n\n>^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n>- Named cursors used as context manager don&#39;t swallow the exception on exit\n>  (:ticket:`262`).\n>- `cursor.description` can be pickled (:ticket:`265`).\n>- Propagate read error messages in COPY FROM (:ticket:`270`).\n>- PostgreSQL time 24:00 is converted to Python 00:00 (:ticket:`278`).\n\n\n\n\n\n\n\n\n### pyramid 1.6a2 -> 1.9\n\n>### 1.9\n\n>================\n\n>- No major changes from 1.9b1.\n\n>- Updated documentation links for ``docs.pylonsproject.org`` to use HTTPS.\n\n\n\n>### 1.9b1\n\n>==================\n\n>- Add an informative error message when unknown predicates are supplied. The\n>  new message suggests alternatives based on the list of known predicates.\n>  See https://github.com/Pylons/pyramid/pull/3054\n\n>- Added integrity attributes for JavaScripts in cookiecutters, scaffolds, and\n>  resulting source files in tutorials.\n>  See https://github.com/Pylons/pyramid/issues/2548\n\n>- Update RELEASING.txt for updating cookiecutters. Change cookiecutter URLs to\n>  use shortcut.\n>  See https://github.com/Pylons/pyramid/issues/3042\n\n>- Ensure the correct threadlocals are pushed during view execution when\n>  invoked from ``request.invoke_exception_view``.\n>  See https://github.com/Pylons/pyramid/pull/3060\n\n>- Fix a bug in which ``pyramid.security.ALL_PERMISSIONS`` failed to return\n>  a valid iterator in its ``__iter__`` implementation.\n>  See https://github.com/Pylons/pyramid/pull/3074\n\n>- Normalize the permission results to a proper class hierarchy.\n>  ``pyramid.security.ACLAllowed`` is now a subclass of\n>  ``pyramid.security.Allowed`` and ``pyramid.security.ACLDenied`` is now a\n>  subclass of ``pyramid.security.Denied``.\n>  See https://github.com/Pylons/pyramid/pull/3084\n\n>- Add a ``quote_via`` argument to ``pyramid.encode.urlencode`` to follow\n>  the stdlib&#39;s version and enable custom quoting functions.\n>  See https://github.com/Pylons/pyramid/pull/3088\n\n>- Support `_query=None` and `_anchor=None` in ``request.route_url`` as well\n>  as ``query=None`` and ``anchor=None`` in ``request.resource_url``.\n>  Previously this would cause an `?` and a ``, respectively, in the url\n>  with nothing after it. Now the unnecessary parts are dropped from the\n>  generated URL. See https://github.com/Pylons/pyramid/pull/3034\n\n>- Revamp the ``IRouter`` API used by ``IExecutionPolicy`` to force\n>  pushing/popping the request threadlocals. The\n>  ``IRouter.make_request(environ)`` API has been replaced by\n>  ``IRouter.request_context(environ)`` which should be used as a context\n>  manager. See https://github.com/Pylons/pyramid/pull/3086\n\n\n\n>### 1.9a2\n\n>==================\n\n>Backward Incompatibilities\n>--------------------------\n\n>- ``request.exception`` and ``request.exc_info`` will only be set if the\n>  response was generated by the EXCVIEW tween. This is to avoid any confusion\n>  where a response was generated elsewhere in the pipeline and not in\n>  direct relation to the original exception. If anyone upstream wants to\n>  catch and render responses for exceptions they should set\n>  ``request.exception`` and ``request.exc_info`` themselves to indicate\n>  the exception that was squashed when generating the response.\n\n>  Similar behavior occurs with ``request.invoke_exception_view`` in which\n>  the exception properties are set to reflect the exception if a response\n>  is successfully generated by the method.\n\n>  This is a very minor incompatibility. Most tweens right now would give\n>  priority to the raised exception and ignore ``request.exception``. This\n>  change just improves and clarifies that bookkeeping by trying to be\n>  more clear about the relationship between the response and its squashed\n>  exception. See https://github.com/Pylons/pyramid/pull/3029 and\n>  https://github.com/Pylons/pyramid/pull/3031\n\n\n\n>### 1.9a1\n\n>==================\n\n>Major Features\n>--------------\n\n>- The file format used by all ``p*`` command line scripts such as ``pserve``\n>  and ``pshell``, as well as the ``pyramid.paster.bootstrap`` function\n>  is now replaceable thanks to a new dependency on\n>  `plaster &lt;https://docs.pylonsproject.org/projects/plaster/en/latest/&gt;`_.\n\n>  For now, Pyramid is still shipping with integrated support for the\n>  PasteDeploy INI format by depending on the\n>  `plaster_pastedeploy &lt;https://github.com/Pylons/plaster_pastedeploy&gt;`_\n>  binding library. This may change in the future.\n\n>  See https://github.com/Pylons/pyramid/pull/2985\n\n>- Added an execution policy hook to the request pipeline. An execution\n>  policy has the ability to control creation and execution of the request\n>  objects before they enter the rest of the pipeline. This means for a single\n>  request environ the policy may create more than one request object.\n\n>  The first library to use this feature is\n>  `pyramid_retry\n>  &lt;https://docs.pylonsproject.org/projects/pyramid-retry/en/latest/&gt;`_.\n\n>  See https://github.com/Pylons/pyramid/pull/2964\n\n>- CSRF support has been refactored out of sessions and into its own\n>  independent API in the ``pyramid.csrf`` module. It supports a pluggable\n>  ``pyramid.interfaces.ICSRFStoragePolicy`` which can be used to define your\n>  own mechanism for generating and validating CSRF tokens. By default,\n>  Pyramid continues to use the ``pyramid.csrf.LegacySessionCSRFStoragePolicy``\n>  that uses the ``request.session.get_csrf_token`` and\n>  ``request.session.new_csrf_token`` APIs under the hood to preserve\n>  compatibility. Two new policies are shipped as well,\n>  ``pyramid.csrf.SessionCSRFStoragePolicy`` and\n>  ``pyramid.csrf.CookieCSRFStoragePolicy`` which will store the CSRF tokens\n>  in the session and in a standalone cookie, respectively. The storage policy\n>  can be changed by using the new\n>  ``pyramid.config.Configurator.set_csrf_storage_policy`` config directive.\n\n>  CSRF tokens should be used via the new ``pyramid.csrf.get_csrf_token``,\n>  ``pyramid.csrf.new_csrf_token`` and ``pyramid.csrf.check_csrf_token`` APIs\n>  in order to continue working if the storage policy is changed. Also, the\n>  ``pyramid.csrf.get_csrf_token`` function is injected into templates to be\n>  used conveniently in UI code.\n\n>  See https://github.com/Pylons/pyramid/pull/2854 and\n>  https://github.com/Pylons/pyramid/pull/3019\n\n>Minor Features\n>--------------\n\n>- Support an ``open_url`` config setting in the ``pserve`` section of the\n>  config file. This url is used to open a web browser when ``pserve --browser``\n>  is invoked. When this setting is unavailable the ``pserve`` script will\n>  attempt to guess the port the server is using from the\n>  ``server:&lt;server_name&gt;`` section of the config file but there is no\n>  requirement that the server is being run in this format so it may fail.\n>  See https://github.com/Pylons/pyramid/pull/2984\n\n>- The ``pyramid.config.Configurator`` can now be used as a context manager\n>  which will automatically push/pop threadlocals (similar to\n>  ``config.begin()`` and ``config.end()``). It will also automatically perform\n>  a ``config.commit()`` and thus it is only recommended to be used at the\n>  top-level of your app. See https://github.com/Pylons/pyramid/pull/2874\n\n>- The threadlocals are now available inside any function invoked via\n>  ``config.include``. This means the only config-time code that cannot rely\n>  on threadlocals is code executed from non-actions inside the main. This\n>  can be alleviated by invoking ``config.begin()`` and ``config.end()``\n>  appropriately or using the new context manager feature of the configurator.\n>  See https://github.com/Pylons/pyramid/pull/2989\n\n>Bug Fixes\n>---------\n\n>- HTTPException&#39;s accepts a detail kwarg that may be used to pass additional\n>  details to the exception. You may now pass objects so long as they have a\n>  valid __str__ method. See https://github.com/Pylons/pyramid/pull/2951\n\n>- Fix a reference cycle causing memory leaks in which the registry\n>  would keep a ``Configurator`` instance alive even after the configurator\n>  was discarded. Another fix was also added for the ``global_registries``\n>  object in which the registry was stored in a closure preventing it from\n>  being deallocated. See https://github.com/Pylons/pyramid/pull/2967\n\n>- Fix a bug directly invoking ``pyramid.scripts.pserve.main`` with the\n>  ``--reload`` option in which ``sys.argv`` is always used in the subprocess\n>  instead of the supplied ``argv``.\n>  See https://github.com/Pylons/pyramid/pull/2962\n\n>Deprecations\n>------------\n\n>- Pyramid currently depends on ``plaster_pastedeploy`` to simplify the\n>  transition to ``plaster`` by maintaining integrated support for INI files.\n>  This dependency on ``plaster_pastedeploy`` should be considered subject to\n>  Pyramid&#39;s deprecation policy and may be removed in the future.\n>  Applications should depend on the appropriate plaster binding to satisfy\n>  their needs.\n\n>- Retrieving CSRF token from the session has been deprecated in favor of\n>  equivalent methods in the ``pyramid.csrf`` module. The CSRF methods\n>  (``ISession.get_csrf_token`` and ``ISession.new_csrf_token``) are no longer\n>  required on the ``ISession`` interface except when using the default\n>  ``pyramid.csrf.LegacySessionCSRFStoragePolicy``.\n\n>  Also, ``pyramid.session.check_csrf_token`` is now located at\n>  ``pyramid.csrf.check_csrf_token``.\n\n>  See https://github.com/Pylons/pyramid/pull/2854 and\n>  https://github.com/Pylons/pyramid/pull/3019\n\n>Documentation Changes\n>---------------------\n\n>- Added the execution policy to the routing diagram in the Request Processing\n>  chapter. See https://github.com/Pylons/pyramid/pull/2993\n\n\n\n>### 1.8\n\n>================\n\n>- No major changes from 1.8b1.\n\n\n\n>### 1.8b1\n\n>==================\n\n>Features\n>--------\n\n>- Added an ``override`` option to ``config.add_translation_dirs`` to allow\n>  later calls to place translation directories at a higher priority than\n>  earlier calls. See https://github.com/Pylons/pyramid/pull/2902\n\n>Documentation Changes\n>---------------------\n\n>- Improve registry documentation to discuss uses as a component registry\n>  and as a dictionary. See https://github.com/Pylons/pyramid/pull/2893\n\n>- Quick Tour, Quick Tutorial, and most other remaining documentation updated to\n>  use cookiecutters instead of pcreate and scaffolds.\n>  See https://github.com/Pylons/pyramid/pull/2888 and\n>  https://github.com/Pylons/pyramid/pull/2889\n\n>- Fix unittests in wiki2 to work without different dependencies between\n>  py2 and py3. See https://github.com/Pylons/pyramid/pull/2899\n\n>- Update Windows documentation to track newer Python 3 improvements to the\n>  installer. See https://github.com/Pylons/pyramid/pull/2900\n\n>- Updated the ``mod_wsgi`` tutorial to use cookiecutters and Apache 2.4+.\n>  See https://github.com/Pylons/pyramid/pull/2901\n\n\n\n>### 1.8a1\n\n>==================\n\n>Backward Incompatibilities\n>--------------------------\n\n>- Support for the ``IContextURL`` interface that was deprecated in Pyramid 1.3\n>  has been removed.  See https://github.com/Pylons/pyramid/pull/2822\n\n>- Following the Pyramid deprecation period (1.6 -&gt; 1.8),\n>  daemon support for pserve has been removed. This includes removing the\n>  daemon commands (start, stop, restart, status) as well as the following\n>  arguments: ``--daemon``, ``--pid-file``, ``--log-file``,\n>  ``--monitor-restart``, ``--status``, ``--user``, ``--group``,\n>  ``--stop-daemon``\n\n>  To run your server as a daemon you should use a process manager instead of\n>  pserve.\n\n>  See https://github.com/Pylons/pyramid/pull/2615\n\n>- ``pcreate`` is now interactive by default. You will be prompted if a file\n>  already exists with different content. Previously if there were similar\n>  files it would silently skip them unless you specified ``--interactive``\n>  or ``--overwrite``.\n>  See https://github.com/Pylons/pyramid/pull/2775\n\n>- Removed undocumented argument ``cachebust_match`` from\n>  ``pyramid.static.static_view``. This argument was shipped accidentally\n>  in Pyramid 1.6. See https://github.com/Pylons/pyramid/pull/2681\n\n>- Change static view to avoid setting the ``Content-Encoding`` response header\n>  to an encoding guessed using Python&#39;s ``mimetypes`` module. This was causing\n>  clients to decode the content of gzipped files when downloading them. The\n>  client would end up with a ``foo.txt.gz`` file on disk that was already\n>  decoded, thus should really be ``foo.txt``. Also, the ``Content-Encoding``\n>  should only have been used if the client itself broadcast support for the\n>  encoding via ``Accept-Encoding`` request headers.\n>  See https://github.com/Pylons/pyramid/pull/2810\n\n>- Settings are no longer accessible as attributes on the settings object\n>  (e.g. ``request.registry.settings.foo``). This was deprecated in Pyramid 1.2.\n>  See https://github.com/Pylons/pyramid/pull/2823\n\n>Features\n>--------\n\n>- Python 3.6 compatibility.\n>  https://github.com/Pylons/pyramid/issues/2835\n\n>- ``pcreate`` learned about ``--package-name`` to allow you to create a new\n>  project in an existing folder with a different package name than the project\n>  name. See https://github.com/Pylons/pyramid/pull/2783\n\n>- The ``_get_credentials`` private method of ``BasicAuthAuthenticationPolicy``\n>  has been extracted into standalone function ``extract_http_basic_credentials``\n>  in ``pyramid.authentication`` module, this function extracts HTTP Basic\n>  credentials from a ``request`` object, and returns them as a named tuple.\n>  See https://github.com/Pylons/pyramid/pull/2662\n\n>- Pyramid 1.4 silently dropped a feature of the configurator that has been\n>  restored. It&#39;s again possible for action discriminators to conflict across\n>  different action orders.\n>  See https://github.com/Pylons/pyramid/pull/2757\n\n>- ``pyramid.paster.bootstrap`` and its sibling ``pyramid.scripting.prepare``\n>  can now be used as context managers to automatically invoke the ``closer``\n>  and pop threadlocals off of the stack to prevent memory leaks.\n>  See https://github.com/Pylons/pyramid/pull/2760\n\n>- Added ``pyramid.config.Configurator.add_exception_view`` and the\n>  ``pyramid.view.exception_view_config`` decorator. It is now possible using\n>  these methods or via the new ``exception_only=True`` option to ``add_view``\n>  to add a view which will only be matched when handling an exception.\n>  Previously any exception views were also registered for a traversal\n>  context that inherited from the exception class which prevented any\n>  exception-only optimizations.\n>  See https://github.com/Pylons/pyramid/pull/2660\n\n>- Added the ``exception_only`` boolean to\n>  ``pyramid.interfaces.IViewDeriverInfo`` which can be used by view derivers\n>  to determine if they are wrapping a view which only handles exceptions.\n>  This means that it is no longer necessary to perform request-time checks\n>  for ``request.exception`` to determine if the view is handling an exception\n>  - the pipeline can be optimized at config-time.\n>  See https://github.com/Pylons/pyramid/pull/2660\n\n>- ``pserve`` should now work with ``gevent`` and other workers that need\n>  to monkeypatch the process, assuming the server and / or the app do so\n>  as soon as possible before importing the rest of pyramid.\n>  See https://github.com/Pylons/pyramid/pull/2797\n\n>- Pyramid no longer copies the settings object passed to the\n>  ``pyramid.config.Configurator(settings=)``. The original ``dict`` is kept.\n>  See https://github.com/Pylons/pyramid/pull/2823\n\n>- The csrf trusted origins setting may now be a whitespace-separated list of\n>  domains. Previously only a python list was allowed. Also, it can now be set\n>  using the ``PYRAMID_CSRF_TRUSTED_ORIGINS`` environment variable similar to\n>  other settings. See https://github.com/Pylons/pyramid/pull/2823\n\n>- ``pserve --reload`` now uses the\n>  `hupper &lt;http://docs.pylonsproject.org/projects/hupper/en/latest/&gt;`\n>  library to monitor file changes. This comes with many improvements:\n\n>  - If the `watchdog &lt;http://pythonhosted.org/watchdog/&gt;`_ package is\n>    installed then monitoring will be done using inotify instead of\n>    cpu and disk-intensive polling.\n\n>  - The monitor is now a separate process that will not crash and starts up\n>    before any of your code.\n\n>  - The monitor will not restart the process after a crash until a file is\n>    saved.\n\n>  - The monitor works on windows.\n\n>  - You can now trigger a reload manually from a pyramid view or any other\n>    code via ``hupper.get_reloader().trigger_reload()``. Kind of neat.\n\n>  - You can trigger a reload by issuing a ``SIGHUP`` to the monitor process.\n\n>  See https://github.com/Pylons/pyramid/pull/2805\n\n>- A new ``[pserve]`` section is supported in your config files with a\n>  ``watch_files`` key that can configure ``pserve --reload`` to monitor custom\n>  file paths. See https://github.com/Pylons/pyramid/pull/2827\n\n>- Allow streaming responses to be made from subclasses of\n>  ``pyramid.httpexceptions.HTTPException``. Previously the response would\n>  be unrolled while testing for a body, making it impossible to stream\n>  a response.\n>  See https://github.com/Pylons/pyramid/pull/2863\n\n>- Update starter, alchemy and zodb scaffolds to support IPv6 by using the\n>  new ``listen`` directives in waitress.\n>  See https://github.com/Pylons/pyramid/pull/2853\n\n>- All p* scripts now use argparse instead of optparse. This improves their\n>  ``--help`` output as well as enabling nicer documentation of their options.\n>  See https://github.com/Pylons/pyramid/pull/2864\n\n>- Any deferred configuration action registered via ``config.action`` may now\n>  depend on threadlocal state, such as asset overrides, being active when\n>  the action is executed.\n>  See https://github.com/Pylons/pyramid/pull/2873\n\n>- Asset specifications for directories passed to\n>  ``config.add_translation_dirs`` now support overriding the entire asset\n>  specification, including the folder name. Previously only the package name\n>  was supported and the folder would always need to have the same name.\n>  See https://github.com/Pylons/pyramid/pull/2873\n\n>- ``config.begin()`` will propagate the current threadlocal request through\n>  as long as the registry is the same. For example:\n\n>  .. code-block:: python\n\n>     request = Request.blank(...)\n>     config.begin(request)   pushes a request\n>     config.begin()          propagates the previous request through unchanged\n>     assert get_current_request() is request\n\n>  See https://github.com/Pylons/pyramid/pull/2873\n\n>- Added a new ``callback`` option to ``config.set_default_csrf_options`` which\n>  can be used to determine per-request whether CSRF checking should be enabled\n>  to allow for a mix authentication methods. Only cookie-based methods\n>  generally require CSRF checking.\n>  See https://github.com/Pylons/pyramid/pull/2778\n\n>Bug Fixes\n>---------\n\n>- Fixed bug in ``proutes`` such that it now shows the correct view when a\n>  class and ``attr`` is involved.\n>  See: https://github.com/Pylons/pyramid/pull/2687\n\n>- Fix a ``FutureWarning`` in Python 3.5 when using ``re.split`` on the\n>  ``format`` setting to the ``proutes`` script.\n>  See https://github.com/Pylons/pyramid/pull/2714\n\n>- Fix a ``RuntimeWarning`` emitted by WebOb when using arbitrary objects\n>  as the ``userid`` in the ``AuthTktAuthenticationPolicy``. This is now caught\n>  by the policy and the object is serialized as a base64 string to avoid\n>  the cryptic warning. Since the userid will be read back as a string on\n>  subsequent requests a more useful warning is emitted encouraging you to\n>  use a primitive type instead.\n>  See https://github.com/Pylons/pyramid/pull/2715\n\n>- Pyramid 1.6 introduced the ability for an action to invoke another action.\n>  There was a bug in the way that ``config.add_view`` would interact with\n>  custom view derivers introduced in Pyramid 1.7 because the view&#39;s\n>  discriminator cannot be computed until view derivers and view predicates\n>  have been created in earlier orders. Invoking an action from another action\n>  would trigger an unrolling of the pipeline and would compute discriminators\n>  before they were ready. The new behavior respects the ``order`` of the action\n>  and ensures the discriminators are not computed until dependent actions\n>  from previous orders have executed.\n>  See https://github.com/Pylons/pyramid/pull/2757\n\n>- Fix bug in i18n where the default domain would always use the Germanic plural\n>  style, even if a different plural function is defined in the relevant\n>  messages file. See https://github.com/Pylons/pyramid/pull/2859\n\n>- The ``config.override_asset`` method now occurs during\n>  ``pyramid.config.PHASE1_CONFIG`` such that it is ordered to execute before\n>  any calls to ``config.add_translation_dirs``.\n>  See https://github.com/Pylons/pyramid/pull/2873\n\n>Deprecations\n>------------\n\n>- The ``pcreate`` script and related scaffolds have been deprecated in favor\n>  of the popular\n>  `cookiecutter &lt;https://cookiecutter.readthedocs.io/en/latest/&gt;`_ project.\n\n>  All of Pyramid&#39;s official scaffolds as well as the tutorials have been\n>  ported to cookiecutters:\n\n>  - `pyramid-cookiecutter-starter\n>    &lt;https://github.com/Pylons/pyramid-cookiecutter-starter&gt;`_\n\n>  - `pyramid-cookiecutter-alchemy\n>    &lt;https://github.com/Pylons/pyramid-cookiecutter-alchemy&gt;`_\n\n>  - `pyramid-cookiecutter-zodb\n>    &lt;https://github.com/Pylons/pyramid-cookiecutter-zodb&gt;`_\n\n>  See https://github.com/Pylons/pyramid/pull/2780\n\n>Documentation Changes\n>---------------------\n\n>- Update Typographical Conventions.\n>  https://github.com/Pylons/pyramid/pull/2838\n\n>- Add `pyramid_nacl_session\n>  &lt;http://docs.pylonsproject.org/projects/pyramid-nacl-session/en/latest/&gt;`_\n>  to session factories. See https://github.com/Pylons/pyramid/issues/2791\n\n>- Update ``HACKING.txt`` from stale branch that was never merged to master.\n>  See https://github.com/Pylons/pyramid/pull/2782\n\n>- Updated Windows installation instructions and related bits.\n>  See https://github.com/Pylons/pyramid/issues/2661\n\n>- Fix an inconsistency in the documentation between view predicates and\n>  route predicates and highlight the differences in their APIs.\n>  See https://github.com/Pylons/pyramid/pull/2764\n\n>- Clarify a possible misuse of the ``headers`` kwarg to subclasses of\n>  ``pyramid.httpexceptions.HTTPException`` in which more appropriate\n>  kwargs from the parent class ``pyramid.response.Response`` should be\n>  used instead. See https://github.com/Pylons/pyramid/pull/2750\n\n>- The SQLAlchemy + URL Dispatch + Jinja2 (``wiki2``) and\n>  ZODB + Traversal + Chameleon (``wiki``) tutorials have been updated to\n>  utilize the new cookiecutters and drop support for the ``pcreate``\n>  scaffolds.\n\n>  See https://github.com/Pylons/pyramid/pull/2881 and\n>  https://github.com/Pylons/pyramid/pull/2883.\n\n>- Improve output of p* script descriptions for help.\n>  See https://github.com/Pylons/pyramid/pull/2886\n\n>- Quick Tour updated to use cookiecutters instead of pcreate and scaffolds.\n>  See https://github.com/Pylons/pyramid/pull/2888\n\n\n\n>### 1.7\n\n>================\n\n>- Fix a bug in the wiki2 tutorial where bcrypt is always expecting byte\n>  strings. See https://github.com/Pylons/pyramid/pull/2576\n\n>- Simplify windows detection code and remove some duplicated data.\n>  See https://github.com/Pylons/pyramid/pull/2585 and\n>  https://github.com/Pylons/pyramid/pull/2586\n\n\n\n>### 1.7b4\n\n>==================\n\n>- Fixed the exception view tween to re-raise the original exception if\n>  no exception view could be found to handle the exception. This better\n>  allows tweens further up the chain to handle exceptions that were\n>  left unhandled. Previously they would be converted into a\n>  ``PredicateMismatch`` exception if predicates failed to allow the view to\n>  handle the exception.\n>  See https://github.com/Pylons/pyramid/pull/2567\n\n>- Exposed the ``pyramid.interfaces.IRequestFactory`` interface to mirror\n>  the public ``pyramid.interfaces.IResponseFactory`` interface.\n\n\n\n>### 1.7b3\n\n>==================\n\n>- Fix ``request.invoke_exception_view`` to raise an ``HTTPNotFound``\n>  exception if no view is matched. Previously ``None`` would be returned\n>  if no views were matched and a ``PredicateMismatch`` would be raised if\n>  a view &quot;almost&quot; matched (a view was found matching the context).\n>  See https://github.com/Pylons/pyramid/pull/2564\n\n>- Add defaults for py.test configuration and coverage to all three scaffolds,\n>  and update documentation accordingly.\n>  See https://github.com/Pylons/pyramid/pull/2550\n\n>- Add ``linkcheck`` to ``Makefile`` for Sph"},"comment":{"url":"https://api.github.com/repos/Connexions/cnx-deploy/issues/comments/315751188","html_url":"https://github.com/Connexions/cnx-deploy/pull/342#issuecomment-315751188","issue_url":"https://api.github.com/repos/Connexions/cnx-deploy/issues/342","id":315751188,"user":{"login":"pyup-bot","id":16239342,"avatar_url":"https://avatars4.githubusercontent.com/u/16239342?v=4","gravatar_id":"","url":"https://api.github.com/users/pyup-bot","html_url":"https://github.com/pyup-bot","followers_url":"https://api.github.com/users/pyup-bot/followers","following_url":"https://api.github.com/users/pyup-bot/following{/other_user}","gists_url":"https://api.github.com/users/pyup-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/pyup-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyup-bot/subscriptions","organizations_url":"https://api.github.com/users/pyup-bot/orgs","repos_url":"https://api.github.com/users/pyup-bot/repos","events_url":"https://api.github.com/users/pyup-bot/events{/privacy}","received_events_url":"https://api.github.com/users/pyup-bot/received_events","type":"User","site_admin":false},"created_at":"2017-07-17T13:11:44Z","updated_at":"2017-07-17T13:11:44Z","body":"Closing this in favor of #344"}}
{"actor":{"display_login":"pyup-bot"}}