{"action":"opened","number":120,"pull_request":{"url":"https://api.github.com/repos/mozmeao/basket/pulls/120","id":237394485,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM3Mzk0NDg1","html_url":"https://github.com/mozmeao/basket/pull/120","diff_url":"https://github.com/mozmeao/basket/pull/120.diff","patch_url":"https://github.com/mozmeao/basket/pull/120.patch","issue_url":"https://api.github.com/repos/mozmeao/basket/issues/120","number":120,"state":"open","locked":false,"title":"Scheduled weekly dependency update for week 49","user":{"login":"pyup-bot","id":16239342,"node_id":"MDQ6VXNlcjE2MjM5MzQy","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":"\n\n\n\n\n### Update [django-redis](https://pypi.org/project/django-redis) from **4.2.0** to **4.10.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 4.10.0\n   ```\n   --------------\n\nDate: 2018-10-19\n\n- Add support and testing for Django 2.1 and Python 3.7. No actual code changes\n  were required.\n- Add support for redis-py 3.0.\n- Add touch command.\n   ```\n   \n  \n  \n   ### 4.9.1\n   ```\n   -------------\n\nDate: 2018-10-19\n\n- Pin redis version to 2.10.6\n   ```\n   \n  \n  \n   ### 4.9.0\n   ```\n   -------------\n\nDate: 2018-03-01\n\n- Add testing and support for Django 2.0. No actual code changes were required.\n- Escape `KEY_PREFIX` and `VERSION` when used in glob expressions.\n- Improve handling timeouts less than 1ms.\n- Remove fakeredis support.\n- Add datetime, date, time, and timedelta serialization support to the JSON\n  serializer.\n- The deprecated feature of passing `True` as a timeout value is no longer\n  supported.\n- Fix `add()` with a negative timeout to not store key (it is immediately\n  invalid).\n- Remove support for Django &lt; 1.11.\n- Add support for atomic incr if key is not set.\n   ```\n   \n  \n  \n   ### 4.8.0\n   ```\n   -------------\n\nDate: 2017-04-25\n\n- Drop deprecated exception with typo ConnectionInterrumped. Use\n  ConnectionInterrupted instead.\n- Remove many workarounds related to old and not supported versions\n  of django and redis-py.\n- Code cleaning and flake8 compliance fixes.\n- Add better impl for `close` method.\n- Fix compatibility warnings with python 3.6\n   ```\n   \n  \n  \n   ### 4.7.0\n   ```\n   -------------\n\nDate: 2017-01-02\n\n- Add the ability to enable write to slave when master is not available.\n- Add `itersize` parameter to `delete_pattern`.\n   ```\n   \n  \n  \n   ### 4.6.0\n   ```\n   -------------\n\nDate: 2016-11-02\n\n- Fix incorrect behavior of `clear()` method.\n   ```\n   \n  \n  \n   ### 4.5.0\n   ```\n   -------------\n\nDate: 2016-09-21\n\n- Now only support Django 1.8 and above. Support for older versions has been dropped.\n- Remove undocumented and deprecated support for old connection string format.\n- Add support for `PASSWORD` option (useful when the password contains url unsafe\n  characters).\n- Make the package compatible with fake redis.\n- Fix compatibility issues with latest django version (1.10).\n   ```\n   \n  \n  \n   ### 4.4.4\n   ```\n   -------------\n\nDate: 2016-07-25\n\n- Fix possible race condition on incr implementation using\n  lua script (thanks to prokaktus).\n   ```\n   \n  \n  \n   ### 4.4.3\n   ```\n   -------------\n\nDate: 2016-05-17\n\n- Fix minor ttl inconsistencies.\n   ```\n   \n  \n  \n   ### 4.4.2\n   ```\n   -------------\n\nDate: 2016-04-21\n\n- Fix timeout bug (thanks to skorokithakis)\n   ```\n   \n  \n  \n   ### 4.4.1\n   ```\n   -------------\n\nDate: 2016-04-13\n\n- Add additional check for avoid wrong exception on `get_redis_connection`.\n   ```\n   \n  \n  \n   ### 4.4.0\n   ```\n   -------------\n\nDate: 2016-04-12\n\n- Make redis client pluggable (thanks to arnuschky)\n- Add version number inside python module (thanks to BertrandBordage)\n- Fix clear method (thanks to ostcar)\n- Add the ability to specify key prefix on delete and delete_pattern.\n- BREAKING CHANGE: improved compression support (make it more plugable).\n   ```\n   \n  \n  \n   ### 4.3.0\n   ```\n   -------------\n\nDate: 2015-10-31\n\n- Improved exception handling in herd client (thanks to brandoshmando)\n- Fix bug that not allows use generators on delete_many (thanks to ostcar).\n- Remove obsolete code that makes hard dependency to mspack.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/django-redis\n  - Changelog: https://pyup.io/changelogs/django-redis/\n  - Repo: https://github.com/niwibe/django-redis\n</details>\n\n\n\n\n\n### Update [gunicorn](https://pypi.org/project/gunicorn) from **19.7.1** to **19.9.0**.\n\n\n*The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)*\n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/gunicorn\n  - Changelog: https://pyup.io/changelogs/gunicorn/\n  - Homepage: http://gunicorn.org\n</details>\n\n\n\n\n\n### Update [redis](https://pypi.org/project/redis) from **2.10.3** to **3.0.1**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 3.0.0\n   ```\n   BACKWARDS INCOMPATIBLE CHANGES\n    * When using a Lock as a context manager and the lock fails to be acquired\n      a LockError is now raised. This prevents the code block inside the\n      context manager from being executed if the lock could not be acquired.\n    * Renamed LuaLock to Lock.\n    * Removed the pipeline based Lock implementation in favor of the LuaLock\n      implementation.\n    * Only bytes, strings and numbers (ints, longs and floats) are acceptable\n      for keys and values. Previously redis-py attempted to cast other types\n      to str() and store the result. This caused must confusion and frustration\n      when passing boolean values (cast to &#39;True&#39; and &#39;False&#39;) or None values\n      (cast to &#39;None&#39;). It is now the user&#39;s responsibility to cast all\n      key names and values to bytes, strings or numbers before passing the\n      value to redis-py.\n    * The StrictRedis class has been renamed to Redis. StrictRedis will\n      continue to exist as an alias of Redis for the forseeable future.\n    * The legacy Redis client class has been removed. It caused much confusion\n      to users.\n    * ZINCRBY arguments &#39;value&#39; and &#39;amount&#39; have swapped order to match the\n      the Redis server. The new argument order is: keyname, amount, value.\n    * MGET no longer raises an error if zero keys are passed in. Instead an\n      empty list is returned.\n    * MSET and MSETNX now require all keys/values to be specified in a single\n      dictionary argument named mapping. This was changed to allow for future\n      options to these commands in the future.\n    * ZADD now requires all element names/scores be specified in a single\n      dictionary argument named mapping. This was required to allow the NX,\n      XX, CH and INCR options to be specified.\n    * Removed support for EOL Python 2.6 and 3.3. Thanks jdufresne\n  OTHER CHANGES\n    * Added missing DECRBY command. Thanks derek-dchu\n    * CLUSTER INFO and CLUSTER NODES respones are now properly decoded to\n      strings.\n    * Added a &#39;locked()&#39; method to Lock objects. This method returns True\n      if the lock has been acquired and owned by the current process,\n      otherwise False.\n    * EXISTS now supports multiple keys. It&#39;s return value is now the number\n      of keys in the list that exist.\n    * Ensure all commands can accept key names as bytes. This fixes issues\n      with BLPOP, BRPOP and SORT.\n    * All errors resulting from bad user input are raised as DataError\n      exceptions. DataError is a subclass of RedisError so this should be\n      transparent to anyone previously catching these.\n    * Added support for NX, XX, CH and INCR options to ZADD\n    * Added support for the MIGRATE command\n    * Added support for the MEMORY USAGE and MEMORY PURGE commands. Thanks\n      Itamar Haber\n    * Added support for the &#39;asynchronous&#39; argument to FLUSHDB and FLUSHALL\n      commands. Thanks Itamar Haber\n    * Added support for the BITFIELD command. Thanks Charles Leifer and\n      Itamar Haber\n    * Improved performance on pipeline requests with large chunks of data.\n      Thanks tzickel\n    * Fixed test suite to not fail if another client is connected to the\n      server the tests are running against.\n    * Added support for SWAPDB. Thanks Itamar Haber\n    * Added support for all STREAM commands. Thanks Roey Prat and Itamar Haber\n    * SHUTDOWN now accepts the &#39;save&#39; and &#39;nosave&#39; arguments. Thanks\n      dwilliams-kenzan\n    * Added support for ZPOPMAX, ZPOPMIN, BZPOPMAX, BZPOPMIN. Thanks\n      Itamar Haber\n    * Added support for the &#39;type&#39; argument in CLIENT LIST. Thanks Roey Prat\n    * Added support for CLIENT PAUSE. Thanks Roey Prat\n    * Added support for CLIENT ID and CLIENT UNBLOCK. Thanks Itamar Haber\n    * GEODIST now returns a None value when referencing a place that does\n      not exist. Thanks qingping209\n    * Added a ping() method to pubsub objects. Thanks krishan-carbon\n    * Fixed a bug with keys in the INFO dict that contained &#39;:&#39; symbols.\n      Thanks mzalimeni\n    * ssl_cert_reqs now has a default value of &#39;required&#39; by default. This\n      should make connecting to a remote Redis server over SSL more secure.\n      Thanks u2mejc\n    * Fixed the select system call retry compatibility with Python 2.x.\n      Thanks lddubeau\n    * max_connections is now a valid querystring argument for creating\n      connection pools from URLs. Thanks mmaslowskicc\n    * Added the UNLINK command. Thanks yozel\n    * Added socket_type option to Connection for configurability.\n      Thanks garlicnation\n    * Lock.do_acquire now atomically sets acquires the lock and sets the\n      expire value via set(nx=True, px=timeout). Thanks 23doors\n    * Added &#39;count&#39; argument to SPOP. Thanks AlirezaSadeghi\n    * Fixed an issue parsing client_list respones that contained an &#39;=&#39;.\n      Thanks swilly22\n   ```\n   \n  \n  \n   ### 2.10.6\n   ```\n   * Various performance improvements. Thanks cjsimpson\n    * Fixed a bug with SRANDMEMBER where the behavior for `number=0` did\n      not match the spec. Thanks Alex Wang\n    * Added HSTRLEN command. Thanks Alexander Putilin\n    * Added the TOUCH command. Thanks Anis Jonischkeit\n    * Remove unnecessary calls to the server when registering Lua scripts.\n      Thanks Ben Greenberg\n    * SET&#39;s EX and PX arguments now allow values of zero. Thanks huangqiyin\n    * Added PUBSUB {CHANNELS, NUMPAT, NUMSUB} commands. Thanks Angus Pearson\n    * PubSub connections that that encounter `InterruptedError`s now\n      retry automatically. Thanks Carlton Gibson and Seth M. Larson\n    * LPUSH and RPUSH commands run on PyPy now correctly returns the number\n      of items of the list. Thanks Jeong YunWon\n    * Added support to automatically retry socket EINTR errors. Thanks\n      Thomas Steinacher\n    * PubSubWorker threads started with `run_in_thread` are now daemonized\n      so the thread shuts down when the running process goes away. Thanks\n      Keith Ainsworth\n    * Added support for GEO commands. Thanks Pau Freixes, Alex DeBrie and\n      Abraham Toriz\n    * Made client construction from URLs smarter. Thanks Tim Savage\n    * Added support for CLUSTER * commands. Thanks Andy Huang\n    * The RESTORE command now accepts an optional `replace` boolean.\n      Thanks Yoshinari Takaoka\n    * Attempt to connect to a new Sentinel if a TimeoutError occurs. Thanks\n      Bo Lopker\n    * Fixed a bug in the client&#39;s `__getitem__` where a KeyError would be\n      raised if the value returned by the server is an empty string.\n      Thanks Javier Candeira.\n    * Socket timeouts when connecting to a server are now properly raised\n      as TimeoutErrors.\n   ```\n   \n  \n  \n   ### 2.10.5\n   ```\n   * Allow URL encoded parameters in Redis URLs. Characters like a &quot;/&quot; can\n      now be URL encoded and redis-py will correctly decode them. Thanks\n      Paul Keene.\n    * Added support for the WAIT command. Thanks https://github.com/eshizhan\n    * Better shutdown support for the PubSub Worker Thread. It now properly\n      cleans up the connection, unsubscribes from any channels and patterns\n      previously subscribed to and consumes any waiting messages on the socket.\n    * Added the ability to sleep for a brief period in the event of a\n      WatchError occuring. Thanks Joshua Harlow.\n    * Fixed a bug with pipeline error reporting when dealing with characters\n      in error messages that could not be encoded to the connection&#39;s\n      character set. Thanks Hendrik Muhs.\n    * Fixed a bug in Sentinel connections that would inadvertantly connect\n      to the master when the connection pool resets. Thanks\n      https://github.com/df3n5\n    * Better timeout support in Pubsub get_message. Thanks Andy Isaacson.\n    * Fixed a bug with the HiredisParser that would cause the parser to\n      get stuck in an endless loop if a specific number of bytes were\n      delivered from the socket. This fix also increases performance of\n      parsing large responses from the Redis server.\n    * Added support for ZREVRANGEBYLEX.\n    * ConnectionErrors are now raised if Redis refuses a connection due to\n      the maxclients limit being exceeded. Thanks Roman Karpovich.\n    * max_connections can now be set when instantiating client instances.\n      Thanks Ohad Perry.\n   ```\n   \n  \n  \n   ### 2.10.4\n   ```\n   (skipped due to a PyPI snafu)\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/redis\n  - Changelog: https://pyup.io/changelogs/redis/\n  - Repo: https://github.com/andymccurdy/redis-py\n</details>\n\n\n\n\n\n### Update [hiredis](https://pypi.org/project/hiredis) from **0.2.0** to **0.3.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 0.3.0\n   ```\n   * Upgrade hiredis to 0.13.3\n* Add optional &quot;shouldDecode&quot; argument to Reader.gets() (see 77)\n* Add a &quot;has_data&quot; method to Reader objects (see 78)\n* Fix non-utf8 reply parsing causing segmentation fault in Python 3 (see 73)\n* Rename `state` to `hiredis_py_module_state` to avoid conflicts (see 72)\n* Expose len method to retrieve the buffer length (see 61)\n* Fix crash when custom exception raise error (on init) (see 57)\n* incref before PyModule_AddObject which steals references (see 48)\n* Sort list of source files to allow reproducible building (see 47)\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/hiredis\n  - Changelog: https://pyup.io/changelogs/hiredis/\n  - Repo: https://github.com/redis/hiredis-py\n</details>\n\n\n\n\n\n### Update [msgpack-python](https://pypi.org/project/msgpack-python) from **0.4.6** to **0.5.6**.\n\n\n*The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)*\n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/msgpack-python\n  - Homepage: http://msgpack.org/\n</details>\n\n\n\n\n\n### Update [whitenoise](https://pypi.org/project/whitenoise) from **3.3.1** to **4.1.2**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 4.1.2\n   ```\n   ------\n\n * Add correct MIME type for WebAssembly, which is required for files to be\n   executed (thanks `mdboom &lt;https://github.com/mdboom&gt;`_ ).\n * Stop accessing the FILE_CHARSET Django setting which was almost entirely\n   unused and is now deprecated (thanks `timgraham\n   &lt;https://github.com/timgraham&gt;`_).\n   ```\n   \n  \n  \n   ### 4.1.1\n   ```\n   ------\n\n * Fix `bug &lt;https://github.com/evansd/whitenoise/issues/202&gt;`_ in ETag\n   handling (thanks `edmorley &lt;https://github.com/edmorley&gt;`_).\n * Documentation fixes (thanks `jamesbeith &lt;https://github.com/jamesbeith&gt;`_\n   and `mathieusteele &lt;https://github.com/mathieusteele&gt;`_).\n   ```\n   \n  \n  \n   ### 4.1\n   ```\n   ----\n\n * Silenced spurious warning about missing directories when in development (i.e\n   &quot;autorefresh&quot;) mode.\n * Support supplying paths as `Pathlib\n   &lt;https://docs.python.org/3.4/library/pathlib.html&gt;`_ instances, rather than\n   just strings (thanks `browniebroke &lt;https://github.com/browniebroke&gt;`_).\n * Add a new :ref:`CompressedStaticFilesStorage &lt;compression-and-caching&gt;`\n   backend to support applying compression without applying Django&#39;s hash-versioning\n   process.\n * Documentation improvements.\n   ```\n   \n  \n  \n   ### 4.0\n   ```\n   ----\n\n.. note:: **Breaking changes**\n          The latest version of WhiteNoise removes some options which were\n          deprecated in the previous major release:\n\n    * The WSGI integration option for Django\n      (which involved editing ``wsgi.py``) has been removed. Instead, you\n      should add WhiteNoise to your\n      middleware list in ``settings.py`` and remove any reference to WhiteNoise from\n      ``wsgi.py``.\n      See the :ref:`documentation &lt;django-middleware&gt;` for more details. |br|\n      (The :doc:`pure WSGI &lt;base&gt;` integration is still available for non-Django apps.)\n\n    * The ``whitenoise.django.GzipManifestStaticFilesStorage`` alias has now\n      been removed. Instead you should use the correct import path:\n      ``whitenoise.storage.CompressedManifestStaticFilesStorage``.\n\n    If you are not using either of these integration options you should have\n    no issues upgrading to the latest version.\n\nRemoved Python 3.3 Support\n++++++++++++++++++++++++++\n\nRemoved support for Python 3.3 since it&#39;s end of life was in September 2017.\n\n\nIndex file support\n++++++++++++++++++\n\nWhiteNoise now supports serving :ref:`index files &lt;index-files-django&gt;` for\ndirectories (e.g. serving ``/example/index.html`` at ``/example/``). It also\ncreates redirects so that visiting the index file directly, or visiting the URL\nwithout a trailing slash will redirect to the correct URL.\n\n\nRange header support (&quot;byte serving&quot;)\n+++++++++++++++++++++++++++++++++++++\n\nWhiteNoise now respects the HTTP Range header which allows a client to request\nonly part of a file. The main use for this is in serving video files to iOS\ndevices as Safari refuses to play videos unless the server supports the\nRange header.\n\n\nETag support\n++++++++++++\n\nWhiteNoise now adds ETag headers to files using the same algorithm used by\nnginx. This gives slightly better caching behaviour than relying purely on Last\nModified dates (although not as good as creating immutable files using\nsomething like ``ManifestStaticFilesStorage``, which is still the best option\nif you can use it).\n\nIf you need to generate your own ETags headers for any reason you can define a\ncustom :any:`add_headers_function &lt;WHITENOISE_ADD_HEADERS_FUNCTION&gt;`.\n\n\nRemove requirement to run collectstatic\n+++++++++++++++++++++++++++++++++++++++\n\nBy setting :any:`WHITENOISE_USE_FINDERS` to ``True`` files will be served\ndirectly from their original locations (usually in ``STATICFILES_DIRS`` or app\n``static`` subdirectories) without needing to be collected into ``STATIC_ROOT``\nby the collectstatic command. This was\nalways the default behaviour when in ``DEBUG`` mode but previously it wasn&#39;t\npossible to enable this behaviour in production. For small apps which aren&#39;t\nusing the caching and compression features of the more advanced storage\nbackends this simplifies the deployment process by removing the need to run\ncollectstatic as part of the build step -- in fact, it&#39;s now possible not to\nhave any build step at all.\n\n\nCustomisable immutable files test\n+++++++++++++++++++++++++++++++++\n\nWhiteNoise ships with code which detects when you are using Django&#39;s\nManifestStaticFilesStorage backend and sends optimal caching headers for files\nwhich are guaranteed not to change. If you are using a different system for\ngenerating cacheable files then you might need to supply your own function for\ndetecting such files. Previously this required subclassing WhiteNoise, but now\nyou can use the :any:`WHITENOISE_IMMUTABLE_FILE_TEST` setting.\n\n\nFix runserver_nostatic to work with Channels\n++++++++++++++++++++++++++++++++++++++++++++\n\nThe old implementation of :ref:`runserver_nostatic &lt;runserver-nostatic&gt;` (which\ndisables Django&#39;s default static file handling in development) did not work\nwith `Channels`_, which needs its own runserver implementation. The\nrunserver_nostatic command has now been rewritten so that it should work with\nChannels and with any other app which provides its own runserver.\n\n.. _Channels: https://channels.readthedocs.io/\n\n\nReduced storage requirements for static files\n+++++++++++++++++++++++++++++++++++++++++++++\n\nThe new :any:`WHITENOISE_KEEP_ONLY_HASHED_FILES` setting reduces the number of\nfiles in STATIC_ROOT by half by storing files only under their hashed names\n(e.g.  ``app.db8f2edc0c8a.js``), rather than also keeping a copy with the\noriginal name (e.g. ``app.js``).\n\n\n\nImproved start up performance\n+++++++++++++++++++++++++++++\n\nWhen in production mode (i.e. when :any:`autorefresh &lt;WHITENOISE_AUTOREFRESH&gt;`\nis disabled), WhiteNoise scans all static files when the application starts in\norder to be able to serve them as efficiently and securely as possible. For\nmost applications this makes no noticeable difference to start up time, however\nfor applications with very large numbers of static files this process can take\nsome time. In WhiteNoise 4.0 the file scanning code has been rewritten to do\nthe minimum possible amount of filesystem access which should make the start up\nprocess considerably faster.\n\n\nWindows Testing\n+++++++++++++++\n\nWhiteNoise has always aimed to support Windows as well as \\*NIX platforms but\nwe are now able to run the test suite against Windows as part of the CI process\nwhich should ensure that we can maintain Windows compatibility in future.\n\n\nModification times for compressed files\n+++++++++++++++++++++++++++++++++++++++\n\nThe compressed storage backend (which generates Gzip and Brotli compressed\nfiles) now ensures that compressed files have the same modification time as the\noriginals.  This only makes a difference if you are using the compression\nbackend with something other than WhiteNoise to actually serve the files, which\nvery few users do.\n\nReplaced brotlipy with official Brotli Python Package\n+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\nSince the official `Brotli project &lt;https://github.com/google/brotli&gt;`_ offers\na `Brotli Python package &lt;https://pypi.org/project/Brotli/&gt;`_ brotlipy has been\nreplaced with Brotli.\n\nFurthermore a ``brotli`` key has been added to ``extras_require`` which allows\ninstalling WhiteNoise and Brotli together like this:\n\n.. code-block:: bash\n\n    pip install whitenoise[brotli]\n\n\n---------------------------\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/whitenoise\n  - Changelog: https://pyup.io/changelogs/whitenoise/\n  - Homepage: http://whitenoise.evans.io\n</details>\n\n\n\n\n\n### Update [newrelic](https://pypi.org/project/newrelic) from **2.100.0.84** to **4.8.0.110**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 4.8.0.110\n   ```\n   This release of the Python agent adds support for Falcon framework, and includes various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nFeatures\n\n\nAdd support for Falcon web framework\n\nThis release adds support for the Falcon web framework. Data will now be automatically collected for applications using Falcon framework. The data will appear in both APM and Insights and will include performance details as well as information on application errors.\n\n\nBug Fixes\n\n\n&quot;newrelic-admin record_deploy&quot; now functions with proxies.\n\nThe &quot;newrelic-admin record_deploy&quot; command previously did not function when a proxy was defined by the newrelic.ini configuration file or the NEW_RELIC_PROXY_* environment variables. This bug has now been fixed.\nCross Application Tracing HTTP response headers were inserted on a 304 response\n\nWhen cross application tracing is enabled and the agent received a HTTP request from an application utilizing cross application tracing, the agent may have inserted additional response headers on a 304 HTTP response. The agent will no longer insert headers on a 304 response.\n   ```\n   \n  \n  \n   ### 4.6.0.106\n   ```\n   This release of the Python agent includes changes to the agent to enable monitoring of Lambda functions, improves the built-in Sanic instrumentation, and includes various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nFeatures\n\n\nMonitoring of Lambda functions\n\nThis release includes changes to the agent to enable monitoring of Lambda functions. If you are interested in learning more or previewing New Relic Lambda monitoring please email lambda_previewnewrelic.com.\nImprove naming of Sanic HTTPMethodView view handlers\n\nSanic views that were defined using the HTTPMethodView class were previously all named HTTPMethodView.as_view.&lt;locals&gt;.view regardless of the actual class in use. The agent will now name transactions after the actual view handler class.\n\n\nBug Fixes\n\n\nFix ignored error reporting in CherryPy instrumention\n\nWhen missing query parameters, unexpected query parameters, unexpected positional arguments, or duplicate arguments were present in the CherryPy framework, a TypeError exception was recorded even when an ignored response status code (such as a 404) was generated. An error is no longer recorded when it results in the generation of an ignored status code.\nExcluding request.uri from transaction trace attributes hides it in the UI\n\nWhen request.uri is added to either attributes.exclude or transaction_tracer.attributes.exclude, the value will now no longer be sent to New Relic.\nAbility to disable sending request.uri as part of error traces\n\nWhen request.uri is added to either attributes.exclude or error_collector.attributes.exclude, the value will now no longer be sent to New Relic.\nFix tracing of functions returning generators\n\nWhen tracing generators whose parent traces have ended an error was seen in the logs &quot;Transaction ended but current_node is not Sentinel.&quot; This has now been fixed.\n   ```\n   \n  \n  \n   ### 4.4.1.104\n   ```\n   This release of the Python agent contains bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nThe creation of sampled events sometimes raised an exception in Python 3\n\nWhen more events (Transaction, Transaction Error, Custom, or Span) were created than allowed per harvest period in Python 3, sometimes a TypeError: &#39;&lt;&#39; not supported between instances of &#39;dict&#39; and &#39;dict&#39; was raised. This issue has now been fixed.\n   ```\n   \n  \n  \n   ### 4.4.0.103\n   ```\n   This release of the Python agent introduces instrumentation for Sanic, and contains bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nFeatures\n\n\nAdd instrumentation for Sanic framework\n\nData is now automatically collected for applications using the Sanic framework. Data for Sanic applications will appear in both APM and Insights. Additionally, cross application tracing and distributed tracing is supported for incoming requests for Sanic applications. In addition to service maps, Sanic applications will now show the calling application in transaction traces. See the instrumented packages page for more details.\n\n\nBug Fixes\n\n\nExplain plans were not generated when using psycopg2 named cursors\n\nWhen using named cursors in psycopg2, the agent attempted to generate an explain plan using the same named cursor. This resulted in a syntax error when the query was issued to the database. When using the default connection and cursor factories, the agent will now execute the explain query using only unnamed cursors.\nConvert bytes-like SQL statements to strings before obfuscating\n\nIf a bytes-like object is used instead of a string when making a SQL call, a traceback was seen in the logs with TypeError: cannot use a string pattern on a bytes-like object. This issue has now been fixed.\nSave settings to MessageTrace objects\n\nIf an external call using an instrumented http external library (for example requests) was used within a MessageTrace, a traceback was seen in the logs with AttributeError: &#39;MessageTrace&#39; object has no attribute &#39;settings&#39;. This issue has now been fixed.\n   ```\n   \n  \n  \n   ### 4.2.0.100\n   ```\n   This release of the Python agent introduces distributed tracing, adds improvement to our Pyramid instrumentation, adds support for custom CA bundles, and contains bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nFeatures\n\n\nDistributed tracing support\n\nDistributed tracing lets you see the path that a request takes as it travels through your distributed system. By showing the distributed activity through a unified view, you can troubleshoot and understand a complex system better than ever before.\n\nDistributed tracing is available with an APM Pro or equivalent subscription. To see a complete distributed trace, you need to enable the feature on a set of neighboring services. Enabling distributed tracing changes the behavior of some New Relic features, so carefully consult the transition guide before you enable this feature.\n\nTo enable distributed tracing, add distributed_tracing.enabled = true to your newrelic.ini file or use the environment variable NEW_RELIC_DISTRIBUTED_TRACING_ENABLED=true.\nAdd support for tracing Pyramid tweens\n\nPyramid tweens are now automatically timed and added to the transaction detail view. The time spent in a Pyramid tween will be displayed in the transaction breakdown table and in the trace details of a transaction trace.\nProvide configuration option for custom CA bundle\n\nCustomers can now use the ca_bundle_path configuration option or set the NEW_RELIC_CA_BUNDLE_PATH environment variable to set the path to a local CA bundle. This CA bundle will be used to validate the SSL certificate presented by New Relic&#39;s data collection service.\n\n\nBug Fixes\n\n\nCustom Insights event data attached to transactions in excess of 100 events were omitted\n\nThe agent may have failed to send custom event data (record_custom_event) to insights when recorded as part of a Transaction containing over 100 custom events. This issue has now been corrected.\n   ```\n   \n  \n  \n   ### 4.0.0.99\n   ```\n   This release of the Python agent removes previously deprecated APIs, and removes support for Python 2.6 and Python 3.3.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nDeprecations\n\n\nRemoved previously deprecated APIs\n\nThe following APIs have been removed:\n\n\nTransaction.add_user_attribute (use Transaction.add_custom_parameter)\nTransaction.add_user_attributes (use Transaction.add_custom_parameters)\nwrap_callable (use FunctionWrapper)\n\nRemoved support for Python 2.6 and Python 3.3\n\nPython 2.6 and Python 3.3 are no longer supported. Please consider upgrading your application to a supported version of Python in order to continue to receive updates to the Python Agent.\n   ```\n   \n  \n  \n   ### 3.4.0.95\n   ```\n   This release of the Python agent adds support for Python 3.7 and contains various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nSupport Python 3.7\n\nThe New Relic Python Agent now supports Python 3.7.\n\n\nBug Fixes\n\n\nAgent raises a KeyError: &#39;NEW_RELIC_ADMIN_COMMAND&#39; exception causing a crash\n\nUnder certain conditions, using the newrelic-admin wrapper script could cause\nan application to crash shortly after startup with a KeyError exception. The\ncause of the crash has been addressed.\nAgent raises an AttributeError on Python 3 when using WSGI overrides with multiple app names\n\nWhen using WSGI environ overrides to specify multiple app names as described in the docs https://docs.newrelic.com/docs/agents/manage-apm-agents/app-naming/use-m... the agent will raise an AttributeError. This error has been corrected.\nAgent raises an AttributeError exception under rare conditions when halting a trace\n\nUnder certain rare conditions, the agent might raise an exception when trying\nto trace an external call in a transaction that has been forcibly halted.\nThe cause of the exception has been addressed.\nAgent raises a RuntimeError exception under particular conditions when using the Tornado r3 instrumentation\n\nWhen attempting to yield many times from a wrapped tornado.gen.coroutine\nwhen using Tornado&#39;s r3 instrumentation, a RuntimeError due to hitting\nthe maximum recursion limit can occur. The cause of this exception has\nbeen patched.\n   ```\n   \n  \n  \n   ### 3.2.2.94\n   ```\n   This release of the Python agent contains various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nImproved handling of celery max-tasks-per-child\n\nData recorded by the Python Agent may not have been reported when celery was operated with the max-tasks-per-child setting. All data is now reported independent of the max tasks per child setting.\nImprove support for PyMongo v3.x\n\nPyMongo v3 added many new methods on the pymongo.Collection object that did not exist in v2. These methods have now been instrumented. Calls to these methods will now appear in APM.\nScheduling tasks that run after a transaction ends causes an error\n\nCoroutines scheduled to execute after a transaction ends using create_task or ensure_future may have caused the runtime instrumentation error and subsequent crash:\n\nThe transaction already completed meaning a child called complete trace after the trace had been finalized.\n\nCoroutines that execute beyond the end of a transaction will no longer cause an error.\n   ```\n   \n  \n  \n   ### 3.2.1.93\n   ```\n   This release of the Python agent contains various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nDo not run explain plans for psycopg2 connections using the async_ kwarg\n\nAs &quot;async&quot; is now a keyword in Python 3.7, psycopg2 now allows &quot;async_&quot; as an alias for its &quot;async&quot; kwarg for psycopg2.connect as of psycopg2 v2.7.4. Previously, explain plans were attempted for these connections and a traceback would be seen in the logs. This has now been fixed.\nFix traceback when using callbacks as partials in pika consumers\n\nWhen passing a callback that is a functools partial to pika channel consumers, a traceback occurred in some instances. This issue has now been fixed.\ncx_Oracle database calls that use SessionPool objects were not recorded\n\nWhen using the cx_Oracle SessionPool interace, database transactions made through the acquired pool connection may not have been reported. Database transactions that using connections generated by SessionPool are now reported as expected.\nSQL targets for call statements may contain a period\n\nFor a SQL command like CALL foo.bar(:baz), APM would show metrics under the target name foo instead of the full name foo.bar. This has been fixed.\n   ```\n   \n  \n  \n   ### 3.2.0.91\n   ```\n   This release of the Python agent adds the request.uri attribute on transaction events in insights, adds built-in cheroot instrumentation, adds support for recording flask-restful/flask-restplus exceptions, and contains bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nImproved Features\n\n\nAdd request.uri attribute to transaction and error events\n\nThe Python agent will now report request.uri as an attribute on transaction events and error events. To disable this feature, add request.uri to the attributes.exclude list in the newrelic.ini configuration file.\nRecord Flask RESTful and Flask RestPlus exceptions\n\nSince Flask RESTful and Flask RestPlus handle all errors that are raised in their handlers, these errors were not being captured by the normal Flask instrumentation in the Python agent. Exception handling has now been added for these two components.\nAdd instrumentation hooks for the Cheroot WSGI server\n\nAny customers using Cheroot with an unsupported application framework will now see data reported in New Relic APM.\n\n\nBug Fixes\n\n\nFix CherryPy ignore by status code for exceptions using reason phrases\n\nCherryPy accepts string values for HTTPError status (reason phrases). When creating HTTPError exceptions in this way, responses were not properly ignored by status code. Responses generated by HTTPError exceptions using reason phrases are now properly ignored.\nUsing send_file with Flask Compress middleware may have caused an application crash\n\nWhen using browser monitoring auto instrumentation on an application using Flask Compress, the use of the Flask send_file helper to send html files resulted in an application crash. This issue has now been resolved.\nFix incorrect parenting for traces of coroutines scheduled with asyncio gather/ensure_future\n\nCoroutines scheduled with asyncio gather/ensure_future may have been reported as being a child of the wrong function. This issue has now been corrected.\n   ```\n   \n  \n  \n   ### 3.0.0.89\n   ```\n   This release of the Python agent removes previously deprecated APIs, makes SSL communication with New Relic mandatory, and updates support for aiohttp middleware.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nDeprecations\n\n\nRemoved previously deprecated APIs\n\nThe following APIs have been removed:\n\n\ntransaction (use current_transaction)\nname_transaction (use set_transaction_name)\nApplication.record_metric (use Application.record_custom_metric)\nApplication.record_metrics (use Application.record_custom_metrics)\nTransaction.notice_error (use Transaction.record_exception)\nTransaction.record_metric (use Transaction.record_custom_metric)\nTransaction.name_transaction (use Transaction.set_transaction_name)\n\nDeprecate Transaction.add_user_attribute\n\nTransaction.add_user_attribute has been deprecated in favor of Transaction.add_custom_parameter. Transaction.add_user_attribute will be removed in a future release.\nDeprecate Transaction.add_user_attributes\n\nTransaction.add_user_attributes has been deprecated in favor of Transaction.add_custom_parameters. Transaction.add_user_attributes will be removed in a future release.\nDeprecate wrap_callable\n\nwrap_callable has been deprecated in favor of FunctionWrapper. wrap_callable will be removed in a future release.\nRemove data-source admin command\n\nThe platform API (used by newrelic-admin data-source) has been removed. Please use data sources in place of the platform API.\n\n\nSSL\n\nSSL connections to New Relic are now mandatory\n\nPrior to this version, using an SSL connection to New Relic was the default behavior. SSL connections are now enforced (not overrideable).\n\nAIOHTTP Updates\n\n\nAdd automatic tracing of AIOHTTP 3 middleware\n\nIn addition to the old-style middleware previously supported, the AIOHTTP 3 style middleware is now automatically traced as part of the AIOHTTP instrumentation package.\n   ```\n   \n  \n  \n   ### 2.106.1.88\n   ```\n   This release of the Python agent includes a fix for security bulletin nr18-07.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n   ```\n   \n  \n  \n   ### 2.106.0.87\n   ```\n   This release of the Python agent adds support for AIOHTTP version 3.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nImproved AIOHTTP Support\n\n\nSupport for AIOHTTP 3\n\nAIOHTTP major version 3 is now supported by the New Relic Python agent.\n   ```\n   \n  \n  \n   ### 2.104.0.86\n   ```\n   This release of the Python agent adds a deprecation warning for customers that disable SSL, and adds bugfixes for supported async frameworks that use asyncio.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nMandatory SSL\n\n\nDisabling SSL connections to New Relic has been deprecated\n\nSSL connections are enabled by default. In a future release, the option to\ndisable SSL will be removed.\n\n\nBug Fixes\n\n\nUsing asyncio.gather or asyncio.ensure_future now tracks transaction context\n\nPrior to this release, using asyncio.gather or asyncio.ensure_future may\nresult in certain traces (such as external calls) not being reported in the\ntransaction. Traces scheduled with asyncio.gather or asyncio.ensure_future\nfrom within the context of a transaction should now be properly attributed to\nthe transaction.\n   ```\n   \n  \n  \n   ### 2.102.0.85\n   ```\n   This release of the Python agent contains improvements to the time tracing API as well as bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nTime Trace API Improvements\n\n\nTime trace APIs (such as function_trace) can now be used with coroutines\n\nThe following decorator APIs can now be used with native coroutines and generators:\n\n\nfunction_trace\ndatabase_trace\ndatastore_trace\nexternal_trace\nmessage_trace\nmemcache_trace\n\n\nExample:\n\nfunction_trace(name=&#39;my_coroutine&#39;)\nasync def my_coroutine():\n  await asyncio.sleep(0.1)\n\n\nBug Fixes\n\n\ngRPC instrumentation used on Python 2.x can cause a memory leak\n\nWhen using gRPC on Python 2, gRPC futures would not be garbage collected\nresulting in a memory leak. gRPC futures will now be garbage collected.\nInstrumentation for Dropbox v8.0 and newer caused error log messages\n\nDropbox client version 8.0 or higher raised instrumentation errors. These\nerrors did not prevent metrics on Dropbox from being sent. These errors have\nbeen removed.\nValues from negated ranges were sometimes added to ignore_status_codes\n\nNegated status codes not found in the current ignore_status_codes were \nadded if they were part of a range of values. This issue has been addressed.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/newrelic\n  - Changelog: https://pyup.io/changelogs/newrelic/\n  - Homepage: http://newrelic.com/docs/python/new-relic-for-python\n</details>\n\n\n\n\n\n### Update [certifi](https://pypi.org/project/certifi) from **2017.11.5** to **2018.11.29**.\n\n\n*The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)*\n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/certifi\n  - Homepage: https://certifi.io/\n</details>\n\n\n\n\n\n### Update [josepy](https://pypi.org/project/josepy) from **1.0.1** to **1.1.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 1.1.0\n   ```\n   ------------------\n\n* Deprecated support for Python 2.6 and 3.3.\n* Use the ``sign`` and ``verify`` methods when they are available in\n  ``cryptography`` instead of the deprecated methods ``signer`` and\n  ``verifier``.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/josepy\n  - Changelog: https://pyup.io/changelogs/josepy/\n  - Repo: https://github.com/certbot/josepy\n</details>\n\n\n\n\n\n### Update [mozilla-django-oidc](https://pypi.org/project/mozilla-django-oidc) from **0.4.2** to **1.1.2**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 1.1.2\n   ```\n   ++++++++++++++++++\n\n* Fix JWKS handling when OP returns multiple keys\n  Thanks `JustinAzoff`_\n   ```\n   \n  \n  \n   ### 1.1.1\n   ```\n   +++++++++++++++++++\n\n* Fix `is_safe_url` on Django 2.1\n* Fix signature in `authenticate` method to be compatible with Django 2.1\n* Remove legacy code for unsupported Django &lt; 1.11\n  Thanks `SirTyson`_\n   ```\n   \n  \n  \n   ### 1.1.0\n   ```\n   +++++++++++++++++++\n\n* Installation doc fixes\n  Thanks `mklan`_\n* Drop support for unsupported Django 1.8 and Python 3.3.\n* Refactor authentication backend to make it easier to extend\n  Required by DRF support feature.\n* Add DRF support\n  Thanks `anlutro`_\n* Improve local docker environment setup\n* Add flag to allow using unsecured tokens\n* Allow using JWK with optional ``alg``\n  Thanks `Algogator`_\n   ```\n   \n  \n  \n   ### 1.0.0\n   ```\n   ++++++++++++++++++\n\n* Add OIDC_AUTHENTICATION_CALLBACK_URL as a new configuration parameter\n* Fail earlier when JWS algorithm does not OIDC_RP_SIGN_ALGO.\n  Thanks `anlutro`_\n* RS256 verification through ``settings.OIDC_OP_JWKS_ENDPOINT``\n  Thanks `GermanoGuerrini`_\n* Refactor OIDCAuthenticationBackend so that token retrieval methods can be overridden in a subclass when you need to.\n\nBackwards-incompatible changes:\n\n* ``OIDC_OP_LOGOUT_URL_METHOD`` takes a ``request`` parameter now.\n* Changed name of ``RefreshIDToken`` middleware to ``SessionRefresh``.\n\n\n.. _`anlutro`: https://github.com/anlutro\n   ```\n   \n  \n  \n   ### 0.6.0\n   ```\n   ++++++++++++++++++\n\n* Add e2e tests and automation\n* Add caching for exempt URLs\n* Fix logout when session refresh fails\n   ```\n   \n  \n  \n   ### 0.5.0\n   ```\n   ++++++++++++++++++\n\n* Add Django 2.0 support\n* Fix tox configuration\n\nBackwards-incompatible changes:\n\n* Drop Django 1.10 support\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/mozilla-django-oidc\n  - Changelog: https://pyup.io/changelogs/mozilla-django-oidc/\n  - Repo: https://github.com/mozilla/mozilla-django-oidc\n</details>\n\n\n\n\n\n### Update [packaging](https://pypi.org/project/packaging) from **16.8** to **18.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 17.2\n   ```\n   ~~~~~~~~~~~~~~~~\n\n.. note:: This version is not yet released and is under active development.\n   ```\n   \n  \n  \n   ### 17.1\n   ```\n   ~~~~~~~~~~~~~~~~~\n\n* Fix ``utils.canonicalize_version`` when supplying non PEP 440 versions.\n   ```\n   \n  \n  \n   ### 17.0\n   ```\n   ~~~~~~~~~~~~~~~~~\n\n* Drop support for python 2.6, 3.2, and 3.3.\n\n* Define minimal pyparsing version to 2.0.2 (:issue:`91`).\n\n* Add ``epoch``, ``release``, ``pre``, ``dev``, and ``post`` attributes to\n  ``Version`` and ``LegacyVersion`` (:issue:`34`).\n\n* Add ``Version().is_devrelease`` and ``LegacyVersion().is_devrelease`` to\n  make it easy to determine if a release is a development release.\n\n* Add ``utils.canonicalize_version`` to canonicalize version strings or\n  ``Version`` instances (:issue:`121`).\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/packaging\n  - Changelog: https://pyup.io/changelogs/packaging/\n  - Repo: https://github.com/pypa/packaging\n</details>\n\n\n\n\n\n### Update [pyOpenSSL](https://pypi.org/project/pyOpenSSL) from **17.5.0** to **18.0.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 18.0.0\n   ```\n   -------------------\n\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- The minimum ``cryptography`` version is now 2.2.1.\n- Support for Python 2.6 has been dropped.\n\n\nDeprecations:\n^^^^^^^^^^^^^\n\n*none*\n\n\nChanges:\n^^^^^^^^\n\n- Added ``Connection.get_certificate`` to retrieve the local certificate.\n  `733 &lt;https://github.com/pyca/pyopenssl/pull/733&gt;`_\n- ``OpenSSL.SSL.Connection`` now sets ``SSL_MODE_AUTO_RETRY`` by default.\n  `753 &lt;https://github.com/pyca/pyopenssl/pull/753&gt;`_\n- Added ``Context.set_tlsext_use_srtp`` to enable negotiation of SRTP keying material.\n  `734 &lt;https://github.com/pyca/pyopenssl/pull/734&gt;`_\n\n\n----\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/pyopenssl\n  - Changelog: https://pyup.io/changelogs/pyopenssl/\n  - Homepage: https://pyopenssl.org/\n  - Docs: https://pythonhosted.org/pyOpenSSL/\n</details>\n\n\n\n\n\n### Update [pyparsing](https://pypi.org/project/pyparsing) from **2.2.0** to **2.3.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 2.3.0\n   ```\n   -----------------------------\n- NEW SUPPORT FOR UNICODE CHARACTER RANGES\n  This release introduces the pyparsing_unicode namespace class, defining\n  a series of language character sets to simplify the definition of alphas,\n  nums, alphanums, and printables in the following language sets:\n   . Arabic\n   . Chinese\n   . Cyrillic\n   . Devanagari\n   . Greek\n   . Hebrew\n   . Japanese (including Kanji, Katakana, and Hirigana subsets)\n   . Korean\n   . Latin1 (includes 7 and 8-bit Latin characters)\n   . Thai\n   . CJK (combination of Chinese, Japanese, and Korean sets)\n\n  For example, your code can define words using:\n\n    korean_word = Word(pyparsing_unicode.Korean.alphas)\n\n  See their use in the updated examples greetingInGreek.py and\n  greetingInKorean.py.\n\n  This namespace class also offers access to these sets using their\n  unicode identifiers.\n\n- POSSIBLE API CHANGE: Fixed bug where a parse action that explicitly \n  returned the input ParseResults could add another nesting level in\n  the results if the current expression had a results name.\n\n        vals = pp.OneOrMore(pp.pyparsing_common.integer)(&quot;int_values&quot;)\n        \n        def add_total(tokens):\n            tokens[&#39;total&#39;] = sum(tokens)\n            return tokens   this line can be removed\n\n        vals.addParseAction(add_total)\n        print(vals.parseString(&quot;244 23 13 2343&quot;).dump())\n\n  Before the fix, this code would print (note the extra nesting level):\n  \n    [244, 23, 13, 2343]\n    - int_values: [244, 23, 13, 2343]\n      - int_values: [244, 23, 13, 2343]\n      - total: 2623\n    - total: 2623\n\n  With the fix, this code now prints:\n  \n    [244, 23, 13, 2343]\n    - int_values: [244, 23, 13, 2343]\n    - total: 2623\n\n  This fix will change the structure of ParseResults returned if a \n  program defines a parse action that returns the tokens that were \n  sent in. This is not necessary, and statements like &quot;return tokens&quot; \n  in the example above can be safely deleted prior to upgrading to \n  this release, in order to avoid the bug and get the new behavior.\n\n  Reported by seron in Issue 22, nice catch!\n\n- POSSIBLE API CHANGE: Fixed a related bug where a results name \n  erroneously created a second level of hierarchy in the returned \n  ParseResults. The intent for accumulating results names into ParseResults\n  is that, in the absence of Group&#39;ing, all names get merged into a\n  common namespace. This allows us to write:\n  \n       key_value_expr = (Word(alphas)(&quot;key&quot;) + &#39;=&#39; + Word(nums)(&quot;value&quot;))\n       result = key_value_expr.parseString(&quot;a = 100&quot;) \n    \n  and have result structured as {&quot;key&quot;: &quot;a&quot;, &quot;value&quot;: &quot;100&quot;} \n  instead of [{&quot;key&quot;: &quot;a&quot;}, {&quot;value&quot;: &quot;100&quot;}].\n  \n  However, if a named expression is used in a higher-level non-Group \n  expression that *also* has a name, a false sub-level would be created \n  in the namespace:\n\n        num = pp.Word(pp.nums)\n        num_pair = (&quot;[&quot; + (num(&quot;A&quot;) + num(&quot;B&quot;))(&quot;values&quot;) + &quot;]&quot;)\n        U = num_pair.parseString(&quot;[ 10 20 ]&quot;)\n        print(U.dump())\n\n  Since there is no grouping, &quot;A&quot;, &quot;B&quot;, and &quot;values&quot; should all appear\n  at the same level in the results, as:\n  \n        [&#39;[&#39;, &#39;10&#39;, &#39;20&#39;, &#39;]&#39;]\n        - A: &#39;10&#39;\n        - B: &#39;20&#39;\n        - values: [&#39;10&#39;, &#39;20&#39;]\n\n  Instead, an extra level of &quot;A&quot; and &quot;B&quot; show up under &quot;values&quot;:\n  \n        [&#39;[&#39;, &#39;10&#39;, &#39;20&#39;, &#39;]&#39;]\n        - A: &#39;10&#39;\n        - B: &#39;20&#39;\n        - values: [&#39;10&#39;, &#39;20&#39;]\n          - A: &#39;10&#39;\n          - B: &#39;20&#39;\n\n  This bug has been fixed. Now, if this hierarchy is desired, then a\n  Group should be added:\n  \n        num_pair = (&quot;[&quot; + pp.Group(num(&quot;A&quot;) + num(&quot;B&quot;))(&quot;values&quot;) + &quot;]&quot;)\n\n  Giving:\n  \n        [&#39;[&#39;, [&#39;10&#39;, &#39;20&#39;], &#39;]&#39;]\n        - values: [&#39;10&#39;, &#39;20&#39;]\n          - A: &#39;10&#39;\n          - B: &#39;20&#39;\n\n  But in no case should &quot;A&quot; and &quot;B&quot; appear in multiple levels. This bug-fix\n  fixes that.\n  \n  If you have current code which relies on this behavior, then add or remove\n  Groups as necessary to get your intended results structure.\n  \n  Reported by Athanasios Anastasiou.\n\n- IndexError&#39;s raised in parse actions will get explicitly reraised \n  as ParseExceptions that wrap the original IndexError. Since \n  IndexError sometimes occurs as part of pyparsing&#39;s normal parsing \n  logic, IndexErrors that are raised during a parse action may have\n  gotten silently reinterpreted as parsing errors. To retain the \n  information from the IndexError, these exceptions will now be \n  raised as ParseExceptions that reference the original IndexError. \n  This wrapping will only be visible when run under Python3, since it\n  emulates &quot;raise ... from ...&quot; syntax. \n  \n  Addresses Issue 4, reported by guswns0528.\n\n- Added Char class to simplify defining expressions of a single\n  character. (Char(&quot;abc&quot;) is equivalent to Word(&quot;abc&quot;, exact=1))\n\n- Added class PrecededBy to perform lookbehind tests. PrecededBy is \n  used in the same way as FollowedBy, passing in an expression that\n  must occur just prior to the current parse location.\n  \n  For fixed-length expressions like a Literal, Keyword, Char, or a \n  Word with an `exact` or `maxLen` length given, `PrecededBy(expr)` \n  is sufficient. For varying length expressions like a Word with no \n  given maximum length, `PrecededBy` must be constructed with an \n  integer `retreat` argument, as in \n  `PrecededBy(Word(alphas, nums), retreat=10)`, to specify the maximum \n  number of characters pyparsing must look backward to make a match. \n  pyparsing will check all the values from 1 up to retreat characters \n  back from the current parse location.\n\n  When stepping backwards through the input string, PrecededBy does \n  *not* skip over whitespace.\n  \n  PrecededBy can be created with a results name so that, even though\n  it always returns an empty parse result, the result *can* include\n  named results.\n  \n  Idea first suggested in Issue 30 by Freakwill.\n\n- Updated FollowedBy to accept expressions that contain named results,\n  so that results names defined in the lookahead expression will be \n  returned, even though FollowedBy always returns an empty list.\n  Inspired by the same feature implemented in PrecededBy.\n   ```\n   \n  \n  \n   ### 2.2.2\n   ```\n   -------------------------------\n- Fixed bug in SkipTo, if a SkipTo expression that was skipping to\n  an expression that returned a list (such as an And), and the \n  SkipTo was saved as a named result, the named result could be \n  saved as a ParseResults - should always be saved as a string.\n  Issue 28, reported by seron.\n\n- Added simple_unit_tests.py, as a collection of easy-to-follow unit \n  tests for various classes and features of the pyparsing library. \n  Primary intent is more to be instructional than actually rigorous \n  testing. Complex tests can still be added in the unitTests.py file.\n\n- New features added to the Regex class:\n  - optional asGroupList parameter, returns all the capture groups as\n    a list\n  - optional asMatch parameter, returns the raw re.match result\n  - new sub(repl) method, which adds a parse action calling\n    re.sub(pattern, repl, parsed_result). Simplifies creating \n    Regex expressions to be used with transformString. Like re.sub,\n    repl may be an ordinary string (similar to using pyparsing&#39;s \n    replaceWith), or may contain references to capture groups by group \n    number, or may be a callable that takes an re match group and \n    returns a string.\n    \n    For instance:\n        expr = pp.Regex(r&quot;([Hh]\\d):\\s*(.*)&quot;).sub(r&quot;&lt;\\1&gt;\\2&lt;/\\1&gt;&quot;)\n        expr.transformString(&quot;h1: This is the title&quot;)\n\n    will return\n        &lt;h1&gt;This is the title&lt;/h1&gt;\n\n- Fixed omission of LICENSE file in source tarball, also added \n  CODE_OF_CONDUCT.md per GitHub community standards.\n   ```\n   \n  \n  \n   ### 2.2.1\n   ```\n   -------------------------------\n- Applied changes necessary to migrate hosting of pyparsing source\n  over to GitHub. Many thanks for help and contributions from hugovk,\n  jdufresne, and cngkaygusuz among others through this transition,\n  sorry it took me so long!\n\n- Fixed import of collections.abc to address DeprecationWarnings\n  in Python 3.7.\n\n- Updated oc.py example to support function calls in arithmetic\n  expressions; fixed regex for &#39;==&#39; operator; and added packrat\n  parsing. Raised on the pyparsing wiki by Boris Marin, thanks!\n\n- Fixed bug in select_parser.py example, group_by_terms was not\n  reported. Reported on SF bugs by Adam Groszer, thanks Adam!\n\n- Added &quot;Getting Started&quot; section to the module docstring, to \n  guide new users to the most common starting points in pyparsing&#39;s\n  API.\n\n- Fixed bug in Literal and Keyword classes, which erroneously\n  raised IndexError instead of ParseException.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/pyparsing\n  - Changelog: https://pyup.io/changelogs/pyparsing/\n  - Repo: https://github.com/pyparsing/pyparsing/\n  - Docs: https://pythonhosted.org/pyparsing/\n</details>\n\n\n\n\n\n### Update [urllib3](https://pypi.org/project/urllib3) from **1.22** to **1.24.1**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 1.24\n   ```\n   -----------------\n\n* Allow key_server_hostname to be specified when initializing a PoolManager to allow custom SNI to be overridden. (Pull 1449)\n\n* Test against Python 3.7 on AppVeyor. (Pull 1453)\n\n* Early-out ipv6 checks when running on App Engine. (Pull 1450)\n\n* Change ambiguous description of backoff_factor (Pull 1436)\n\n* Add ability to handle multiple Content-Encodings (Issue 1441 and Pull 1442)\n\n* Skip DNS names that can&#39;t be idna-decoded when using pyOpenSSL (Issue 1405).\n\n* Add a server_hostname parameter to HTTPSConnection which allows for\n  overriding the SNI hostname sent in the handshake. (Pull 1397)\n\n* Drop support for EOL Python 2.6 (Pull 1429 and Pull 1430)\n\n* Fixed bug where responses with header Content-Type: message/* erroneously\n  raised HeaderParsingError, resulting in a warning being logged. (Pull 1439)\n\n* Move urllib3 to src/urllib3 (Pull 1409)\n   ```\n   \n  \n  \n   ### 1.23\n   ```\n   -----------------\n\n* Allow providing a list of headers to strip from requests when redirecting\n  to a different host. Defaults to the ``Authorization`` header. Different\n  headers can be set via ``Retry.remove_headers_on_redirect``. (Issue 1316)\n\n* Fix ``util.selectors._fileobj_to_fd`` to accept ``long`` (Issue 1247).\n\n* Dropped Python 3.3 support. (Pull 1242)\n\n* Put the connection back in the pool when calling stream() or read_chunked() on\n  a chunked HEAD response. (Issue 1234)\n\n* Fixed pyOpenSSL-specific ssl client authentication issue when clients\n  attempted to auth via certificate + chain (Issue 1060)\n\n* Add the port to the connectionpool connect print (Pull 1251)\n\n* Don&#39;t use the ``uuid`` module to create multipart data boundaries. (Pull 1380)\n\n* ``read_chunked()`` on a closed response returns no chunks. (Issue 1088)\n\n* Add Python 2.6 support to ``contrib.securetransport`` (Pull 1359)\n\n* Added support for auth info in url for SOCKS proxy (Pull 1363)\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/urllib3\n  - Changelog: https://pyup.io/changelogs/urllib3/\n  - Docs: https://urllib3.readthedocs.io/\n</details>\n\n\n\n\n\n### Update [greenlet](https://pypi.org/project/greenlet) from **0.4.13** to **0.4.15**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 0.4.15\n   ```\n   ===========\n- Support for RISC-V architecture\n- Workaround a gcc bug on ppc64\n   ```\n   \n  \n  \n   ### 0.4.14\n   ```\n   ======\n- Support for C-SKY architecture\n- Fixed support for ppc64 ABI\n- Fixed support for Python 3.7\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/greenlet\n  - Changelog: https://pyup.io/changelogs/greenlet/\n  - Repo: https://github.com/python-greenlet/greenlet\n  - Docs: https://pythonhosted.org/greenlet/\n</details>\n\n\n\n\n\n### Update [flake8](https://pypi.org/project/flake8) from **2.0** to **3.6.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 3.6.0\n   ```\n   -------------------\n\nYou can view the `3.6.0 milestone`_ on GitLab for more details.\n\nNew Dependency Information\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- pycodestyle has been updated to &gt;= 2.4.0, &lt; 2.5.0 (See also `GitLab381`_,\n  `GitLab415`_, `GitLab!212`_, `GitLab!230`_, `GitLab!231`_)\n\n- Pyflakes has been updated to &gt;= 2.0.0, &lt; 2.1.0 (See also `GitLab422`_,\n  `GitLab!239`_)\n\n- flake8 requires python 2.x &gt;= 2.7 or python 3.x &gt;= 3.4 (See also\n  `GitLab!225`_)\n\nFeatures\n~~~~~~~~\n\n- Add ``paths`` to allow local plugins to exist outside of ``sys.path`` (See\n  also `GitLab379`_, `GitLab!211`_)\n\n- Copy ``setup.cfg`` files to the temporary git hook execution directory (See\n  also `GitLab!215`_)\n\n- Only skip a file if `` flake8: noqa`` is on a line by itself (See also\n  `GitLab453`_, `GitLab!219`_)\n\n- Provide a better user experience for broken plugins (See also `GitLab!221`_)\n\n- Report ``E902`` when a file passed on the command line does not exist (See\n  also `GitLab405`_, `GitLab!227`_)\n\n- Add ``--extend-ignore`` for extending the default ``ignore`` instead of\n  overriding it (See also `GitLab!233`_)\n\nBugs Fixed\n~~~~~~~~~~\n\n- Respect a formatter&#39;s newline setting when printing (See also `GitLab!222`_)\n\n- Fix leaking of processes in the legacy api (See also `GitLab410`_,\n  `GitLab!228`_)\n\n- Fix a ``SyntaxWarning`` for an invalid escape sequence (See also\n  `GitLab!244`_)\n\n- Fix ``DeprecationWarning`` due to import of ``abc`` classes from the\n  ``collections`` module (See also `GitLab!249`_)\n\n- Defer ``setuptools`` import to improve flake8 startup time (See also\n  `GitLab365`_, `GitLab!250`_)\n\n- Fix inconsistent line endings in ``FileProcessor.lines`` when running under\n  python 3.x (See also `GitLab457`_, `GitLab!255`_)\n\n\n.. all links\n.. _3.6.0 milestone:\n    https://gitlab.com/pycqa/flake8/milestones/21\n\n.. issue links\n.. _GitLab365:\n    https://gitlab.com/pycqa/flake8/issues/365\n.. _GitLab379:\n    https://gitlab.com/pycqa/flake8/issues/379\n.. _GitLab381:\n    https://gitlab.com/pycqa/flake8/issues/381\n.. _GitLab405:\n    https://gitlab.com/pycqa/flake8/issues/405\n.. _GitLab410:\n    https://gitlab.com/pycqa/flake8/issues/410\n.. _GitLab415:\n    https://gitlab.com/pycqa/flake8/issues/415\n.. _GitLab422:\n    https://gitlab.com/pycqa/flake8/issues/422\n.. _GitLab453:\n    https://gitlab.com/pycqa/flake8/issues/453\n.. _GitLab457:\n    https://gitlab.com/pycqa/flake8/issues/457\n\n.. merge request links\n.. _GitLab!211:\n    https://gitlab.com/pycqa/flake8/merge_requests/211\n.. _GitLab!212:\n    https://gitlab.com/pycqa/flake8/merge_requests/212\n.. _GitLab!215:\n    https://gitlab.com/pycqa/flake8/merge_requests/215\n.. _GitLab!219:\n    https://gitlab.com/pycqa/flake8/merge_requests/219\n.. _GitLab!221:\n    https://gitlab.com/pycqa/flake8/merge_requests/221\n.. _GitLab!222:\n    https://gitlab.com/pycqa/flake8/merge_requests/222\n.. _GitLab!225:\n    https://gitlab.com/pycqa/flake8/merge_requests/225\n.. _GitLab!227:\n    https://gitlab.com/pycqa/flake8/merge_requests/227\n.. _GitLab!228:\n    https://gitlab.com/pycqa/flake8/merge_requests/228\n.. _GitLab!230:\n    https://gitlab.com/pycqa/flake8/merge_requests/230\n.. _GitLab!231:\n    https://gitlab.com/pycqa/flake8/merge_requests/231\n.. _GitLab!233:\n    https://gitlab.com/pycqa/flake8/merge_requests/233\n.. _GitLab!239:\n    https://gitlab.com/pycqa/flake8/merge_requests/239\n.. _GitLab!244:\n    https://gitlab.com/pycqa/flake8/merge_requests/244\n.. _GitLab!249:\n    https://gitlab.com/pycqa/flake8/merge_requests/249\n.. _GitLab!250:\n    https://gitlab.com/pycqa/flake8/merge_requests/250\n.. _GitLab!255:\n    https://gitlab.com/pycqa/flake8/merge_requests/255\n   ```\n   \n  \n  \n   ### 3.5.0\n   ```\n   -------------------\n\nYou can view the `3.5.0 milestone`_ on GitLab for more details.\n\nNew Dependency Information\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Allow for PyFlakes 1.6.0 (See also `GitLab359`_)\n\n- Start using new PyCodestyle checks for bare excepts and ambiguous identifier\n  (See also `GitLab361`_)\n\nFeatures\n~~~~~~~~\n\n- Print out information about configuring VCS hooks (See also `GitLab335`_)\n\n- Allow users to develop plugins &quot;local&quot; to a repository without using\n  setuptools. See our documentation on local plugins for more information.\n  (See also `GitLab357`_)\n\nBugs Fixed\n~~~~~~~~~~\n\n- Catch and helpfully report ``UnicodeDecodeError``\\ s when parsing\n  configuration files. (See also `GitLab358`_)\n\n\n.. all links\n.. _3.5.0 milestone:\n    https://gitlab.com/pycqa/flake8/milestones/20\n\n.. issue links\n.. _GitLab335:\n    https://gitlab.com/pycqa/flake8/issues/335\n.. _GitLab357:\n    https://gitlab.com/pycqa/flake8/issues/357\n.. _GitLab358:\n    https://gitlab.com/pycqa/flake8/issues/358\n.. _GitLab359:\n    https://gitlab.com/pycqa/flake8/issues/359\n.. _GitLab361:\n    https://gitlab.com/pycqa/flake8/issues/361\n\n.. merge request links\n   ```\n   \n  \n  \n   ### 3.4.1\n   ```\n   -------------------\n\nYou can view the `3.4.1 milestone`_ on GitLab for more details.\n\n- Fix minor regression when users specify only a ``--select`` l","created_at":"2018-12-10T16:59:37Z","updated_at":"2018-12-10T16:59:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/mozmeao/basket/pulls/120/commits","review_comments_url":"https://api.github.com/repos/mozmeao/basket/pulls/120/comments","review_comment_url":"https://api.github.com/repos/mozmeao/basket/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mozmeao/basket/issues/120/comments","statuses_url":"https://api.github.com/repos/mozmeao/basket/statuses/0cf2f597ddf272d7a04f9698592467b0ddb4342b","head":{"label":"mozmeao:pyup-scheduled-update-2018-12-10","ref":"pyup-scheduled-update-2018-12-10","sha":"0cf2f597ddf272d7a04f9698592467b0ddb4342b","user":{"login":"mozmeao","id":17653958,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3NjUzOTU4","avatar_url":"https://avatars2.githubusercontent.com/u/17653958?v=4","gravatar_id":"","url":"https://api.github.com/users/mozmeao","html_url":"https://github.com/mozmeao","followers_url":"https://api.github.com/users/mozmeao/followers","following_url":"https://api.github.com/users/mozmeao/following{/other_user}","gists_url":"https://api.github.com/users/mozmeao/gists{/gist_id}","starred_url":"https://api.github.com/users/mozmeao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozmeao/subscriptions","organizations_url":"https://api.github.com/users/mozmeao/orgs","repos_url":"https://api.github.com/users/mozmeao/repos","events_url":"https://api.github.com/users/mozmeao/events{/privacy}","received_events_url":"https://api.github.com/users/mozmeao/received_events","type":"Organization","site_admin":false},"repo":{"id":62744312,"node_id":"MDEwOlJlcG9zaXRvcnk2Mjc0NDMxMg==","name":"basket","full_name":"mozmeao/basket","private":false,"owner":{"login":"mozmeao","id":17653958,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3NjUzOTU4","avatar_url":"https://avatars2.githubusercontent.com/u/17653958?v=4","gravatar_id":"","url":"https://api.github.com/users/mozmeao","html_url":"https://github.com/mozmeao","followers_url":"https://api.github.com/users/mozmeao/followers","following_url":"https://api.github.com/users/mozmeao/following{/other_user}","gists_url":"https://api.github.com/users/mozmeao/gists{/gist_id}","starred_url":"https://api.github.com/users/mozmeao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozmeao/subscriptions","organizations_url":"https://api.github.com/users/mozmeao/orgs","repos_url":"https://api.github.com/users/mozmeao/repos","events_url":"https://api.github.com/users/mozmeao/events{/privacy}","received_events_url":"https://api.github.com/users/mozmeao/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/mozmeao/basket","description":"Mozilla's email newsletter subscription management API service","fork":false,"url":"https://api.github.com/repos/mozmeao/basket","forks_url":"https://api.github.com/repos/mozmeao/basket/forks","keys_url":"https://api.github.com/repos/mozmeao/basket/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozmeao/basket/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozmeao/basket/teams","hooks_url":"https://api.github.com/repos/mozmeao/basket/hooks","issue_events_url":"https://api.github.com/repos/mozmeao/basket/issues/events{/number}","events_url":"https://api.github.com/repos/mozmeao/basket/events","assignees_url":"https://api.github.com/repos/mozmeao/basket/assignees{/user}","branches_url":"https://api.github.com/repos/mozmeao/basket/branches{/branch}","tags_url":"https://api.github.com/repos/mozmeao/basket/tags","blobs_url":"https://api.github.com/repos/mozmeao/basket/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozmeao/basket/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozmeao/basket/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozmeao/basket/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozmeao/basket/statuses/{sha}","languages_url":"https://api.github.com/repos/mozmeao/basket/languages","stargazers_url":"https://api.github.com/repos/mozmeao/basket/stargazers","contributors_url":"https://api.github.com/repos/mozmeao/basket/contributors","subscribers_url":"https://api.github.com/repos/mozmeao/basket/subscribers","subscription_url":"https://api.github.com/repos/mozmeao/basket/subscription","commits_url":"https://api.github.com/repos/mozmeao/basket/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozmeao/basket/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozmeao/basket/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozmeao/basket/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozmeao/basket/contents/{+path}","compare_url":"https://api.github.com/repos/mozmeao/basket/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozmeao/basket/merges","archive_url":"https://api.github.com/repos/mozmeao/basket/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozmeao/basket/downloads","issues_url":"https://api.github.com/repos/mozmeao/basket/issues{/number}","pulls_url":"https://api.github.com/repos/mozmeao/basket/pulls{/number}","milestones_url":"https://api.github.com/repos/mozmeao/basket/milestones{/number}","notifications_url":"https://api.github.com/repos/mozmeao/basket/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozmeao/basket/labels{/name}","releases_url":"https://api.github.com/repos/mozmeao/basket/releases{/id}","deployments_url":"https://api.github.com/repos/mozmeao/basket/deployments","created_at":"2016-07-06T18:30:40Z","updated_at":"2018-11-29T17:07:56Z","pushed_at":"2018-12-10T16:59:38Z","git_url":"git://github.com/mozmeao/basket.git","ssh_url":"git@github.com:mozmeao/basket.git","clone_url":"https://github.com/mozmeao/basket.git","svn_url":"https://github.com/mozmeao/basket","homepage":null,"size":1197,"stargazers_count":4,"watchers_count":4,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"archived":false,"open_issues_count":12,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0","node_id":"MDc6TGljZW5zZTE0"},"forks":7,"open_issues":12,"watchers":4,"default_branch":"master"}},"base":{"label":"mozmeao:master","ref":"master","sha":"dbb354771818f25ff46573a22ef50ff91f3e940b","user":{"login":"mozmeao","id":17653958,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3NjUzOTU4","avatar_url":"https://avatars2.githubusercontent.com/u/17653958?v=4","gravatar_id":"","url":"https://api.github.com/users/mozmeao","html_url":"https://github.com/mozmeao","followers_url":"https://api.github.com/users/mozmeao/followers","following_url":"https://api.github.com/users/mozmeao/following{/other_user}","gists_url":"https://api.github.com/users/mozmeao/gists{/gist_id}","starred_url":"https://api.github.com/users/mozmeao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozmeao/subscriptions","organizations_url":"https://api.github.com/users/mozmeao/orgs","repos_url":"https://api.github.com/users/mozmeao/repos","events_url":"https://api.github.com/users/mozmeao/events{/privacy}","received_events_url":"https://api.github.com/users/mozmeao/received_events","type":"Organization","site_admin":false},"repo":{"id":62744312,"node_id":"MDEwOlJlcG9zaXRvcnk2Mjc0NDMxMg==","name":"basket","full_name":"mozmeao/basket","private":false,"owner":{"login":"mozmeao","id":17653958,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3NjUzOTU4","avatar_url":"https://avatars2.githubusercontent.com/u/17653958?v=4","gravatar_id":"","url":"https://api.github.com/users/mozmeao","html_url":"https://github.com/mozmeao","followers_url":"https://api.github.com/users/mozmeao/followers","following_url":"https://api.github.com/users/mozmeao/following{/other_user}","gists_url":"https://api.github.com/users/mozmeao/gists{/gist_id}","starred_url":"https://api.github.com/users/mozmeao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mozmeao/subscriptions","organizations_url":"https://api.github.com/users/mozmeao/orgs","repos_url":"https://api.github.com/users/mozmeao/repos","events_url":"https://api.github.com/users/mozmeao/events{/privacy}","received_events_url":"https://api.github.com/users/mozmeao/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/mozmeao/basket","description":"Mozilla's email newsletter subscription management API service","fork":false,"url":"https://api.github.com/repos/mozmeao/basket","forks_url":"https://api.github.com/repos/mozmeao/basket/forks","keys_url":"https://api.github.com/repos/mozmeao/basket/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mozmeao/basket/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mozmeao/basket/teams","hooks_url":"https://api.github.com/repos/mozmeao/basket/hooks","issue_events_url":"https://api.github.com/repos/mozmeao/basket/issues/events{/number}","events_url":"https://api.github.com/repos/mozmeao/basket/events","assignees_url":"https://api.github.com/repos/mozmeao/basket/assignees{/user}","branches_url":"https://api.github.com/repos/mozmeao/basket/branches{/branch}","tags_url":"https://api.github.com/repos/mozmeao/basket/tags","blobs_url":"https://api.github.com/repos/mozmeao/basket/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mozmeao/basket/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mozmeao/basket/git/refs{/sha}","trees_url":"https://api.github.com/repos/mozmeao/basket/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mozmeao/basket/statuses/{sha}","languages_url":"https://api.github.com/repos/mozmeao/basket/languages","stargazers_url":"https://api.github.com/repos/mozmeao/basket/stargazers","contributors_url":"https://api.github.com/repos/mozmeao/basket/contributors","subscribers_url":"https://api.github.com/repos/mozmeao/basket/subscribers","subscription_url":"https://api.github.com/repos/mozmeao/basket/subscription","commits_url":"https://api.github.com/repos/mozmeao/basket/commits{/sha}","git_commits_url":"https://api.github.com/repos/mozmeao/basket/git/commits{/sha}","comments_url":"https://api.github.com/repos/mozmeao/basket/comments{/number}","issue_comment_url":"https://api.github.com/repos/mozmeao/basket/issues/comments{/number}","contents_url":"https://api.github.com/repos/mozmeao/basket/contents/{+path}","compare_url":"https://api.github.com/repos/mozmeao/basket/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mozmeao/basket/merges","archive_url":"https://api.github.com/repos/mozmeao/basket/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mozmeao/basket/downloads","issues_url":"https://api.github.com/repos/mozmeao/basket/issues{/number}","pulls_url":"https://api.github.com/repos/mozmeao/basket/pulls{/number}","milestones_url":"https://api.github.com/repos/mozmeao/basket/milestones{/number}","notifications_url":"https://api.github.com/repos/mozmeao/basket/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mozmeao/basket/labels{/name}","releases_url":"https://api.github.com/repos/mozmeao/basket/releases{/id}","deployments_url":"https://api.github.com/repos/mozmeao/basket/deployments","created_at":"2016-07-06T18:30:40Z","updated_at":"2018-11-29T17:07:56Z","pushed_at":"2018-12-10T16:59:38Z","git_url":"git://github.com/mozmeao/basket.git","ssh_url":"git@github.com:mozmeao/basket.git","clone_url":"https://github.com/mozmeao/basket.git","svn_url":"https://github.com/mozmeao/basket","homepage":null,"size":1197,"stargazers_count":4,"watchers_count":4,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"archived":false,"open_issues_count":12,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0","node_id":"MDc6TGljZW5zZTE0"},"forks":7,"open_issues":12,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mozmeao/basket/pulls/120"},"html":{"href":"https://github.com/mozmeao/basket/pull/120"},"issue":{"href":"https://api.github.com/repos/mozmeao/basket/issues/120"},"comments":{"href":"https://api.github.com/repos/mozmeao/basket/issues/120/comments"},"review_comments":{"href":"https://api.github.com/repos/mozmeao/basket/pulls/120/comments"},"review_comment":{"href":"https://api.github.com/repos/mozmeao/basket/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mozmeao/basket/pulls/120/commits"},"statuses":{"href":"https://api.github.com/repos/mozmeao/basket/statuses/0cf2f597ddf272d7a04f9698592467b0ddb4342b"}},"author_association":"NONE","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":74,"additions":321,"deletions":298,"changed_files":4}}
{"actor":{"display_login":"pyup-bot"}}