payload: {"action":"closed","number":424,"pull_request":{"url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls/424","id":317639252,"node_id":"MDExOlB1bGxSZXF1ZXN0MzE3NjM5MjUy","html_url":"https://github.com/rehandalal/rehandalaldotcom/pull/424","diff_url":"https://github.com/rehandalal/rehandalaldotcom/pull/424.diff","patch_url":"https://github.com/rehandalal/rehandalaldotcom/pull/424.patch","issue_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues/424","number":424,"state":"closed","locked":false,"title":"Scheduled daily dependency update on Sunday","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 [certifi](https://pypi.org/project/certifi) from **2018.4.16** to **2019.9.11**.\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 [click](https://pypi.org/project/click) from **6.7** to **7.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 7.0\n   ```\n   -----------\n\nReleased 2018-09-25\n\n-   Drop support for Python 2.6 and 3.3. (`967`_, `976`_)\n-   Wrap ``click.Choice``&#39;s missing message. (`202`_, `1000`_)\n-   Add native ZSH autocompletion support. (`323`_, `865`_)\n-   Document that ANSI color info isn&#39;t parsed from bytearrays in\n    Python 2. (`334`_)\n-   Document byte-stripping behavior of ``CliRunner``. (`334`_,\n    `1010`_)\n-   Usage errors now hint at the ``--help`` option. (`393`_, `557`_)\n-   Implement streaming pager. (`409`_, `889`_)\n-   Extract bar formatting to its own method. (`414`_)\n-   Add ``DateTime`` type for converting input in given date time\n    formats. (`423`_)\n-   ``secho``&#39;s first argument can now be ``None``, like in ``echo``.\n    (`424`_)\n-   Fixes a ``ZeroDivisionError`` in ``ProgressBar.make_step``, when the\n    arg passed to the first call of ``ProgressBar.update`` is 0.\n    (`447`_, `1012`_)\n-   Show progressbar only if total execution time is visible. (`487`_)\n-   Added the ability to hide commands and options from help. (`500`_)\n-   Document that options can be ``required=True``. (`514`_, `1022`_)\n-   Non-standalone calls to ``Context.exit`` return the exit code,\n    rather than calling ``sys.exit``. (`533`_, `667`_, `1098`_)\n-   ``click.getchar()`` returns Unicode in Python 3 on Windows,\n    consistent with other platforms. (`537`_, `821`_, `822`_,\n    `1088`_, `1108`_)\n-   Added ``FloatRange`` type. (`538`_, `553`_)\n-   Added support for bash completion of ``type=click.Choice`` for\n    ``Options`` and ``Arguments``. (`535`_, `681`_)\n-   Only allow one positional arg for ``Argument`` parameter\n    declaration. (`568`_, `574`_, `1014`_)\n-   Add ``case_sensitive=False`` as an option to Choice. (`569`_)\n-   ``click.getchar()`` correctly raises ``KeyboardInterrupt`` on &quot;^C&quot;\n    and ``EOFError`` on &quot;^D&quot; on Linux. (`583`_, `1115`_)\n-   Fix encoding issue with ``click.getchar(echo=True)`` on Linux.\n    (`1115`_)\n-   ``param_hint`` in errors now derived from param itself. (`598`_,\n    `704`_, `709`_)\n-   Add a test that ensures that when an argument is formatted into a\n    usage error, its metavar is used, not its name. (`612`_)\n-   Allow setting ``prog_name`` as extra in ``CliRunner.invoke``.\n    (`616`_, `999`_)\n-   Help text taken from docstrings truncates at the ``\\f`` form feed\n    character, useful for hiding Sphinx-style parameter documentation.\n    (`629`_, `1091`_)\n-   ``launch`` now works properly under Cygwin. (`650`_)\n-   Update progress after iteration. (`651`_, `706`_)\n-   ``CliRunner.invoke`` now may receive ``args`` as a string\n    representing a Unix shell command. (`664`_)\n-   Make ``Argument.make_metavar()`` default to type metavar. (`675`_)\n-   Add documentation for ``ignore_unknown_options``. (`684`_)\n-   Add bright colors support for ``click.style`` and fix the reset\n    option for parameters ``fg`` and ``bg``. (`703`_, `809`_)\n-   Add ``show_envvar`` for showing environment variables in help.\n    (`710`_)\n-   Avoid ``BrokenPipeError`` during interpreter shutdown when stdout or\n    stderr is a closed pipe. (`712`_, `1106`_)\n-   Document customizing option names. (`725`_, `1016`_)\n-   Disable ``sys._getframes()`` on Python interpreters that don&#39;t\n    support it. (`728`_)\n-   Fix bug in test runner when calling ``sys.exit`` with ``None``.\n    (`739`_)\n-   Clarify documentation on command line options. (`741`_, `1003`_)\n-   Fix crash on Windows console. (`744`_)\n-   Fix bug that caused bash completion to give improper completions on\n    chained commands. (`754`_, `774`_)\n-   Added support for dynamic bash completion from a user-supplied\n    callback. (`755`_)\n-   Added support for bash completions containing spaces. (`773`_)\n-   Allow autocompletion function to determine whether or not to return\n    completions that start with the incomplete argument. (`790`_,\n    `806`_)\n-   Fix option naming routine to match documentation and be\n    deterministic. (`793`_, `794`_)\n-   Fix path validation bug. (`795`_, `1020`_)\n-   Add test and documentation for ``Option`` naming: functionality.\n    (`799`_)\n-   Update doc to match arg name for ``path_type``. (`801`_)\n-   Raw strings added so correct escaping occurs. (`807`_)\n-   Fix 16k character limit of ``click.echo`` on Windows. (`816`_,\n    `819`_)\n-   Overcome 64k character limit when writing to binary stream on\n    Windows 7. (`825`_, `830`_)\n-   Add bool conversion for &quot;t&quot; and &quot;f&quot;. (`842`_)\n-   ``NoSuchOption`` errors take ``ctx`` so that ``--help`` hint gets\n    printed in error output. (`860`_)\n-   Fixed the behavior of Click error messages with regards to Unicode\n    on 2.x and 3.x. Message is now always Unicode and the str and\n    Unicode special methods work as you expect on that platform.\n    (`862`_)\n-   Progress bar now uses stderr by default. (`863`_)\n-   Add support for auto-completion documentation. (`866`_, `869`_)\n-   Allow ``CliRunner`` to separate stdout and stderr. (`868`_)\n-   Fix variable precedence. (`873`_, `874`_)\n-   Fix invalid escape sequences. (`877`_)\n-   Fix ``ResourceWarning`` that occurs during some tests. (`878`_)\n-   When detecting a misconfigured locale, don&#39;t fail if the ``locale``\n    command fails. (`880`_)\n-   Add ``case_sensitive=False`` as an option to ``Choice`` types.\n    (`887`_)\n-   Force stdout/stderr writable. This works around issues with badly\n    patched standard streams like those from Jupyter. (`918`_)\n-   Fix completion of subcommand options after last argument (`919`_,\n    `930`_)\n-   ``_AtomicFile`` now uses the ``realpath`` of the original filename\n    so that changing the working directory does not affect it.\n    (`920`_)\n-   Fix incorrect completions when defaults are present (`925`_,\n    `930`_)\n-   Add copy option attrs so that custom classes can be re-used.\n    (`926`_, `994`_)\n-   &quot;x&quot; and &quot;a&quot; file modes now use stdout when file is ``&quot;-&quot;``.\n    (`929`_)\n-   Fix missing comma in ``__all__`` list. (`935`_)\n-   Clarify how parameters are named. (`949`_, `1009`_)\n-   Stdout is now automatically set to non blocking. (`954`_)\n-   Do not set options twice. (`962`_)\n-   Move ``fcntl`` import. (`965`_)\n-   Fix Google App Engine ``ImportError``. (`995`_)\n-   Better handling of help text for dynamic default option values.\n    (`996`_)\n-   Fix ``get_winter_size()`` so it correctly returns ``(0,0)``.\n    (`997`_)\n-   Add test case checking for custom param type. (`1001`_)\n-   Allow short width to address cmd formatting. (`1002`_)\n-   Add details about Python version support. (`1004`_)\n-   Added deprecation flag to commands. (`1005`_)\n-   Fixed issues where ``fd`` was undefined. (`1007`_)\n-   Fix formatting for short help. (`1008`_)\n-   Document how ``auto_envvar_prefix`` works with command groups.\n    (`1011`_)\n-   Don&#39;t add newlines by default for progress bars. (`1013`_)\n-   Use Python sorting order for ZSH completions. (`1047`_, `1059`_)\n-   Document that parameter names are converted to lowercase by default.\n    (`1055`_)\n-   Subcommands that are named by the function now automatically have\n    the underscore replaced with a dash. If you register a function\n    named ``my_command`` it becomes ``my-command`` in the command line\n    interface.\n-   Hide hidden commands and options from completion. (`1058`_,\n    `1061`_)\n-   Fix absolute import blocking Click from being vendored into a\n    project on Windows. (`1068`_, `1069`_)\n-   Fix issue where a lowercase ``auto_envvar_prefix`` would not be\n    converted to uppercase. (`1105`_)\n\n.. _202: https://github.com/pallets/click/issues/202\n.. _323: https://github.com/pallets/click/issues/323\n.. _334: https://github.com/pallets/click/issues/334\n.. _393: https://github.com/pallets/click/issues/393\n.. _409: https://github.com/pallets/click/issues/409\n.. _414: https://github.com/pallets/click/pull/414\n.. _423: https://github.com/pallets/click/pull/423\n.. _424: https://github.com/pallets/click/pull/424\n.. _447: https://github.com/pallets/click/issues/447\n.. _487: https://github.com/pallets/click/pull/487\n.. _500: https://github.com/pallets/click/pull/500\n.. _514: https://github.com/pallets/click/issues/514\n.. _533: https://github.com/pallets/click/pull/533\n.. _535: https://github.com/pallets/click/issues/535\n.. _537: https://github.com/pallets/click/issues/537\n.. _538: https://github.com/pallets/click/pull/538\n.. _553: https://github.com/pallets/click/pull/553\n.. _557: https://github.com/pallets/click/pull/557\n.. _568: https://github.com/pallets/click/issues/568\n.. _569: https://github.com/pallets/click/issues/569\n.. _574: https://github.com/pallets/click/issues/574\n.. _583: https://github.com/pallets/click/issues/583\n.. _598: https://github.com/pallets/click/issues/598\n.. _612: https://github.com/pallets/click/pull/612\n.. _616: https://github.com/pallets/click/issues/616\n.. _629: https://github.com/pallets/click/pull/629\n.. _650: https://github.com/pallets/click/pull/650\n.. _651: https://github.com/pallets/click/issues/651\n.. _664: https://github.com/pallets/click/pull/664\n.. _667: https://github.com/pallets/click/issues/667\n.. _675: https://github.com/pallets/click/pull/675\n.. _681: https://github.com/pallets/click/pull/681\n.. _684: https://github.com/pallets/click/pull/684\n.. _703: https://github.com/pallets/click/issues/703\n.. _704: https://github.com/pallets/click/issues/704\n.. _706: https://github.com/pallets/click/pull/706\n.. _709: https://github.com/pallets/click/pull/709\n.. _710: https://github.com/pallets/click/pull/710\n.. _712: https://github.com/pallets/click/pull/712\n.. _719: https://github.com/pallets/click/issues/719\n.. _725: https://github.com/pallets/click/issues/725\n.. _728: https://github.com/pallets/click/pull/728\n.. _739: https://github.com/pallets/click/pull/739\n.. _741: https://github.com/pallets/click/issues/741\n.. _744: https://github.com/pallets/click/issues/744\n.. _754: https://github.com/pallets/click/issues/754\n.. _755: https://github.com/pallets/click/pull/755\n.. _773: https://github.com/pallets/click/pull/773\n.. _774: https://github.com/pallets/click/pull/774\n.. _790: https://github.com/pallets/click/issues/790\n.. _793: https://github.com/pallets/click/issues/793\n.. _794: https://github.com/pallets/click/pull/794\n.. _795: https://github.com/pallets/click/issues/795\n.. _799: https://github.com/pallets/click/pull/799\n.. _801: https://github.com/pallets/click/pull/801\n.. _806: https://github.com/pallets/click/pull/806\n.. _807: https://github.com/pallets/click/pull/807\n.. _809: https://github.com/pallets/click/pull/809\n.. _816: https://github.com/pallets/click/pull/816\n.. _819: https://github.com/pallets/click/pull/819\n.. _821: https://github.com/pallets/click/issues/821\n.. _822: https://github.com/pallets/click/issues/822\n.. _825: https://github.com/pallets/click/issues/825\n.. _830: https://github.com/pallets/click/pull/830\n.. _842: https://github.com/pallets/click/pull/842\n.. _860: https://github.com/pallets/click/issues/860\n.. _862: https://github.com/pallets/click/issues/862\n.. _863: https://github.com/pallets/click/pull/863\n.. _865: https://github.com/pallets/click/pull/865\n.. _866: https://github.com/pallets/click/issues/866\n.. _868: https://github.com/pallets/click/pull/868\n.. _869: https://github.com/pallets/click/pull/869\n.. _873: https://github.com/pallets/click/issues/873\n.. _874: https://github.com/pallets/click/pull/874\n.. _877: https://github.com/pallets/click/pull/877\n.. _878: https://github.com/pallets/click/pull/878\n.. _880: https://github.com/pallets/click/pull/880\n.. _883: https://github.com/pallets/click/pull/883\n.. _887: https://github.com/pallets/click/pull/887\n.. _889: https://github.com/pallets/click/pull/889\n.. _918: https://github.com/pallets/click/pull/918\n.. _919: https://github.com/pallets/click/issues/919\n.. _920: https://github.com/pallets/click/pull/920\n.. _925: https://github.com/pallets/click/issues/925\n.. _926: https://github.com/pallets/click/issues/926\n.. _929: https://github.com/pallets/click/pull/929\n.. _930: https://github.com/pallets/click/pull/930\n.. _935: https://github.com/pallets/click/pull/935\n.. _949: https://github.com/pallets/click/issues/949\n.. _954: https://github.com/pallets/click/pull/954\n.. _962: https://github.com/pallets/click/pull/962\n.. _965: https://github.com/pallets/click/pull/965\n.. _967: https://github.com/pallets/click/pull/967\n.. _976: https://github.com/pallets/click/pull/976\n.. _990: https://github.com/pallets/click/pull/990\n.. _991: https://github.com/pallets/click/pull/991\n.. _993: https://github.com/pallets/click/pull/993\n.. _994: https://github.com/pallets/click/pull/994\n.. _995: https://github.com/pallets/click/pull/995\n.. _996: https://github.com/pallets/click/pull/996\n.. _997: https://github.com/pallets/click/pull/997\n.. _999: https://github.com/pallets/click/pull/999\n.. _1000: https://github.com/pallets/click/pull/1000\n.. _1001: https://github.com/pallets/click/pull/1001\n.. _1002: https://github.com/pallets/click/pull/1002\n.. _1003: https://github.com/pallets/click/pull/1003\n.. _1004: https://github.com/pallets/click/pull/1004\n.. _1005: https://github.com/pallets/click/pull/1005\n.. _1007: https://github.com/pallets/click/pull/1007\n.. _1008: https://github.com/pallets/click/pull/1008\n.. _1009: https://github.com/pallets/click/pull/1009\n.. _1010: https://github.com/pallets/click/pull/1010\n.. _1011: https://github.com/pallets/click/pull/1011\n.. _1012: https://github.com/pallets/click/pull/1012\n.. _1013: https://github.com/pallets/click/pull/1013\n.. _1014: https://github.com/pallets/click/pull/1014\n.. _1016: https://github.com/pallets/click/pull/1016\n.. _1020: https://github.com/pallets/click/pull/1020\n.. _1022: https://github.com/pallets/click/pull/1022\n.. _1027: https://github.com/pallets/click/pull/1027\n.. _1047: https://github.com/pallets/click/pull/1047\n.. _1055: https://github.com/pallets/click/pull/1055\n.. _1058: https://github.com/pallets/click/pull/1058\n.. _1059: https://github.com/pallets/click/pull/1059\n.. _1061: https://github.com/pallets/click/pull/1061\n.. _1068: https://github.com/pallets/click/issues/1068\n.. _1069: https://github.com/pallets/click/pull/1069\n.. _1088: https://github.com/pallets/click/issues/1088\n.. _1091: https://github.com/pallets/click/pull/1091\n.. _1098: https://github.com/pallets/click/pull/1098\n.. _1105: https://github.com/pallets/click/pull/1105\n.. _1106: https://github.com/pallets/click/pull/1106\n.. _1108: https://github.com/pallets/click/pull/1108\n.. _1115: https://github.com/pallets/click/pull/1115\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/click\n  - Changelog: https://pyup.io/changelogs/click/\n  - Homepage: https://palletsprojects.com/p/click/\n</details>\n\n\n\n\n\n### Update [colorama](https://pypi.org/project/colorama) from **0.3.9** to **0.4.1**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 0.4.1\n   ```\n   * Fix issue 196: prevent exponential number of calls when calling &#39;init&#39;\n    multiple times. Reported by bbayles and fixed by Delgan.\n   ```\n   \n  \n  \n   ### 0.4.0\n   ```\n   * Fix issue 142: reset LIGHT_EX colors with RESET_ALL. Reported by Delgan\n  * Fix issue 147: ignore invalid &quot;erase&quot; ANSI codes. Reported by shin-\n  * Fix issues 163 and 164: fix stream wrapping under PyCharm. Contributed\n    by veleek and Delgan.\n  * Thanks to jdufresne for various code cleanup and updates to documentation\n    and project metadata.\n    (pull requests 171, 172, 173, 174, 176, 177, 189, 190, 192)\n  * 186: added contextlib magic methods to ansitowin32.StreamWrapper.\n    Contributed by hoefling.\n  * Fix issue 131: don&#39;t cache stdio handles, since they might be\n    closed/changed by fd redirection. This fixes an issue with pytest.\n    Contributed by segevfiner.\n  * 146, 157: Drop support for EOL Python 2.5, 2.6, 3.1, 3.2 and 3.3,\n    and add 3.6. Thanks to hugovk.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/colorama\n  - Changelog: https://pyup.io/changelogs/colorama/\n  - Repo: https://github.com/tartley/colorama\n</details>\n\n\n\n\n\n### Update [idna](https://pypi.org/project/idna) from **2.7** to **2.8**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 2.8\n   ```\n   ++++++++++++++++\n\n- Update to Unicode 11.0.0.\n- Provide more specific exceptions for some malformed labels.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/idna\n  - Changelog: https://pyup.io/changelogs/idna/\n  - Repo: https://github.com/kjd/idna\n</details>\n\n\n\n\n\n### Update [pathspec](https://pypi.org/project/pathspec) from **0.5.6** to **0.5.9**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 0.5.9\n   ```\n   ------------------\n\n- Fixed file system error handling.\n   ```\n   \n  \n  \n   ### 0.5.8\n   ```\n   ------------------\n\n- Improved type checking.\n- Created scripts to test Python 2.6 because Tox removed support for it.\n- Improved byte string handling in Python 3.\n- `Issue 22`_: Handle dangling symlinks.\n\n.. _`Issue 22`: https://github.com/cpburnz/python-path-specification/issues/22\n   ```\n   \n  \n  \n   ### 0.5.7\n   ```\n   ------------------\n\n- `Issue 21`_: Fix collections deprecation warning.\n\n.. _`Issue 21`: https://github.com/cpburnz/python-path-specification/issues/21\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/pathspec\n  - Changelog: https://pyup.io/changelogs/pathspec/\n  - Repo: https://github.com/cpburnz/python-path-specification\n</details>\n\n\n\n\n\n### Update [py](https://pypi.org/project/py) from **1.5.4** to **1.8.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 1.8.0\n   ```\n   ==================\n\n- add ``&quot;importlib&quot;`` pyimport mode for python3.5+, allowing unimportable test suites\n  to contain identically named modules.\n\n- fix ``LocalPath.as_cwd()`` not calling ``os.chdir()`` with ``None``, when\n  being invoked from a non-existing directory.\n   ```\n   \n  \n  \n   ### 1.7.0\n   ```\n   ==================\n\n- fix 174: use ``shutil.get_terminal_size()`` in Python 3.3+ to determine the size of the\n  terminal, which produces more accurate results than the previous method.\n\n- fix pytest-dev/pytest2042: introduce new ``PY_IGNORE_IMPORTMISMATCH`` environment variable\n  that suppresses ``ImportMismatchError`` exceptions when set to ``1``.\n   ```\n   \n  \n  \n   ### 1.6.0\n   ```\n   ==================\n\n- add ``TerminalWriter.width_of_current_line`` (i18n version of\n  ``TerminalWriter.chars_on_current_line``), a read-only property\n  that tracks how wide the current line is, attempting to take\n  into account international characters in the calculation.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/py\n  - Changelog: https://pyup.io/changelogs/py/\n  - Docs: http://py.readthedocs.io/\n</details>\n\n\n\n\n\n### Update [pycodestyle](https://pypi.org/project/pycodestyle) from **2.4.0** to **2.5.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 2.5.0\n   ```\n   ------------------\n\nNew checks:\n\n* E117: Over-indented code blocks\n* W505: Maximum doc-string length only when configured with --max-doc-length\n\nChanges:\n\n* Remove support for EOL Python 2.6 and 3.3. PR 720.\n* Add E117 error for over-indented code blocks.\n* Allow W605 to be silenced by ` noqa` and fix the position reported by W605\n* Allow users to omit blank lines around one-liner definitions of classes and\n  functions\n* Include the function return annotation (``-&gt;``) as requiring surrounding\n  whitespace only on Python 3\n* Verify that only names can follow ``await``. Previously we allowed numbers\n  and strings.\n* Add support for Python 3.7\n* Fix detection of annotated argument defaults for E252\n* Cprrect the position reported by W504\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/pycodestyle\n  - Changelog: https://pyup.io/changelogs/pycodestyle/\n  - Docs: https://pycodestyle.readthedocs.io/\n</details>\n\n\n\n\n\n### Update [pyflakes](https://pypi.org/project/pyflakes) from **2.0.0** to **2.1.1**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 2.1.0\n   ```\n   - Allow intentional assignment to variables named ``_``\n- Recognize ``__module__`` as a valid name in class scope\n- ``pyflakes.checker.Checker`` supports checking of partial ``ast`` trees\n- Detect assign-before-use for local variables which shadow builtin names\n- Detect invalid ``print`` syntax using ``&gt;&gt;`` operator\n- Treat ``async for`` the same as a ``for`` loop for introducing variables\n- Add detection for list concatenation in ``__all__``\n- Exempt ``typing.overload`` from duplicate function declaration\n- Importing a submodule of an ``as``-aliased ``import``-import is marked as\n  used\n- Report undefined names from ``__all__`` as possibly coming from a ``*``\n  import\n- Add support for changes in Python 3.8-dev\n- Add support for PEP 563 (``from __future__ import annotations``)\n- Include Python version and platform information in ``pyflakes --version``\n- Recognize ``__annotations__`` as a valid magic global in Python 3.6+\n- Mark names used in PEP 484 `` type: ...`` comments as used\n- Add check for use of ``is`` operator with ``str``, ``bytes``, and ``int``\n  literals\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/pyflakes\n  - Changelog: https://pyup.io/changelogs/pyflakes/\n  - Repo: https://github.com/PyCQA/pyflakes\n</details>\n\n\n\n\n\n### Update [pytz](https://pypi.org/project/pytz) from **2018.5** to **2019.2**.\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/pytz\n  - Homepage: http://pythonhosted.org/pytz\n  - Docs: https://pythonhosted.org/pytz/\n</details>\n\n\n\n\n\n### Update [PyYAML](https://pypi.org/project/PyYAML) from **3.13** to **5.1.2**.\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/pyyaml\n  - Repo: https://github.com/yaml/pyyaml\n</details>\n\n\n\n\n\n### Update [requests](https://pypi.org/project/requests) from **2.19.1** to **2.22.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 2.22.0\n   ```\n   -------------------\n\n**Dependencies**\n\n- Requests now supports urllib3 v1.25.2.\n  (note: 1.25.0 and 1.25.1 are incompatible)\n\n**Deprecations**\n\n- Requests has officially stopped support for Python 3.4.\n   ```\n   \n  \n  \n   ### 2.21.0\n   ```\n   -------------------\n\n**Dependencies**\n\n- Requests now supports idna v2.8.\n   ```\n   \n  \n  \n   ### 2.20.1\n   ```\n   -------------------\n\n**Bugfixes**\n\n- Fixed bug with unintended Authorization header stripping for\n  redirects using default ports (http/80, https/443).\n   ```\n   \n  \n  \n   ### 2.20.0\n   ```\n   -------------------\n\n**Bugfixes**\n\n-   Content-Type header parsing is now case-insensitive (e.g.\n    charset=utf8 v Charset=utf8).\n-   Fixed exception leak where certain redirect urls would raise\n    uncaught urllib3 exceptions.\n-   Requests removes Authorization header from requests redirected\n    from https to http on the same hostname. (CVE-2018-18074)\n-   `should_bypass_proxies` now handles URIs without hostnames (e.g.\n    files).\n\n**Dependencies**\n\n- Requests now supports urllib3 v1.24.\n\n**Deprecations**\n\n- Requests has officially stopped support for Python 2.6.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/requests\n  - Changelog: https://pyup.io/changelogs/requests/\n  - Homepage: http://python-requests.org\n</details>\n\n\n\n\n\n### Update [six](https://pypi.org/project/six) from **1.11.0** to **1.12.0**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 1.12.0\n   ```\n   ------\n\n- Issue 259, pull request 260: `six.add_metaclass` now preserves\n  `__qualname__` from the original class.\n\n- Pull request 204: Add `six.ensure_binary`, `six.ensure_text`, and\n  `six.ensure_str`.\n   ```\n   \n  \n</details>\n\n\n \n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/six\n  - Changelog: https://pyup.io/changelogs/six/\n  - Repo: https://github.com/benjaminp/six\n</details>\n\n\n\n\n\n### Update [urllib3](https://pypi.org/project/urllib3) from **1.22** to **1.25.3**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 1.25.3\n   ```\n   -------------------\n\n* Change ``HTTPSConnection`` to load system CA certificates\n  when ``ca_certs``, ``ca_cert_dir``, and ``ssl_context`` are\n  unspecified. (Pull 1608, Issue 1603)\n\n* Upgrade bundled rfc3986 to v1.3.2. (Pull 1609, Issue 1605)\n   ```\n   \n  \n  \n   ### 1.25.2\n   ```\n   -------------------\n\n* Change ``is_ipaddress`` to not detect IPvFuture addresses. (Pull 1583)\n\n* Change ``parse_url`` to percent-encode invalid characters within the\n  path, query, and target components. (Pull 1586)\n   ```\n   \n  \n  \n   ### 1.25.1\n   ```\n   -------------------\n\n* Add support for Google&#39;s ``Brotli`` package. (Pull 1572, Pull 1579)\n\n* Upgrade bundled rfc3986 to v1.3.1 (Pull 1578)\n   ```\n   \n  \n  \n   ### 1.25\n   ```\n   -----------------\n\n* Require and validate certificates by default when using HTTPS (Pull 1507)\n\n* Upgraded ``urllib3.utils.parse_url()`` to be RFC 3986 compliant. (Pull 1487)\n\n* Added support for ``key_password`` for ``HTTPSConnectionPool`` to use\n  encrypted ``key_file`` without creating your own ``SSLContext`` object. (Pull 1489)\n\n* Add TLSv1.3 support to CPython, pyOpenSSL, and SecureTransport ``SSLContext``\n  implementations. (Pull 1496)\n\n* Switched the default multipart header encoder from RFC 2231 to HTML 5 working draft. (Issue 303, PR 1492)\n\n* Fixed issue where OpenSSL would block if an encrypted client private key was\n  given and no password was given. Instead an ``SSLError`` is raised. (Pull 1489)\n\n* Added support for Brotli content encoding. It is enabled automatically if\n  ``brotlipy`` package is installed which can be requested with\n  ``urllib3[brotli]`` extra. (Pull 1532)\n\n* Drop ciphers using DSS key exchange from default TLS cipher suites.\n  Improve default ciphers when using SecureTransport. (Pull 1496)\n\n* Implemented a more efficient ``HTTPResponse.__iter__()`` method. (Issue 1483)\n   ```\n   \n  \n  \n   ### 1.24.3\n   ```\n   -------------------\n\n* Apply fix for CVE-2019-9740. (Pull 1591)\n   ```\n   \n  \n  \n   ### 1.24.2\n   ```\n   -------------------\n\n* Don&#39;t load system certificates by default when any other ``ca_certs``, ``ca_certs_dir`` or\n  ``ssl_context`` parameters are specified.\n\n* Remove Authorization header regardless of case when redirecting to cross-site. (Issue 1510)\n\n* Add support for IPv6 addresses in subjectAltName section of certificates. (Issue 1269)\n   ```\n   \n  \n  \n   ### 1.24.1\n   ```\n   -------------------\n\n* Remove quadratic behavior within ``GzipDecoder.decompress()`` (Issue 1467)\n\n* Restored functionality of ``ciphers`` parameter for ``create_urllib3_context()``. (Issue 1462)\n   ```\n   \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 [Django](https://pypi.org/project/Django) from **2.0.7** to **2.2.5**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 2.2.5\n   ```\n   ==========================\n\n*September 2, 2019*\n\nDjango 2.2.5 fixes several bugs in 2.2.4.\n\nBugfixes\n========\n\n* Relaxed the system check added in Django 2.2 for models to reallow use of the\n  same ``db_table`` by multiple models when database routers are installed\n  (:ticket:`30673`).\n\n* Fixed crash of ``KeyTransform()`` for\n  :class:`~django.contrib.postgres.fields.JSONField` and\n  :class:`~django.contrib.postgres.fields.HStoreField` when using on\n  expressions with params (:ticket:`30672`).\n\n* Fixed a regression in Django 2.2 where\n  :attr:`ModelAdmin.list_filter &lt;django.contrib.admin.ModelAdmin.list_filter&gt;`\n  choices to foreign objects don&#39;t respect a model&#39;s ``Meta.ordering``\n  (:ticket:`30449`).\n\n\n==========================\n   ```\n   \n  \n  \n   ### 2.2.4\n   ```\n   ==========================\n\n*August 1, 2019*\n\nDjango 2.2.4 fixes security issues and several bugs in 2.2.3.\n\nCVE-2019-14232: Denial-of-service possibility in ``django.utils.text.Truncator``\n================================================================================\n\nIf ``django.utils.text.Truncator``&#39;s ``chars()`` and ``words()`` methods\nwere passed the ``html=True`` argument, they were extremely slow to evaluate\ncertain inputs due to a catastrophic backtracking vulnerability in a regular\nexpression. The ``chars()`` and ``words()`` methods are used to implement the\n:tfilter:`truncatechars_html` and :tfilter:`truncatewords_html` template\nfilters, which were thus vulnerable.\n\nThe regular expressions used by ``Truncator`` have been simplified in order to\navoid potential backtracking issues. As a consequence, trailing punctuation may\nnow at times be included in the truncated output.\n\nCVE-2019-14233: Denial-of-service possibility in ``strip_tags()``\n=================================================================\n\nDue to the behavior of the underlying ``HTMLParser``,\n:func:`django.utils.html.strip_tags` would be extremely slow to evaluate\ncertain inputs containing large sequences of nested incomplete HTML entities.\nThe ``strip_tags()`` method is used to implement the corresponding\n:tfilter:`striptags` template filter, which was thus also vulnerable.\n\n``strip_tags()`` now avoids recursive calls to ``HTMLParser`` when progress\nremoving tags, but necessarily incomplete HTML entities, stops being made.\n\nRemember that absolutely NO guarantee is provided about the results of\n``strip_tags()`` being HTML safe. So NEVER mark safe the result of a\n``strip_tags()`` call without escaping it first, for example with\n:func:`django.utils.html.escape`.\n\nCVE-2019-14234: SQL injection possibility in key and index lookups for ``JSONField``/``HStoreField``\n====================================================================================================\n\n:lookup:`Key and index lookups &lt;jsonfield.key&gt;` for\n:class:`~django.contrib.postgres.fields.JSONField` and :lookup:`key lookups\n&lt;hstorefield.key&gt;` for :class:`~django.contrib.postgres.fields.HStoreField`\nwere subject to SQL injection, using a suitably crafted dictionary, with\ndictionary expansion, as the ``**kwargs`` passed to ``QuerySet.filter()``.\n\nCVE-2019-14235: Potential memory exhaustion in ``django.utils.encoding.uri_to_iri()``\n=====================================================================================\n\nIf passed certain inputs, :func:`django.utils.encoding.uri_to_iri` could lead\nto significant memory usage due to excessive recursion when re-percent-encoding\ninvalid UTF-8 octet sequences.\n\n``uri_to_iri()`` now avoids recursion when re-percent-encoding invalid UTF-8\noctet sequences.\n\nBugfixes\n========\n\n* Fixed a regression in Django 2.2 when ordering a ``QuerySet.union()``,\n  ``intersection()``, or ``difference()`` by a field type present more than\n  once results in the wrong ordering being used (:ticket:`30628`).\n\n* Fixed a migration crash on PostgreSQL when adding a check constraint\n  with a ``contains`` lookup on\n  :class:`~django.contrib.postgres.fields.DateRangeField` or\n  :class:`~django.contrib.postgres.fields.DateTimeRangeField`, if the right\n  hand side of an expression is the same type (:ticket:`30621`).\n\n* Fixed a regression in Django 2.2 where auto-reloader crashes if a file path\n  contains nulls characters (``&#39;\\x00&#39;``) (:ticket:`30506`).\n\n* Fixed a regression in Django 2.2 where auto-reloader crashes if a translation\n  directory cannot be resolved (:ticket:`30647`).\n\n\n==========================\n   ```\n   \n  \n  \n   ### 2.2.3\n   ```\n   ==========================\n\n*July 1, 2019*\n\nDjango 2.2.3 fixes a security issue and several bugs in 2.2.2. Also, the latest\nstring translations from Transifex are incorporated.\n\nCVE-2019-12781: Incorrect HTTP detection with reverse-proxy connecting via HTTPS\n--------------------------------------------------------------------------------\n\nWhen deployed behind a reverse-proxy connecting to Django via HTTPS,\n:attr:`django.http.HttpRequest.scheme` would incorrectly detect client\nrequests made via HTTP as using HTTPS. This entails incorrect results for\n:meth:`~django.http.HttpRequest.is_secure`, and\n:meth:`~django.http.HttpRequest.build_absolute_uri`, and that HTTP\nrequests would not be redirected to HTTPS in accordance with\n:setting:`SECURE_SSL_REDIRECT`.\n\n``HttpRequest.scheme`` now respects :setting:`SECURE_PROXY_SSL_HEADER`, if it is\nconfigured, and the appropriate header is set on the request, for both HTTP and\nHTTPS requests.\n\nIf you deploy Django behind a reverse-proxy that forwards HTTP requests, and\nthat connects to Django via HTTPS, be sure to verify that your application\ncorrectly handles code paths relying on ``scheme``, ``is_secure()``,\n``build_absolute_uri()``, and ``SECURE_SSL_REDIRECT``.\n\nBugfixes\n========\n\n* Fixed a regression in Django 2.2 where :class:`~django.db.models.Avg`,\n  :class:`~django.db.models.StdDev`, and :class:`~django.db.models.Variance`\n  crash with ``filter`` argument (:ticket:`30542`).\n\n* Fixed a regression in Django 2.2.2 where auto-reloader crashes with\n  ``AttributeError``, e.g. when using ``ipdb`` (:ticket:`30588`).\n\n\n==========================\n   ```\n   \n  \n  \n   ### 2.2.2\n   ```\n   ==========================\n\n*June 3, 2019*\n\nDjango 2.2.2 fixes security issues and several bugs in 2.2.1.\n\nCVE-2019-12308: AdminURLFieldWidget XSS\n---------------------------------------\n\nThe clickable &quot;Current URL&quot; link generated by ``AdminURLFieldWidget`` displayed\nthe provided value without validating it as a safe URL. Thus, an unvalidated\nvalue stored in the database, or a value provided as a URL query parameter\npayload, could result in an clickable JavaScript link.\n\n``AdminURLFieldWidget`` now validates the provided value using\n:class:`~django.core.validators.URLValidator` before displaying the clickable\nlink. You may customize the validator by passing a ``validator_class`` kwarg to\n``AdminURLFieldWidget.__init__()``, e.g. when using\n:attr:`~django.contrib.admin.ModelAdmin.formfield_overrides`.\n\nPatched bundled jQuery for CVE-2019-11358: Prototype pollution\n--------------------------------------------------------------\n\njQuery before 3.4.0, mishandles ``jQuery.extend(true, {}, ...)`` because of\n``Object.prototype`` pollution. If an unsanitized source object contained an\nenumerable ``__proto__`` property, it could extend the native\n``Object.prototype``.\n\nThe bundled version of jQuery used by the Django admin has been patched to\nallow for the ``select2`` library&#39;s use of ``jQuery.extend()``.\n\nBugfixes\n========\n\n* Fixed a regression in Django 2.2 that stopped Show/Hide toggles working on\n  dynamically added admin inlines (:ticket:`30459`).\n\n* Fixed a regression in Django 2.2 where deprecation message crashes if\n  ``Meta.ordering`` contains an expression (:ticket:`30463`).\n\n* Fixed a regression in Django 2.2.1 where\n  :class:`~django.contrib.postgres.search.SearchVector` generates SQL with a\n  redundant ``Coalesce`` call (:ticket:`30488`).\n\n* Fixed a regression in Django 2.2 where auto-reloader doesn&#39;t detect changes\n  in ``manage.py`` file when using ``StatReloader`` (:ticket:`30479`).\n\n* Fixed crash of :class:`~django.contrib.postgres.aggregates.ArrayAgg` and\n  :class:`~django.contrib.postgres.aggregates.StringAgg` with ``ordering``\n  argument when used in a ``Subquery`` (:ticket:`30315`).\n\n* Fixed a regression in Django 2.2 that caused a crash of auto-reloader when\n  an exception with custom signature is raised (:ticket:`30516`).\n\n* Fixed a regression in Django 2.2.1 where auto-reloader unnecessarily reloads\n  translation files multiple times when using ``StatReloader``\n  (:ticket:`30523`).\n\n\n==========================\n   ```\n   \n  \n  \n   ### 2.2.1\n   ```\n   ==========================\n\n*May 1, 2019*\n\nDjango 2.2.1 fixes several bugs in 2.2.\n\nBugfixes\n========\n\n* Fixed a regression in Django 2.1 that caused the incorrect quoting of\n  database user password when using :djadmin:`dbshell` on Oracle\n  (:ticket:`30307`).\n\n* Added compatibility for ``psycopg2`` 2.8 (:ticket:`30331`).\n\n* Fixed a regression in Django 2.2 that caused a crash when loading the\n  template for the technical 500 debug page (:ticket:`30324`).\n\n* Fixed crash of ``ordering`` argument in\n  :class:`~django.contrib.postgres.aggregates.ArrayAgg` and\n  :class:`~django.contrib.postgres.aggregates.StringAgg` when it contains an\n  expression with params (:ticket:`30332`).\n\n* Fixed a regression in Django 2.2 that caused a single instance fast-delete\n  to not set the primary key to ``None`` (:ticket:`30330`).\n\n* Prevented :djadmin:`makemigrations` from generating infinite migrations for\n  check constraints and partial indexes when ``condition`` contains\n  a :class:`~python:range` object (:ticket:`30350`).\n\n* Reverted an optimization in Django 2.2 (:ticket:`29725`) that caused the\n  inconsistent behavior of ``count()`` and ``exists()`` on a reverse\n  many-to-many relationship with a custom manager (:ticket:`30325`).\n\n* Fixed a regression in Django 2.2 where\n  :class:`~django.core.paginator.Paginator` crashes if ``object_list`` is\n  a queryset ordered or aggregated over a nested ``JSONField`` key transform\n  (:ticket:`30335`).\n\n* Fixed a regression in Django 2.2 where ``IntegerField`` validation of\n  database limits crashes if ``limit_value`` attribute in a custom validator is\n  callable (:ticket:`30328`).\n\n* Fixed a regression in Django 2.2 where\n  :class:`~django.contrib.postgres.search.SearchVector` generates SQL that is\n  not indexable (:ticket:`30385`).\n\n* Fixed a regression in Django 2.2 that caused an exception to be raised when\n  a custom error handler could not be imported (:ticket:`30318`).\n\n* Relaxed the system check added in Django 2.2 for the admin app&#39;s dependencies\n  to reallow use of\n  :class:`~django.contrib.sessions.middleware.SessionMiddleware` subclasses,\n  rather than requiring :mod:`django.contrib.sessions` to be in\n  :setting:`INSTALLED_APPS` (:ticket:`30312`).\n\n* Increased the default timeout when using ``Watchman`` to 5 seconds to prevent\n  falling back to ``StatReloader`` on larger projects and made it customizable\n  via the ``DJANGO_WATCHMAN_TIMEOUT`` environment variable (:ticket:`30361`).\n\n* Fixed a regression in Django 2.2 that caused a crash when migrating\n  permissions for proxy models if the target permissions already existed. For\n  example, when a permission had been created manually or a model had been\n  migrated from concrete to proxy (:ticket:`30351`).\n\n* Fixed a regression in Django 2.2 that caused a crash of :djadmin:`runserver`\n  when URLConf modules raised exceptions (:ticket:`30323`).\n\n* Fixed a regression in Django 2.2 where changes were not reliably detected by\n  auto-reloader when using ``StatReloader`` (:ticket:`30323`).\n\n* Fixed a migration crash on Oracle and PostgreSQL when adding a check\n  constraint with a ``contains``, ``startswith``, or ``endswith`` lookup (or\n  their case-insensitive variant) (:ticket:`30408`).\n\n* Fixed a migration crash on Oracle and SQLite when adding a check constraint\n  with ``condition`` contains ``|`` (``OR``) operator (:ticket:`30412`).\n\n\n========================\n   ```\n   \n  \n  \n   ### 2.2\n   ```\n   ========================\n\n*April 1, 2019*\n\nWelcome to Django 2.2!\n\nThese release notes cover the :ref:`new features &lt;whats-new-2.2&gt;`, as well as\nsome :ref:`backwards incompatible changes &lt;backwards-incompatible-2.2&gt;` you&#39;ll\nwant to be aware of when upgrading from Django 2.1 or earlier. We&#39;ve\n:ref:`begun the deprecation process for some features\n&lt;deprecated-features-2.2&gt;`.\n\nSee the :doc:`/howto/upgrade-version` guide if you&#39;re updating an existing\nproject.\n\nDjango 2.2 is designated as a :term:`long-term support release`. It will\nreceive security updates for at least three years after its release. Support\nfor the previous LTS, Django 1.11, will end in April 2020.\n\nPython compatibility\n====================\n\nDjango 2.2 supports Python 3.5, 3.6, and 3.7. We **highly recommend** and only\nofficially support the latest release of each series.\n\n.. _whats-new-2.2:\n\nWhat&#39;s new in Django 2.2\n========================\n\nConstraints\n-----------\n\nThe new :class:`~django.db.models.CheckConstraint` and\n:class:`~django.db.models.UniqueConstraint` classes enable adding custom\ndatabase constraints. Constraints are added to models using the\n:attr:`Meta.constraints &lt;django.db.models.Options.constraints&gt;` option.\n\nMinor features\n--------------\n\n:mod:`django.contrib.admin`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Added a CSS class to the column headers of\n  :class:`~django.contrib.admin.TabularInline`.\n\n:mod:`django.contrib.auth`\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* The ``HttpRequest`` is now passed as the first positional argument to\n  :meth:`.RemoteUserBackend.configure_user`, if it accepts it.\n\n:mod:`django.contrib.gis`\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Added Oracle support for the\n  :class:`~django.contrib.gis.db.models.functions.Envelope` function.\n\n* Added SpatiaLite support for the :lookup:`coveredby` and :lookup:`covers`\n  lookups.\n\n:mod:`django.contrib.postgres`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* The new ``ordering`` argument for\n  :class:`~django.contrib.postgres.aggregates.ArrayAgg` and\n  :class:`~django.contrib.postgres.aggregates.StringAgg` determines the\n  ordering of the aggregated elements.\n\n* The new :class:`~django.contrib.postgres.indexes.BTreeIndex`,\n  :class:`~django.contrib.postgres.indexes.HashIndex` and\n  :class:`~django.contrib.postgres.indexes.SpGistIndex` classes allow\n  creating ``B-Tree``, ``hash``, and ``SP-GiST`` indexes in the database.\n\n* :class:`~django.contrib.postgres.indexes.BrinIndex` now has the\n  ``autosummarize`` parameter.\n\n* The new ``search_type`` parameter of\n  :class:`~django.contrib.postgres.search.SearchQuery` allows searching for\n  a phrase or raw expression.\n\n:mod:`django.contrib.staticfiles`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n* Added path matching to the :option:`collectstatic --ignore` option so that\n  patterns like ``/vendor/*.js`` can be used.\n\nDatabase backends\n~~~~~~~~~~~~~~~~~\n\n* Added result streaming for :meth:`.QuerySet.iterator` on SQLite.\n\nGeneric Views\n~~~~~~~~~~~~~\n\n* The new :meth:`View.setup &lt;django.views.generic.base.View.setup&gt;` hook\n  initializes view attributes before calling\n  :meth:`~django.views.generic.base.View.dispatch`. It allows mixins to setup\n  instance attributes for reuse in child classes.\n\nInternationalization\n~~~~~~~~~~~~~~~~~~~~\n\n* Added support and translations for the Armenian language.\n\nManagement Commands\n~~~~~~~~~~~~~~~~~~~\n\n* The new :option:`--force-color` option forces colorization of the command\n  output.\n\n* :djadmin:`inspectdb` now creates models for foreign tables on PostgreSQL.\n\n* :option:`inspectdb --include-views` now creates models for materialized views\n  on Oracle and PostgreSQL.\n\n* The new :option:`inspectdb --include-partitions` option allows creating\n  models for partition tables on PostgreSQL. In older versions, models are\n  created child tables instead the parent.\n\n* :djadmin:`inspectdb` now introspects :class:`~django.db.models.DurationField`\n  for Oracle and PostgreSQL, and :class:`~django.db.models.AutoField` for\n  SQLite.\n\n* On Oracle, :djadmin:`dbshell` is wrapped with ``rlwrap``, if available.\n  ``rlwrap`` provides a command history and editing of keyboard input.\n\n* The new :option:`makemigrations --no-header` option avoids writing header\n  comments in generated migration file(s). This option is also available for\n  :djadmin:`squashmigrations`.\n\n* :djadmin:`runserver` can now use `Watchman\n  &lt;https://facebook.github.io/watchman/&gt;`_ to improve the performance of\n  watching a large number of files for changes.\n\nMigrations\n~~~~~~~~~~\n\n* The new :option:`migrate --plan` option prints the list of migration\n  operations that will be performed.\n\n* ``NoneType`` can now be serialized in migrations.\n\n* You can now :ref:`register custom serializers &lt;custom-migration-serializers&gt;`\n  for migrations.\n\nModels\n~~~~~~\n\n* Added support for PostgreSQL operator classes (:attr:`.Index.opclasses`).\n\n* Added support for partial indexes (:attr:`.Index.condition`).\n\n* Added the :class:`~django.db.models.functions.NullIf` and\n  :class:`~django.db.models.functions.Reverse` database functions, as well as\n  many :ref:`math database functions &lt;math-functions&gt;`.\n\n* Setting the new ``ignore_conflicts`` parameter of\n  :meth:`.QuerySet.bulk_create` to ``True`` tells the database to ignore\n  failure to insert rows that fail uniqueness constraints or other checks.\n\n* The new :class:`~django.db.models.functions.ExtractIsoYear` function extracts\n  ISO-8601 week-numbering years from :class:`~django.db.models.DateField` and\n  :class:`~django.db.models.DateTimeField`, and the new :lookup:`iso_year`\n  lookup allows querying by an ISO-8601 week-numbering year.\n\n* The new :meth:`.QuerySet.bulk_update` method allows efficiently updating\n  specific fields on multiple model instances.\n\n* Django no longer always starts a transaction when a single query is being\n  performed, such as ``Model.save()``, ``QuerySet.update()``, and\n  ``Model.delete()``. This improves the performance of autocommit by reducing\n  the number of database round trips.\n\n* Added SQLite support for the :class:`~django.db.models.StdDev` and\n  :class:`~django.db.models.Variance` functions.\n\n* The handling of ``DISTINCT`` aggregation is added to the\n  :class:`~django.db.models.Aggregate` class. Adding :attr:`allow_distinct =\n  True &lt;django.db.models.Aggregate.allow_distinct&gt;` as a class attribute on\n  ``Aggregate`` subclasses allows a ``distinct`` keyword argument to be\n  specified on initialization to ensure that the aggregate function is only\n  called for each distinct value of ``expressions``.\n\n* The :meth:`.RelatedManager.add`, :meth:`~.RelatedManager.create`,\n  :meth:`~.RelatedManager.remove`,  :meth:`~.RelatedManager.set`,\n  ``get_or_create()``, and ``update_or_create()`` methods are now allowed on\n  many-to-many relationships with intermediate models. The new\n  ``through_defaults`` argument is used to specify values for new intermediate\n  model instance(s).\n\nRequests and Responses\n~~~~~~~~~~~~~~~~~~~~~~\n\n* Added :attr:`.HttpRequest.headers` to allow simple access to a request&#39;s\n  headers.\n\nSerialization\n~~~~~~~~~~~~~\n\n* You can now deserialize data using natural keys containing :ref:`forward\n  references &lt;natural-keys-and-forward-references&gt;` by passing\n  ``handle_forward_references=True`` to ``serializers.deserialize()``.\n  Additionally, :djadmin:`loaddata` handles forward references automatically.\n\nTests\n~~~~~\n\n* The new :meth:`.SimpleTestCase.assertURLEqual` assertion checks for a given\n  URL, ignoring the ordering of the query string.\n  :meth:`~.SimpleTestCase.assertRedirects` uses the new assertion.\n\n* The test :class:`~.django.test.Client` now supports automatic JSON\n  serialization of list and tuple ``data`` when\n  ``content_type=&#39;application/json&#39;``.\n\n* The new :setting:`ORACLE_MANAGED_FILES &lt;TEST_ORACLE_MANAGED_FILES&gt;` test\n  database setting allows using Oracle Managed Files (OMF) tablespaces.\n\n* Deferrable database constraints are now checked at the end of each\n  :class:`~django.test.TestCase` test on SQLite 3.20+, just like on other\n  backends that support deferrable constraints. These checks aren&#39;t implemented\n  for older versions of SQLite because they would require expensive table\n  introspection there.\n\n* :class:`~django.test.runner.DiscoverRunner` now skips the setup of databases\n  not :ref:`referenced by tests&lt;testing-multi-db&gt;`.\n\nURLs\n~~~~\n\n* The new :attr:`.ResolverMatch.route` attribute stores the route of the\n  matching URL pattern.\n\nValidators\n~~~~~~~~~~\n\n* :class:`.MaxValueValidator`, :class:`.MinValueValidator`,\n  :class:`.MinLengthValidator`, and :class:`.MaxLengthValidator` now accept\n  a callable ``limit_value``.\n\n.. _backwards-incompatible-2.2:\n\nBackwards incompatible changes in 2.2\n=====================================\n\nDatabase backend API\n--------------------\n\nThis section describes changes that may be needed in third-party database\nbackends.\n\n* Third-party database backends must implement support for table check\n  constraints or set ``DatabaseFeatures.supports_table_check_constraints`` to\n  ``False``.\n\n* Third party database backends must implement support for ignoring\n  constraints or uniqueness errors while inserting or set\n  ``DatabaseFeatures.supports_ignore_conflicts`` to ``False``.\n\n* Third party database backends must implement introspection for\n  ``DurationField`` or set ``DatabaseFeatures.can_introspect_duration_field``\n  to ``False``.\n\n* ``DatabaseFeatures.uses_savepoints`` now defaults to ``True``.\n\n* Third party database backends must implement support for partial indexes or\n  set ``DatabaseFeatures.supports_partial_indexes`` to ``False``.\n\n* ``DatabaseIntrospection.table_name_converter()`` and\n  ``column_name_converter()`` are removed. Third party database backends may\n  need to instead implement ``DatabaseIntrospection.identifier_converter()``.\n  In that case, the constraint names that\n  ``DatabaseIntrospection.get_constraints()`` returns must be normalized by\n  ``identifier_converter()``.\n\n* SQL generation for indexes is moved from :class:`~django.db.models.Index` to\n  ``SchemaEditor`` and these ``SchemaEditor`` methods are added:\n\n  * ``_create_primary_key_sql()`` and ``_delete_primary_key_sql()``\n  * ``_delete_index_sql()`` (to pair with ``_create_index_sql()``)\n  * ``_delete_unique_sql`` (to pair with ``_create_unique_sql()``)\n  * ``_delete_fk_sql()`` (to pair with ``_create_fk_sql()``)\n  * ``_create_check_sql()`` and ``_delete_check_sql()``\n\n* The third argument of ``DatabaseWrapper.__init__()``,\n  ``allow_thread_sharing``, is removed.\n\nAdmin actions are no longer collected from base ``ModelAdmin`` classes\n----------------------------------------------------------------------\n\nFor example, in older versions of Django::\n\n    from django.contrib import admin\n\n    class BaseAdmin(admin.ModelAdmin):\n        actions = [&#39;a&#39;]\n\n    class SubAdmin(BaseAdmin):\n        actions = [&#39;b&#39;]\n\n``SubAdmin`` would have actions ``&#39;a&#39;`` and ``&#39;b&#39;``.\n\nNow ``actions`` follows standard Python inheritance. To get the same result as\nbefore::\n\n    class SubAdmin(BaseAdmin):\n        actions = BaseAdmin.actions + [&#39;b&#39;]\n\n:mod:`django.contrib.gis`\n-------------------------\n\n* Support for GDAL 1.9 and 1.10 is dropped.\n\n``TransactionTestCase`` serialized data loading\n-----------------------------------------------\n\nInitial data migrations are now loaded in\n:class:`~django.test.TransactionTestCase` at the end of the test, after the\ndatabase flush. In older versions, this data was loaded at the beginning of the\ntest, but this prevents the :option:`test --keepdb` option from working\nproperly (the database was empty at the end of the whole test suite). This\nchange shouldn&#39;t have an impact on your tests unless you&#39;ve customized\n:class:`~django.test.TransactionTestCase`&#39;s internals.\n\n``sqlparse`` is required dependency\n-----------------------------------\n\nTo simplify a few parts of Django&#39;s database handling, `sqlparse\n&lt;https://pypi.org/project/sqlparse/&gt;`_ is now a required dependency. It&#39;s\nautomatically installed along with Django.\n\n``cached_property`` aliases\n---------------------------\n\nIn usage like::\n\n    from django.utils.functional import cached_property\n\n    class A:\n\n        cached_property\n        def base(self):\n            return ...\n\n        alias = base\n\n``alias`` is not cached. Where the problem can be detected (Python 3.6 and\nlater), such usage now raises ``TypeError: Cannot assign the same\ncached_property to two different names (&#39;base&#39; and &#39;alias&#39;).``\n\nUse this instead::\n\n    import operator\n\n    class A:\n\n        ...\n\n        alias = property(operator.attrgetter(&#39;base&#39;))\n\nPermissions for proxy models\n----------------------------\n\n:ref:`Permissions for proxy models &lt;proxy-models-permissions-topic&gt;` are now\ncreated using the content type of the proxy model rather than the content type\nof the concrete model. A migration will update existing permissions when you\nrun :djadmin:`migrate`.\n\nIn the admin, the change is transparent for proxy models having the same\n``app_label`` as their concrete model. However, in older versions, users with\npermissions for a proxy model with a *different* ``app_label`` than its\nconcrete model couldn&#39;t access the model in the admin. That&#39;s now fixed, but\nyou might want to audit the permissions assignments for such proxy models\n(``[add|view|change|delete]_myproxy``) prior to upgrading to ensure the new\naccess is appropriate.\n\nFinally, proxy model permission strings must be updated to use their own\n``app_label``. For example, for ``app.MyProxyModel`` inheriting from\n``other_app.ConcreteModel``, update\n``user.has_perm(&#39;other_app.add_myproxymodel&#39;)`` to\n``user.has_perm(&#39;app.add_myproxymodel&#39;)``.\n\nMerging of form ``Media`` assets\n--------------------------------\n\nForm ``Media`` assets are now merged using a topological sort algorithm, as the\nold pairwise merging algorithm is insufficient for some cases. CSS and\nJavaScript files which don&#39;t include their dependencies may now be sorted\nincorrectly (where the old algorithm produced results correctly by\ncoincidence).\n\nAudit all ``Media`` classes for any missing dependencies. For example,\nwidgets depending on ``django.jQuery`` must specify\n``js=[&#39;admin/js/jquery.init.js&#39;, ...]`` when :ref:`declaring form media assets\n&lt;assets-as-a-static-definition&gt;`.\n\nMiscellaneous\n-------------\n\n* To improve readability, the ``UUIDField`` form field now displays values with\n  dashes, e.g. ``550e8400-e29b-41d4-a716-446655440000`` instead of\n  ``550e8400e29b41d4a716446655440000``.\n\n* On SQLite, ``PositiveIntegerField`` and ``PositiveSmallIntegerField`` now\n  include a check constraint to prevent negative values in the database. If you\n  have existing invalid data and run a migration that recreates a table, you&#39;ll\n  see ``CHECK constraint failed``.\n\n* For consistency with WSGI servers, the test client now sets the\n  ``Content-Length`` header to a string rather than an integer.\n\n* The return value of :func:`django.utils.text.slugify` is no longer marked as\n  HTML safe.\n\n* The default truncation character used by the :tfilter:`urlizetrunc`,\n  :tfilter:`truncatechars`, :tfilter:`truncatechars_html`,\n  :tfilter:`truncatewords`, and :tfilter:`truncatewords_html` template filters\n  is now the real ellipsis character (``…``) instead of 3 dots. You may have to\n  adapt some test output comparisons.\n\n* Support for bytestring paths in the template filesystem loader is removed.\n\n* :func:`django.utils.http.urlsafe_base64_encode` now returns a string instead\n  of a bytestring, and :func:`django.utils.http.urlsafe_base64_decode` may no\n  longer be passed a bytestring.\n\n* Support for ``cx_Oracle`` &lt; 6.0 is removed.\n\n* The minimum supported version of ``mysqlclient`` is increased from 1.3.7 to\n  1.3.13.\n\n* The minimum supported version of SQLite is increased from 3.7.15 to 3.8.3.\n\n* In an attempt to provide more semantic query data, ``NullBooleanSelect`` now\n  renders ``&lt;option&gt;`` values of ``unknown``, ``true``, and ``false`` instead\n  of ``1``, ``2``, and ``3``. For backwards compatibility, the old values are\n  still accepted as data.\n\n* :attr:`Group.name &lt;django.contrib.auth.models.Group.name&gt;` ``max_length``\n  is increased from 80 to 150 characters.\n\n* Tests that violate deferrable database constraints now error when run on\n  SQLite 3.20+, just like on other backends that support such constraints.\n\n* To catch usage mistakes, the test :class:`~django.test.Client` and\n  :func:`django.utils.http.urlencode` now raise ``TypeError`` if ``None`` is\n  passed as a value to encode because ``None`` can&#39;t be encoded in GET and POST\n  data. Either pass an empty string or omit the value.\n\n* The :djadmin:`ping_google` management command now defaults to ``https``\n  instead of ``http`` for the sitemap&#39;s URL. If your site uses http, use the\n  new :option:`ping_google --sitemap-uses-http` option. If you use the\n  :func:`~django.contrib.sitemaps.ping_google` function, set the new\n  ``sitemap_uses_https`` argument to ``False``.\n\n* :djadmin:`runserver` no longer supports `pyinotify` (replaced by Watchman).\n\n* The :class:`~django.db.models.Avg`, :class:`~django.db.models.StdDev`, and\n  :class:`~django.db.models.Variance` aggregate functions now return a\n  ``Decimal`` instead of a ``float`` when the input is ``Decimal``.\n\n* Tests will fail on SQLite if apps without migrations have relations to apps\n  with migrations. This has been a documented restriction since migrations were\n  added in Django 1.7, but it fails more reliably now. You&#39;ll see tests failing\n  with errors like ``no such table: &lt;app_label&gt;_&lt;model&gt;``. This was observed\n  with several third-party apps that had models in tests without migrations.\n  You must add migrations for such models.\n\n.. _deprecated-features-2.2:\n\nFeatures deprecated in 2.2\n==========================\n\nModel ``Meta.ordering`` will no longer affect ``GROUP BY`` queries\n------------------------------------------------------------------\n\nA model&#39;s ``Meta.ordering`` affecting ``GROUP BY`` queries (such as\n``.annotate().values()``) is a common source of confusion. Such queries now\nissue a deprecation warning with the advice to add an ``order_by()`` to retain\nthe current query. ``Meta.ordering`` will be ignored in such queries starting\nin Django 3.1.\n\nMiscellaneous\n-------------\n\n* ``django.utils.timezone.FixedOffset`` is deprecated in favor of\n  :class:`datetime.timezone`.\n\n* The undocumented ``QuerySetPaginator`` alias of\n  ``django.core.paginator.Paginator`` is deprecated.\n\n* The ``FloatRangeField`` model and form fields in ``django.contrib.postgres``\n  are deprecated in favor of a new name, ``DecimalRangeField``, to match the\n  underlying ``numrange`` data type used in the database.\n\n* The ``FILE_CHARSET`` setting is deprecated. Starting with Django 3.1, files\n  read from disk must be UTF-8 encoded.\n\n* ``django.contrib.staticfiles.storage.CachedStaticFilesStorage`` is\n  deprecated due to the intractable problems that it has. Use\n  :class:`.ManifestStaticFilesStorage` or a third-party cloud storage instead.\n\n* :meth:`.RemoteUserBackend.configure_user` is now passed ``request`` as the\n  first positional argument, if it accepts it. Support for overrides that don&#39;t\n  accept it will be removed in Django 3.1.\n\n* The :attr:`.SimpleTestCase.allow_database_queries`,\n  :attr:`.TransactionTestCase.multi_db`, and :attr:`.TestCase.multi_db`\n  attributes are deprecated in favor of :attr:`.SimpleTestCase.databases`,\n  :attr:`.TransactionTestCase.databases`, and :attr:`.TestCase.databases`.\n  These new attributes allow databases dependencies to be declared in order to\n  prevent unexpected queries against non-default databases to leak state\n  between tests. The previous behavior of ``allow_database_queries=True`` and\n  ``multi_db=True`` can be achieved by setting ``databases=&#39;__all__&#39;``.\n\n\n===========================\n   ```\n   \n  \n  \n   ### 2.1.12\n   ```\n   ===========================\n\n*September 2, 2019*\n\nDjango 2.1.12 fixes a regression in 2.1.11.\n\nBugfixes\n========\n\n* Fixed crash of ``KeyTransform()`` for\n  :class:`~django.contrib.postgres.fields.JSONField` and\n  :class:`~django.contrib.postgres.fields.HStoreField` when using on\n  expressions with params (:ticket:`30672`).\n\n\n===========================\n   ```\n   \n  \n  \n   ### 2.1.11\n   ```\n   ===========================\n\n*August 1, 2019*\n\nDjango 2.1.11 fixes security issues in 2.1.10.\n\nCVE-2019-14232: Denial-of-service possibility in ``django.utils.text.Truncator``\n================================================================================\n\nIf ``django.utils.text.Truncator``&#39;s ``chars()`` and ``words()`` methods\nwere passed the ``html=True`` argument, they were extremely slow to evaluate\ncertain inputs due to a catastrophic backtracking vulnerability in a regular\nexpression. The ``chars()`` and ``words()`` methods are used to implement the\n:tfilter:`truncatechars_html` and :tfilter:`truncatewords_html` template\nfilters, which were thus vulnerable.\n\nThe regular expressions used by ``Truncator`` have been simplified in order to\navoid potential backtracking issues. As a consequence, trailing punctuation may\nnow at times be included in the truncated output.\n\nCVE-2019-14233: Denial-of-service possibility in ``strip_tags()``\n=================================================================\n\nDue to the behavior of the underlying ``HTMLParser``,\n:func:`django.utils.html.strip_tags` would be extremely slow to evaluate\ncertain inputs containing large sequences of nested incomplete HTML entities.\nThe ``strip_tags()`` method is used to implement the corresponding\n:tfilter:`striptags` template filter, which was thus also vulnerable.\n\n``strip_tags()`` now avoids recursive calls to ``HTMLParser`` when progress\nremoving tags, but necessarily incomplete HTML entities, stops being made.\n\nRemember that absolutely NO guarantee is provided about the results of\n``strip_tags()`` being HTML safe. So NEVER mark safe the result of a\n``strip_tags()`` call without escaping it first, for example with\n:func:`django.utils.html.escape`.\n\nCVE-2019-14234: SQL injection possibility in key and index lookups for ``JSONField``/``HStoreField``\n====================================================================================================\n\n:lookup:`Key and index lookups &lt;jsonfield.key&gt;` for\n:class:`~django.contrib.postgres.fields.JSONField` and :lookup:`key lookups\n&lt;hstorefield.key&gt;` for :class:`~django.contrib.postgres.fields.HStoreField`\nwere subject to SQL injection, using a suitably crafted dictionary, with\ndictionary expansion, as the ``**kwargs`` passed to ``QuerySet.filter()``.\n\nCVE-2019-14235: Potential memory exhaustion in ``django.utils.encoding.uri_to_iri()``\n=====================================================================================\n\nIf passed certain inputs, :func:`django.utils.encoding.uri_to_iri` could lead\nto significant memory usage due to excessive recursion when re-percent-encoding\ninvalid UTF-8 octet sequences.\n\n``uri_to_iri()`` now avoids recursion when re-percent-encoding invalid UTF-8\noctet sequences.\n\n\n===========================\n   ```\n   \n  \n  \n   ### 2.1.10\n   ```\n   ===========================\n\n*July 1, 2019*\n\nDjango 2.1.10 fixes a security issue in 2.1.9.\n\nCVE-2019-12781: Incorrect HTTP detection with reverse-proxy connecting via HTTPS\n-----------------------------------------------------------------","created_at":"2019-09-15T13:48:37Z","updated_at":"2019-09-16T13:47:43Z","closed_at":"2019-09-16T13:47:43Z","merged_at":null,"merge_commit_sha":"883c4f9021bc2fe1f50a9a194de49e8006373172","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls/424/commits","review_comments_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls/424/comments","review_comment_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues/424/comments","statuses_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/statuses/552f3a967f1195cd8a65e761e1a404456a92770d","head":{"label":"rehandalal:pyup-scheduled-update-2019-09-15","ref":"pyup-scheduled-update-2019-09-15","sha":"552f3a967f1195cd8a65e761e1a404456a92770d","user":{"login":"rehandalal","id":987136,"node_id":"MDQ6VXNlcjk4NzEzNg==","avatar_url":"https://avatars2.githubusercontent.com/u/987136?v=4","gravatar_id":"","url":"https://api.github.com/users/rehandalal","html_url":"https://github.com/rehandalal","followers_url":"https://api.github.com/users/rehandalal/followers","following_url":"https://api.github.com/users/rehandalal/following{/other_user}","gists_url":"https://api.github.com/users/rehandalal/gists{/gist_id}","starred_url":"https://api.github.com/users/rehandalal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rehandalal/subscriptions","organizations_url":"https://api.github.com/users/rehandalal/orgs","repos_url":"https://api.github.com/users/rehandalal/repos","events_url":"https://api.github.com/users/rehandalal/events{/privacy}","received_events_url":"https://api.github.com/users/rehandalal/received_events","type":"User","site_admin":false},"repo":{"id":141790446,"node_id":"MDEwOlJlcG9zaXRvcnkxNDE3OTA0NDY=","name":"rehandalaldotcom","full_name":"rehandalal/rehandalaldotcom","private":false,"owner":{"login":"rehandalal","id":987136,"node_id":"MDQ6VXNlcjk4NzEzNg==","avatar_url":"https://avatars2.githubusercontent.com/u/987136?v=4","gravatar_id":"","url":"https://api.github.com/users/rehandalal","html_url":"https://github.com/rehandalal","followers_url":"https://api.github.com/users/rehandalal/followers","following_url":"https://api.github.com/users/rehandalal/following{/other_user}","gists_url":"https://api.github.com/users/rehandalal/gists{/gist_id}","starred_url":"https://api.github.com/users/rehandalal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rehandalal/subscriptions","organizations_url":"https://api.github.com/users/rehandalal/orgs","repos_url":"https://api.github.com/users/rehandalal/repos","events_url":"https://api.github.com/users/rehandalal/events{/privacy}","received_events_url":"https://api.github.com/users/rehandalal/received_events","type":"User","site_admin":false},"html_url":"https://github.com/rehandalal/rehandalaldotcom","description":null,"fork":false,"url":"https://api.github.com/repos/rehandalal/rehandalaldotcom","forks_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/forks","keys_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/teams","hooks_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/hooks","issue_events_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues/events{/number}","events_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/events","assignees_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/assignees{/user}","branches_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/branches{/branch}","tags_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/tags","blobs_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/refs{/sha}","trees_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/statuses/{sha}","languages_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/languages","stargazers_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/stargazers","contributors_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/contributors","subscribers_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/subscribers","subscription_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/subscription","commits_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/commits{/sha}","git_commits_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/commits{/sha}","comments_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/comments{/number}","issue_comment_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues/comments{/number}","contents_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/contents/{+path}","compare_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/merges","archive_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/downloads","issues_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues{/number}","pulls_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls{/number}","milestones_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/milestones{/number}","notifications_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/labels{/name}","releases_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/releases{/id}","deployments_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/deployments","created_at":"2018-07-21T07:18:52Z","updated_at":"2018-07-21T07:48:53Z","pushed_at":"2019-09-16T13:47:40Z","git_url":"git://github.com/rehandalal/rehandalaldotcom.git","ssh_url":"git@github.com:rehandalal/rehandalaldotcom.git","clone_url":"https://github.com/rehandalal/rehandalaldotcom.git","svn_url":"https://github.com/rehandalal/rehandalaldotcom","homepage":null,"size":816,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":22,"license":null,"forks":0,"open_issues":22,"watchers":0,"default_branch":"master"}},"base":{"label":"rehandalal:master","ref":"master","sha":"98366f016c80bc3f4f8fbb8ec4e19087f3189bd8","user":{"login":"rehandalal","id":987136,"node_id":"MDQ6VXNlcjk4NzEzNg==","avatar_url":"https://avatars2.githubusercontent.com/u/987136?v=4","gravatar_id":"","url":"https://api.github.com/users/rehandalal","html_url":"https://github.com/rehandalal","followers_url":"https://api.github.com/users/rehandalal/followers","following_url":"https://api.github.com/users/rehandalal/following{/other_user}","gists_url":"https://api.github.com/users/rehandalal/gists{/gist_id}","starred_url":"https://api.github.com/users/rehandalal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rehandalal/subscriptions","organizations_url":"https://api.github.com/users/rehandalal/orgs","repos_url":"https://api.github.com/users/rehandalal/repos","events_url":"https://api.github.com/users/rehandalal/events{/privacy}","received_events_url":"https://api.github.com/users/rehandalal/received_events","type":"User","site_admin":false},"repo":{"id":141790446,"node_id":"MDEwOlJlcG9zaXRvcnkxNDE3OTA0NDY=","name":"rehandalaldotcom","full_name":"rehandalal/rehandalaldotcom","private":false,"owner":{"login":"rehandalal","id":987136,"node_id":"MDQ6VXNlcjk4NzEzNg==","avatar_url":"https://avatars2.githubusercontent.com/u/987136?v=4","gravatar_id":"","url":"https://api.github.com/users/rehandalal","html_url":"https://github.com/rehandalal","followers_url":"https://api.github.com/users/rehandalal/followers","following_url":"https://api.github.com/users/rehandalal/following{/other_user}","gists_url":"https://api.github.com/users/rehandalal/gists{/gist_id}","starred_url":"https://api.github.com/users/rehandalal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rehandalal/subscriptions","organizations_url":"https://api.github.com/users/rehandalal/orgs","repos_url":"https://api.github.com/users/rehandalal/repos","events_url":"https://api.github.com/users/rehandalal/events{/privacy}","received_events_url":"https://api.github.com/users/rehandalal/received_events","type":"User","site_admin":false},"html_url":"https://github.com/rehandalal/rehandalaldotcom","description":null,"fork":false,"url":"https://api.github.com/repos/rehandalal/rehandalaldotcom","forks_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/forks","keys_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/teams","hooks_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/hooks","issue_events_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues/events{/number}","events_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/events","assignees_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/assignees{/user}","branches_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/branches{/branch}","tags_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/tags","blobs_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/refs{/sha}","trees_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/statuses/{sha}","languages_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/languages","stargazers_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/stargazers","contributors_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/contributors","subscribers_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/subscribers","subscription_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/subscription","commits_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/commits{/sha}","git_commits_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/git/commits{/sha}","comments_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/comments{/number}","issue_comment_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues/comments{/number}","contents_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/contents/{+path}","compare_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/merges","archive_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/downloads","issues_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues{/number}","pulls_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls{/number}","milestones_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/milestones{/number}","notifications_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/labels{/name}","releases_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/releases{/id}","deployments_url":"https://api.github.com/repos/rehandalal/rehandalaldotcom/deployments","created_at":"2018-07-21T07:18:52Z","updated_at":"2018-07-21T07:48:53Z","pushed_at":"2019-09-16T13:47:40Z","git_url":"git://github.com/rehandalal/rehandalaldotcom.git","ssh_url":"git@github.com:rehandalal/rehandalaldotcom.git","clone_url":"https://github.com/rehandalal/rehandalaldotcom.git","svn_url":"https://github.com/rehandalal/rehandalaldotcom","homepage":null,"size":816,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":22,"license":null,"forks":0,"open_issues":22,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls/424"},"html":{"href":"https://github.com/rehandalal/rehandalaldotcom/pull/424"},"issue":{"href":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues/424"},"comments":{"href":"https://api.github.com/repos/rehandalal/rehandalaldotcom/issues/424/comments"},"review_comments":{"href":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls/424/comments"},"review_comment":{"href":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rehandalal/rehandalaldotcom/pulls/424/commits"},"statuses":{"href":"https://api.github.com/repos/rehandalal/rehandalaldotcom/statuses/552f3a967f1195cd8a65e761e1a404456a92770d"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":true,"rebaseable":true,"mergeable_state":"clean","merged_by":null,"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":23,"additions":80,"deletions":76,"changed_files":2}}
other: {"actor":{"display_login":"pyup-bot"}}