{"action":"closed","number":448,"pull_request":{"url":"https://api.github.com/repos/Opentrons/opentrons/pulls/448","id":154198599,"html_url":"https://github.com/Opentrons/opentrons/pull/448","diff_url":"https://github.com/Opentrons/opentrons/pull/448.diff","patch_url":"https://github.com/Opentrons/opentrons/pull/448.patch","issue_url":"https://api.github.com/repos/Opentrons/opentrons/issues/448","number":448,"state":"closed","locked":false,"title":"Update flask to 0.12.2","user":{"login":"pyup-bot","id":16239342,"avatar_url":"https://avatars0.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},"body":"\nThere's a new version of [Flask](https://pypi.python.org/pypi/Flask) available.\nYou are currently using **0.10.1**. I have updated it to **0.12.2**\n\n\n\nThese links might come in handy:  <a href=\"https://pypi.python.org/pypi/flask\">PyPI</a> | <a href=\"https://pyup.io/changelogs/flask/\">Changelog</a> | <a href=\"http://github.com/pallets/flask/\">Repo</a> \n\n\n\n### Changelog\n> \n>### 0.12.2\n\n>--------------\n\n>Released on May 16 2017\n\n>- Fix a bug in `safe_join` on Windows.\n\n\n\n>### 0.12.1\n\n>--------------\n\n>Bugfix release, released on March 31st 2017\n\n>- Prevent `flask run` from showing a NoAppException when an ImportError occurs\n>  within the imported application module.\n>- Fix encoding behavior of ``app.config.from_pyfile`` for Python 3. Fix\n>  ``2118``.\n>- Use the ``SERVER_NAME`` config if it is present as default values for\n>  ``app.run``. ``2109``, ``2152``\n>- Call `ctx.auto_pop` with the exception object instead of `None`, in the\n>  event that a `BaseException` such as `KeyboardInterrupt` is raised in a\n>  request handler.\n\n\n\n>### 0.12\n\n>------------\n\n>Released on December 21st 2016, codename Punsch.\n\n>- the cli command now responds to `--version`.\n>- Mimetype guessing and ETag generation for file-like objects in ``send_file``\n>  has been removed, as per issue ``104``.  See pull request ``1849``.\n>- Mimetype guessing in ``send_file`` now fails loudly and doesn&#39;t fall back to\n>  ``application/octet-stream``. See pull request ``1988``.\n>- Make ``flask.safe_join`` able to join multiple paths like ``os.path.join``\n>  (pull request ``1730``).\n>- Revert a behavior change that made the dev server crash instead of returning\n>  a Internal Server Error (pull request ``2006``).\n>- Correctly invoke response handlers for both regular request dispatching as\n>  well as error handlers.\n>- Disable logger propagation by default for the app logger.\n>- Add support for range requests in ``send_file``.\n>- ``app.test_client`` includes preset default environment, which can now be\n>  directly set, instead of per ``client.get``.\n\n\n\n>### 0.11.2\n\n>--------------\n\n>Bugfix release, unreleased\n\n>- Fix crash when running under PyPy3, see pull request ``1814``.\n\n\n\n>### 0.11.1\n\n>--------------\n\n>Bugfix release, released on June 7th 2016.\n\n>- Fixed a bug that prevented ``FLASK_APP=foobar/__init__.py`` from working. See\n>  pull request ``1872``.\n\n\n\n>### 0.11\n\n>------------\n\n>Released on May 29th 2016, codename Absinthe.\n\n>- Added support to serializing top-level arrays to :func:`flask.jsonify`. This\n>  introduces a security risk in ancient browsers. See\n>  :ref:`json-security` for details.\n>- Added before_render_template signal.\n>- Added `**kwargs` to :meth:`flask.Test.test_client` to support passing\n>  additional keyword arguments to the constructor of\n>  :attr:`flask.Flask.test_client_class`.\n>- Added ``SESSION_REFRESH_EACH_REQUEST`` config key that controls the\n>  set-cookie behavior.  If set to ``True`` a permanent session will be\n>  refreshed each request and get their lifetime extended, if set to\n>  ``False`` it will only be modified if the session actually modifies.\n>  Non permanent sessions are not affected by this and will always\n>  expire if the browser window closes.\n>- Made Flask support custom JSON mimetypes for incoming data.\n>- Added support for returning tuples in the form ``(response, headers)``\n>  from a view function.\n>- Added :meth:`flask.Config.from_json`.\n>- Added :attr:`flask.Flask.config_class`.\n>- Added :meth:`flask.Config.get_namespace`.\n>- Templates are no longer automatically reloaded outside of debug mode. This\n>  can be configured with the new ``TEMPLATES_AUTO_RELOAD`` config key.\n>- Added a workaround for a limitation in Python 3.3&#39;s namespace loader.\n>- Added support for explicit root paths when using Python 3.3&#39;s namespace\n>  packages.\n>- Added :command:`flask` and the ``flask.cli`` module to start the local\n>  debug server through the click CLI system.  This is recommended over the old\n>  ``flask.run()`` method as it works faster and more reliable due to a\n>  different design and also replaces ``Flask-Script``.\n>- Error handlers that match specific classes are now checked first,\n>  thereby allowing catching exceptions that are subclasses of HTTP\n>  exceptions (in ``werkzeug.exceptions``).  This makes it possible\n>  for an extension author to create exceptions that will by default\n>  result in the HTTP error of their choosing, but may be caught with\n>  a custom error handler if desired.\n>- Added :meth:`flask.Config.from_mapping`.\n>- Flask will now log by default even if debug is disabled.  The log format is\n>  now hardcoded but the default log handling can be disabled through the\n>  ``LOGGER_HANDLER_POLICY`` configuration key.\n>- Removed deprecated module functionality.\n>- Added the ``EXPLAIN_TEMPLATE_LOADING`` config flag which when enabled will\n>  instruct Flask to explain how it locates templates.  This should help\n>  users debug when the wrong templates are loaded.\n>- Enforce blueprint handling in the order they were registered for template\n>  loading.\n>- Ported test suite to py.test.\n>- Deprecated ``request.json`` in favour of ``request.get_json()``.\n>- Add &quot;pretty&quot; and &quot;compressed&quot; separators definitions in jsonify() method.\n>  Reduces JSON response size when JSONIFY_PRETTYPRINT_REGULAR=False by removing\n>  unnecessary white space included by default after separators.\n>- JSON responses are now terminated with a newline character, because it is a\n>  convention that UNIX text files end with a newline and some clients don&#39;t\n>  deal well when this newline is missing. See\n>  https://github.com/pallets/flask/pull/1262 -- this came up originally as a\n>  part of https://github.com/kennethreitz/httpbin/issues/168\n>- The automatically provided ``OPTIONS`` method is now correctly disabled if\n>  the user registered an overriding rule with the lowercase-version\n>  ``options`` (issue ``1288``).\n>- ``flask.json.jsonify`` now supports the ``datetime.date`` type (pull request\n>  ``1326``).\n>- Don&#39;t leak exception info of already catched exceptions to context teardown\n>  handlers (pull request ``1393``).\n>- Allow custom Jinja environment subclasses (pull request ``1422``).\n>- ``flask.g`` now has ``pop()`` and ``setdefault`` methods.\n>- Turn on autoescape for ``flask.templating.render_template_string`` by default\n>  (pull request ``1515``).\n>- ``flask.ext`` is now deprecated (pull request ``1484``).\n>- ``send_from_directory`` now raises BadRequest if the filename is invalid on\n>  the server OS (pull request ``1763``).\n>- Added the ``JSONIFY_MIMETYPE`` configuration variable (pull request ``1728``).\n>- Exceptions during teardown handling will no longer leave bad application\n>  contexts lingering around.\n\n\n\n>### 0.10.2\n\n>--------------\n\n>(bugfix release, release date to be announced)\n\n>- Fixed broken `test_appcontext_signals()` test case.\n>- Raise an :exc:`AttributeError` in :func:`flask.helpers.find_package` with a\n>  useful message explaining why it is raised when a PEP 302 import hook is used\n>  without an `is_package()` method.\n>- Fixed an issue causing exceptions raised before entering a request or app\n>  context to be passed to teardown handlers.\n>- Fixed an issue with query parameters getting removed from requests in\n>  the test client when absolute URLs were requested.\n>- Made `before_first_request` into a decorator as intended.\n>- Fixed an etags bug when sending a file streams with a name.\n>- Fixed `send_from_directory` not expanding to the application root path\n>  correctly.\n>- Changed logic of before first request handlers to flip the flag after\n>  invoking.  This will allow some uses that are potentially dangerous but\n>  should probably be permitted.\n>- Fixed Python 3 bug when a handler from `app.url_build_error_handlers`\n>  reraises the `BuildError`.\n\n\n\n\n\n\n\n*Got merge conflicts? Close this PR and delete the branch. I'll create a new PR for you.*\n\nHappy merging! 🤖\n","created_at":"2017-11-22T16:23:03Z","updated_at":"2017-11-22T16:36:12Z","closed_at":"2017-11-22T16:36:12Z","merged_at":null,"merge_commit_sha":"8097994fc89cac90f2323406fb1aad9ccbb64f5b","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/Opentrons/opentrons/pulls/448/commits","review_comments_url":"https://api.github.com/repos/Opentrons/opentrons/pulls/448/comments","review_comment_url":"https://api.github.com/repos/Opentrons/opentrons/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Opentrons/opentrons/issues/448/comments","statuses_url":"https://api.github.com/repos/Opentrons/opentrons/statuses/51243420037913d4f9f3e34d507d1f59a727ab98","head":{"label":"Opentrons:pyup-update-flask-0.10.1-to-0.12.2","ref":"pyup-update-flask-0.10.1-to-0.12.2","sha":"51243420037913d4f9f3e34d507d1f59a727ab98","user":{"login":"Opentrons","id":6139147,"avatar_url":"https://avatars2.githubusercontent.com/u/6139147?v=4","gravatar_id":"","url":"https://api.github.com/users/Opentrons","html_url":"https://github.com/Opentrons","followers_url":"https://api.github.com/users/Opentrons/followers","following_url":"https://api.github.com/users/Opentrons/following{/other_user}","gists_url":"https://api.github.com/users/Opentrons/gists{/gist_id}","starred_url":"https://api.github.com/users/Opentrons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Opentrons/subscriptions","organizations_url":"https://api.github.com/users/Opentrons/orgs","repos_url":"https://api.github.com/users/Opentrons/repos","events_url":"https://api.github.com/users/Opentrons/events{/privacy}","received_events_url":"https://api.github.com/users/Opentrons/received_events","type":"Organization","site_admin":false},"repo":{"id":38644841,"name":"opentrons","full_name":"Opentrons/opentrons","owner":{"login":"Opentrons","id":6139147,"avatar_url":"https://avatars2.githubusercontent.com/u/6139147?v=4","gravatar_id":"","url":"https://api.github.com/users/Opentrons","html_url":"https://github.com/Opentrons","followers_url":"https://api.github.com/users/Opentrons/followers","following_url":"https://api.github.com/users/Opentrons/following{/other_user}","gists_url":"https://api.github.com/users/Opentrons/gists{/gist_id}","starred_url":"https://api.github.com/users/Opentrons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Opentrons/subscriptions","organizations_url":"https://api.github.com/users/Opentrons/orgs","repos_url":"https://api.github.com/users/Opentrons/repos","events_url":"https://api.github.com/users/Opentrons/events{/privacy}","received_events_url":"https://api.github.com/users/Opentrons/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Opentrons/opentrons","description":"Python API for writing protocols and running them on Opentrons robots","fork":false,"url":"https://api.github.com/repos/Opentrons/opentrons","forks_url":"https://api.github.com/repos/Opentrons/opentrons/forks","keys_url":"https://api.github.com/repos/Opentrons/opentrons/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Opentrons/opentrons/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Opentrons/opentrons/teams","hooks_url":"https://api.github.com/repos/Opentrons/opentrons/hooks","issue_events_url":"https://api.github.com/repos/Opentrons/opentrons/issues/events{/number}","events_url":"https://api.github.com/repos/Opentrons/opentrons/events","assignees_url":"https://api.github.com/repos/Opentrons/opentrons/assignees{/user}","branches_url":"https://api.github.com/repos/Opentrons/opentrons/branches{/branch}","tags_url":"https://api.github.com/repos/Opentrons/opentrons/tags","blobs_url":"https://api.github.com/repos/Opentrons/opentrons/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Opentrons/opentrons/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Opentrons/opentrons/git/refs{/sha}","trees_url":"https://api.github.com/repos/Opentrons/opentrons/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Opentrons/opentrons/statuses/{sha}","languages_url":"https://api.github.com/repos/Opentrons/opentrons/languages","stargazers_url":"https://api.github.com/repos/Opentrons/opentrons/stargazers","contributors_url":"https://api.github.com/repos/Opentrons/opentrons/contributors","subscribers_url":"https://api.github.com/repos/Opentrons/opentrons/subscribers","subscription_url":"https://api.github.com/repos/Opentrons/opentrons/subscription","commits_url":"https://api.github.com/repos/Opentrons/opentrons/commits{/sha}","git_commits_url":"https://api.github.com/repos/Opentrons/opentrons/git/commits{/sha}","comments_url":"https://api.github.com/repos/Opentrons/opentrons/comments{/number}","issue_comment_url":"https://api.github.com/repos/Opentrons/opentrons/issues/comments{/number}","contents_url":"https://api.github.com/repos/Opentrons/opentrons/contents/{+path}","compare_url":"https://api.github.com/repos/Opentrons/opentrons/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Opentrons/opentrons/merges","archive_url":"https://api.github.com/repos/Opentrons/opentrons/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Opentrons/opentrons/downloads","issues_url":"https://api.github.com/repos/Opentrons/opentrons/issues{/number}","pulls_url":"https://api.github.com/repos/Opentrons/opentrons/pulls{/number}","milestones_url":"https://api.github.com/repos/Opentrons/opentrons/milestones{/number}","notifications_url":"https://api.github.com/repos/Opentrons/opentrons/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Opentrons/opentrons/labels{/name}","releases_url":"https://api.github.com/repos/Opentrons/opentrons/releases{/id}","deployments_url":"https://api.github.com/repos/Opentrons/opentrons/deployments","created_at":"2015-07-06T20:41:01Z","updated_at":"2017-11-16T14:56:28Z","pushed_at":"2017-11-22T16:23:27Z","git_url":"git://github.com/Opentrons/opentrons.git","ssh_url":"git@github.com:Opentrons/opentrons.git","clone_url":"https://github.com/Opentrons/opentrons.git","svn_url":"https://github.com/Opentrons/opentrons","homepage":"","size":17220,"stargazers_count":38,"watchers_count":38,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":25,"mirror_url":null,"archived":false,"open_issues_count":53,"forks":25,"open_issues":53,"watchers":38,"default_branch":"develop"}},"base":{"label":"Opentrons:develop","ref":"develop","sha":"8f96a0b4926516a4036fadec4c80065dae216d5d","user":{"login":"Opentrons","id":6139147,"avatar_url":"https://avatars2.githubusercontent.com/u/6139147?v=4","gravatar_id":"","url":"https://api.github.com/users/Opentrons","html_url":"https://github.com/Opentrons","followers_url":"https://api.github.com/users/Opentrons/followers","following_url":"https://api.github.com/users/Opentrons/following{/other_user}","gists_url":"https://api.github.com/users/Opentrons/gists{/gist_id}","starred_url":"https://api.github.com/users/Opentrons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Opentrons/subscriptions","organizations_url":"https://api.github.com/users/Opentrons/orgs","repos_url":"https://api.github.com/users/Opentrons/repos","events_url":"https://api.github.com/users/Opentrons/events{/privacy}","received_events_url":"https://api.github.com/users/Opentrons/received_events","type":"Organization","site_admin":false},"repo":{"id":38644841,"name":"opentrons","full_name":"Opentrons/opentrons","owner":{"login":"Opentrons","id":6139147,"avatar_url":"https://avatars2.githubusercontent.com/u/6139147?v=4","gravatar_id":"","url":"https://api.github.com/users/Opentrons","html_url":"https://github.com/Opentrons","followers_url":"https://api.github.com/users/Opentrons/followers","following_url":"https://api.github.com/users/Opentrons/following{/other_user}","gists_url":"https://api.github.com/users/Opentrons/gists{/gist_id}","starred_url":"https://api.github.com/users/Opentrons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Opentrons/subscriptions","organizations_url":"https://api.github.com/users/Opentrons/orgs","repos_url":"https://api.github.com/users/Opentrons/repos","events_url":"https://api.github.com/users/Opentrons/events{/privacy}","received_events_url":"https://api.github.com/users/Opentrons/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Opentrons/opentrons","description":"Python API for writing protocols and running them on Opentrons robots","fork":false,"url":"https://api.github.com/repos/Opentrons/opentrons","forks_url":"https://api.github.com/repos/Opentrons/opentrons/forks","keys_url":"https://api.github.com/repos/Opentrons/opentrons/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Opentrons/opentrons/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Opentrons/opentrons/teams","hooks_url":"https://api.github.com/repos/Opentrons/opentrons/hooks","issue_events_url":"https://api.github.com/repos/Opentrons/opentrons/issues/events{/number}","events_url":"https://api.github.com/repos/Opentrons/opentrons/events","assignees_url":"https://api.github.com/repos/Opentrons/opentrons/assignees{/user}","branches_url":"https://api.github.com/repos/Opentrons/opentrons/branches{/branch}","tags_url":"https://api.github.com/repos/Opentrons/opentrons/tags","blobs_url":"https://api.github.com/repos/Opentrons/opentrons/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Opentrons/opentrons/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Opentrons/opentrons/git/refs{/sha}","trees_url":"https://api.github.com/repos/Opentrons/opentrons/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Opentrons/opentrons/statuses/{sha}","languages_url":"https://api.github.com/repos/Opentrons/opentrons/languages","stargazers_url":"https://api.github.com/repos/Opentrons/opentrons/stargazers","contributors_url":"https://api.github.com/repos/Opentrons/opentrons/contributors","subscribers_url":"https://api.github.com/repos/Opentrons/opentrons/subscribers","subscription_url":"https://api.github.com/repos/Opentrons/opentrons/subscription","commits_url":"https://api.github.com/repos/Opentrons/opentrons/commits{/sha}","git_commits_url":"https://api.github.com/repos/Opentrons/opentrons/git/commits{/sha}","comments_url":"https://api.github.com/repos/Opentrons/opentrons/comments{/number}","issue_comment_url":"https://api.github.com/repos/Opentrons/opentrons/issues/comments{/number}","contents_url":"https://api.github.com/repos/Opentrons/opentrons/contents/{+path}","compare_url":"https://api.github.com/repos/Opentrons/opentrons/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Opentrons/opentrons/merges","archive_url":"https://api.github.com/repos/Opentrons/opentrons/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Opentrons/opentrons/downloads","issues_url":"https://api.github.com/repos/Opentrons/opentrons/issues{/number}","pulls_url":"https://api.github.com/repos/Opentrons/opentrons/pulls{/number}","milestones_url":"https://api.github.com/repos/Opentrons/opentrons/milestones{/number}","notifications_url":"https://api.github.com/repos/Opentrons/opentrons/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Opentrons/opentrons/labels{/name}","releases_url":"https://api.github.com/repos/Opentrons/opentrons/releases{/id}","deployments_url":"https://api.github.com/repos/Opentrons/opentrons/deployments","created_at":"2015-07-06T20:41:01Z","updated_at":"2017-11-16T14:56:28Z","pushed_at":"2017-11-22T16:23:27Z","git_url":"git://github.com/Opentrons/opentrons.git","ssh_url":"git@github.com:Opentrons/opentrons.git","clone_url":"https://github.com/Opentrons/opentrons.git","svn_url":"https://github.com/Opentrons/opentrons","homepage":"","size":17220,"stargazers_count":38,"watchers_count":38,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":25,"mirror_url":null,"archived":false,"open_issues_count":53,"forks":25,"open_issues":53,"watchers":38,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/Opentrons/opentrons/pulls/448"},"html":{"href":"https://github.com/Opentrons/opentrons/pull/448"},"issue":{"href":"https://api.github.com/repos/Opentrons/opentrons/issues/448"},"comments":{"href":"https://api.github.com/repos/Opentrons/opentrons/issues/448/comments"},"review_comments":{"href":"https://api.github.com/repos/Opentrons/opentrons/pulls/448/comments"},"review_comment":{"href":"https://api.github.com/repos/Opentrons/opentrons/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Opentrons/opentrons/pulls/448/commits"},"statuses":{"href":"https://api.github.com/repos/Opentrons/opentrons/statuses/51243420037913d4f9f3e34d507d1f59a727ab98"}},"author_association":"NONE","merged":false,"mergeable":true,"rebaseable":true,"mergeable_state":"unstable","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":1,"deletions":1,"changed_files":1}}
{"actor":{"display_login":"astaff"}}