Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-isort for openSUSE:Factory 
checked in at 2021-08-11 11:47:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-isort (Old)
 and      /work/SRC/openSUSE:Factory/.python-isort.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-isort"

Wed Aug 11 11:47:05 2021 rev:27 rq:910472 version:5.9.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-isort/python-isort.changes        
2021-07-13 22:36:59.902339609 +0200
+++ /work/SRC/openSUSE:Factory/.python-isort.new.1899/python-isort.changes      
2021-08-11 11:47:25.145731927 +0200
@@ -1,0 +2,11 @@
+Fri Jul 30 08:30:57 UTC 2021 - Sebastian Wagner <sebix+novell....@sebix.at>
+
+- update to version 5.9.3:
+    - Improved text of skipped file message to mention gitignore feature.
+    - Made all exceptions pickleable.
+    - Fixed #1779: Pylama integration ignores pylama specific isort config 
overrides.
+    - Fixed #1781: `--from-first` CLI flag shouldn't take any arguments.
+    - Fixed #1792: Sorting literals sometimes ignored when placed on first few 
lines of file.
+    - Fixed #1777: extend_skip is not honored wit a git submodule when 
skip_gitignore=true.
+
+-------------------------------------------------------------------

Old:
----
  isort-5.9.2-gh.tar.gz

New:
----
  isort-5.9.3-gh.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-isort.spec ++++++
--- /var/tmp/diff_new_pack.A315LU/_old  2021-08-11 11:47:25.745731205 +0200
+++ /var/tmp/diff_new_pack.A315LU/_new  2021-08-11 11:47:25.745731205 +0200
@@ -27,7 +27,7 @@
 %endif
 %define skip_python2 1
 Name:           python-isort%{psuffix}
-Version:        5.9.2
+Version:        5.9.3
 Release:        0
 Summary:        A Python utility / library to sort Python imports
 License:        MIT

++++++ isort-5.9.2-gh.tar.gz -> isort-5.9.3-gh.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/.pre-commit-hooks.yaml 
new/isort-5.9.3/.pre-commit-hooks.yaml
--- old/isort-5.9.2/.pre-commit-hooks.yaml      2021-07-08 10:36:49.000000000 
+0200
+++ new/isort-5.9.3/.pre-commit-hooks.yaml      2021-07-29 08:40:09.000000000 
+0200
@@ -6,4 +6,4 @@
     language_version: python3
     types_or: [cython, pyi, python]
     args: ['--filter-files']
-    minimum_pre_commit_version: '2.9.0'
+    minimum_pre_commit_version: '2.9.2'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/CHANGELOG.md new/isort-5.9.3/CHANGELOG.md
--- old/isort-5.9.2/CHANGELOG.md        2021-07-08 10:36:49.000000000 +0200
+++ new/isort-5.9.3/CHANGELOG.md        2021-07-29 08:40:09.000000000 +0200
@@ -4,6 +4,14 @@
 NOTE: isort follows the [semver](https://semver.org/) versioning standard.
 Find out more about isort's release policy 
[here](https://pycqa.github.io/isort/docs/major_releases/release_policy).
 
+### 5.9.3 July 28 2021
+  - Improved text of skipped file message to mention gitignore feature.
+  - Made all exceptions pickleable.
+  - Fixed #1779: Pylama integration ignores pylama specific isort config 
overrides.
+  - Fixed #1781: `--from-first` CLI flag shouldn't take any arguments.
+  - Fixed #1792: Sorting literals sometimes ignored when placed on first few 
lines of file.
+  - Fixed #1777: extend_skip is not honored wit a git submodule when 
skip_gitignore=true.
+
 ### 5.9.2 July 8th 2021
   - Improved behavior of `isort --check --atomic` against Cython files.
   - Fixed #1769: Future imports added below assignments when no other imports 
present.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/docs/contributing/4.-acknowledgements.md 
new/isort-5.9.3/docs/contributing/4.-acknowledgements.md
--- old/isort-5.9.2/docs/contributing/4.-acknowledgements.md    2021-07-08 
10:36:49.000000000 +0200
+++ new/isort-5.9.3/docs/contributing/4.-acknowledgements.md    2021-07-29 
08:40:09.000000000 +0200
@@ -229,6 +229,7 @@
 - Arthur Rio (@arthurio)
 - Bob (@bobwalker99)
 - Martijn Pieters (@mjpieters)
+- Asiel D??az Ben??tez (@adbenitez)
 
 Documenters
 ===================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/isort/_version.py 
new/isort-5.9.3/isort/_version.py
--- old/isort-5.9.2/isort/_version.py   2021-07-08 10:36:49.000000000 +0200
+++ new/isort-5.9.3/isort/_version.py   2021-07-29 08:40:09.000000000 +0200
@@ -1 +1 @@
-__version__ = "5.9.2"
+__version__ = "5.9.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/isort/core.py 
new/isort-5.9.3/isort/core.py
--- old/isort-5.9.2/isort/core.py       2021-07-08 10:36:49.000000000 +0200
+++ new/isort-5.9.3/isort/core.py       2021-07-29 08:40:09.000000000 +0200
@@ -176,10 +176,13 @@
                 (index == 0 or (index in (1, 2) and not contains_imports))
                 and stripped_line.startswith("#")
                 and stripped_line not in config.section_comments
+                and stripped_line not in CODE_SORT_COMMENTS
             ):
                 in_top_comment = True
             elif in_top_comment and (
-                not line.startswith("#") or stripped_line in 
config.section_comments
+                not line.startswith("#")
+                or stripped_line in config.section_comments
+                or stripped_line in CODE_SORT_COMMENTS
             ):
                 in_top_comment = False
                 first_comment_index_end = index - 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/isort/exceptions.py 
new/isort-5.9.3/isort/exceptions.py
--- old/isort-5.9.2/isort/exceptions.py 2021-07-08 10:36:49.000000000 +0200
+++ new/isort-5.9.3/isort/exceptions.py 2021-07-29 08:40:09.000000000 +0200
@@ -1,4 +1,5 @@
 """All isort specific exception classes should be defined here"""
+from functools import partial
 from pathlib import Path
 from typing import Any, Dict, List, Type, Union
 
@@ -8,6 +9,9 @@
 class ISortError(Exception):
     """Base isort exception object from which all isort sourced exceptions 
should inherit"""
 
+    def __reduce__(self):  # type: ignore
+        return (partial(type(self), **self.__dict__), ())
+
 
 class InvalidSettingsPath(ISortError):
     """Raised when a settings path is provided that is neither a valid file or 
directory"""
@@ -48,13 +52,14 @@
 
     def __init__(self, message: str, file_path: str):
         super().__init__(message)
+        self.message = message
         self.file_path = file_path
 
 
 class FileSkipComment(FileSkipped):
     """Raised when an entire file is skipped due to a isort skip file 
comment"""
 
-    def __init__(self, file_path: str):
+    def __init__(self, file_path: str, **kwargs: str):
         super().__init__(
             f"{file_path} contains a file skip comment and was skipped.", 
file_path=file_path
         )
@@ -63,7 +68,7 @@
 class FileSkipSetting(FileSkipped):
     """Raised when an entire file is skipped due to provided isort settings"""
 
-    def __init__(self, file_path: str):
+    def __init__(self, file_path: str, **kwargs: str):
         super().__init__(
             f"{file_path} was skipped as it's listed in 'skip' setting"
             " or matches a glob in 'skip_glob' setting",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/isort/main.py 
new/isort-5.9.3/isort/main.py
--- old/isort-5.9.2/isort/main.py       2021-07-08 10:36:49.000000000 +0200
+++ new/isort-5.9.3/isort/main.py       2021-07-29 08:40:09.000000000 +0200
@@ -462,6 +462,7 @@
         "--ff",
         "--from-first",
         dest="from_first",
+        action="store_true",
         help="Switches the typical ordering preference, "
         "showing from imports first then straight ones.",
     )
@@ -1204,8 +1205,9 @@
             if config.verbose:
                 for was_skipped in skipped:
                     print(
-                        f"{was_skipped} was skipped as it's listed in 'skip' 
setting"
-                        " or matches a glob in 'skip_glob' setting"
+                        f"{was_skipped} was skipped as it's listed in 'skip' 
setting, "
+                        "matches a glob in 'skip_glob' setting, or is in a 
.gitignore file with "
+                        "--skip-gitignore enabled."
                     )
             print(f"Skipped {num_skipped} files")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/isort/pylama_isort.py 
new/isort-5.9.3/isort/pylama_isort.py
--- old/isort-5.9.2/isort/pylama_isort.py       2021-07-08 10:36:49.000000000 
+0200
+++ new/isort-5.9.3/isort/pylama_isort.py       2021-07-29 08:40:09.000000000 
+0200
@@ -1,7 +1,7 @@
 import os
 import sys
 from contextlib import contextmanager
-from typing import Any, Dict, Iterator, List
+from typing import Any, Dict, Iterator, List, Optional
 
 from pylama.lint import Linter as BaseLinter  # type: ignore
 
@@ -24,11 +24,13 @@
         """Determine if this path should be linted."""
         return path.endswith(".py")
 
-    def run(self, path: str, **meta: Any) -> List[Dict[str, Any]]:
+    def run(
+        self, path: str, params: Optional[Dict[str, Any]] = None, **meta: Any
+    ) -> List[Dict[str, Any]]:
         """Lint the file. Return an array of error dicts if appropriate."""
         with supress_stdout():
             try:
-                if not api.check_file(path, disregard_skip=False):
+                if not api.check_file(path, disregard_skip=False, **params or 
{}):
                     return [
                         {
                             "lnum": 0,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/isort/settings.py 
new/isort-5.9.3/isort/settings.py
--- old/isort-5.9.2/isort/settings.py   2021-07-08 10:36:49.000000000 +0200
+++ new/isort-5.9.3/isort/settings.py   2021-07-29 08:40:09.000000000 +0200
@@ -550,17 +550,16 @@
 
         files: List[str] = []
         # don't check symlinks; either part of the repo and would be checked
-        # twice, or is external to the repo and git won't konw anything about 
it
+        # twice, or is external to the repo and git won't know anything about 
it
         for root, _dirs, git_files in os.walk(git_folder, followlinks=False):
+            if ".git" in _dirs:
+                _dirs.remove(".git")
             for git_file in git_files:
-                git_path = os.path.join(root, git_file)
-                # followlinks only disables walking into linked dirs
-                if not os.path.islink(git_path):  # pragma: no cover
-                    files.append(git_path)
+                files.append(os.path.join(root, git_file))
         git_options = ["-C", str(git_folder), "-c", "core.quotePath="]
         try:
             ignored = subprocess.check_output(  # nosec # skipcq: PYL-W1510
-                ["git", *git_options, "check-ignore", "-z", "--stdin"],
+                ["git", *git_options, "check-ignore", "-z", "--stdin", 
"--no-index"],
                 encoding="utf-8",
                 env=env,
                 input="\0".join(files),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/poetry.lock new/isort-5.9.3/poetry.lock
--- old/isort-5.9.2/poetry.lock 2021-07-08 10:36:49.000000000 +0200
+++ new/isort-5.9.3/poetry.lock 2021-07-29 08:40:09.000000000 +0200
@@ -16,7 +16,7 @@
 
 [[package]]
 name = "arrow"
-version = "1.1.0"
+version = "1.1.1"
 description = "Better dates & times for Python"
 category = "dev"
 optional = false
@@ -203,7 +203,7 @@
 
 [[package]]
 name = "cruft"
-version = "2.8.0"
+version = "2.9.0"
 description = "Allows you to maintain all the necessary cruft for packaging 
and building projects separate from the code you intentionally write. Built 
on-top of CookieCutter."
 category = "dev"
 optional = false
@@ -213,7 +213,7 @@
 click = ">=7.1.2,<8.0.0"
 cookiecutter = ">=1.6,<2.0"
 gitpython = ">=3.0,<4.0"
-typer = ">=0.3.1,<0.4.0"
+typer = ">=0.3.2,<0.4.0"
 
 [package.extras]
 pyproject = ["toml (>=0.10,<0.11)"]
@@ -448,7 +448,7 @@
 
 [[package]]
 name = "hstspreload"
-version = "2020.12.22"
+version = "2021.7.5"
 description = "Chromium HSTS Preload list as a Python package"
 category = "dev"
 optional = false
@@ -506,7 +506,7 @@
 
 [[package]]
 name = "hypothesis"
-version = "6.14.0"
+version = "6.14.1"
 description = "A library for property-based testing"
 category = "dev"
 optional = false
@@ -592,7 +592,7 @@
 
 [[package]]
 name = "importlib-metadata"
-version = "4.5.0"
+version = "4.6.1"
 description = "Read metadata from Python packages"
 category = "main"
 optional = false
@@ -604,11 +604,12 @@
 
 [package.extras]
 docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", 
"pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", 
"flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources 
(>=1.3)"]
+perf = ["ipython"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", 
"pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", 
"flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", 
"pytest-mypy", "importlib-resources (>=1.3)"]
 
 [[package]]
 name = "importlib-resources"
-version = "5.1.4"
+version = "5.2.0"
 description = "Read resources from Python packages"
 category = "dev"
 optional = false
@@ -829,7 +830,7 @@
 
 [[package]]
 name = "mkdocs-material"
-version = "7.1.8"
+version = "7.1.9"
 description = "A Material Design theme for MkDocs"
 category = "dev"
 optional = false
@@ -920,11 +921,11 @@
 
 [[package]]
 name = "packaging"
-version = "20.9"
+version = "21.0"
 description = "Core utilities for Python packages"
 category = "main"
 optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=3.6"
 
 [package.dependencies]
 pyparsing = ">=2.0.2"
@@ -1375,7 +1376,7 @@
 
 [[package]]
 name = "regex"
-version = "2021.4.4"
+version = "2021.7.6"
 description = "Alternative regular expression module, to replace re."
 category = "dev"
 optional = false
@@ -1638,7 +1639,7 @@
 
 [[package]]
 name = "urllib3"
-version = "1.26.5"
+version = "1.26.6"
 description = "HTTP library with thread-safe connection pooling, file post, 
and more."
 category = "main"
 optional = false
@@ -1698,7 +1699,7 @@
 
 [[package]]
 name = "watchdog"
-version = "2.1.2"
+version = "2.1.3"
 description = "Filesystem events monitoring"
 category = "dev"
 optional = false
@@ -1736,7 +1737,7 @@
 
 [[package]]
 name = "zipp"
-version = "3.4.1"
+version = "3.5.0"
 description = "Backport of pathlib-compatible object wrapper for zip files"
 category = "main"
 optional = false
@@ -1744,7 +1745,7 @@
 
 [package.extras]
 docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=4.6)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", 
"pytest-cov", "pytest-enabler", "jaraco.itertools", "func-timeout", 
"pytest-black (>=0.3.7)", "pytest-mypy"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", 
"pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", 
"pytest-black (>=0.3.7)", "pytest-mypy"]
 
 [extras]
 colors = ["colorama"]
@@ -1767,8 +1768,8 @@
     {file = "appnope-0.1.2.tar.gz", hash = 
"sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"},
 ]
 arrow = [
-    {file = "arrow-1.1.0-py3-none-any.whl", hash = 
"sha256:8cbe6a629b1c54ae11b52d6d9e70890089241958f63bc59467e277e34b7a5378"},
-    {file = "arrow-1.1.0.tar.gz", hash = 
"sha256:b8fe13abf3517abab315e09350c903902d1447bd311afbc17547ba1cb3ff5bd8"},
+    {file = "arrow-1.1.1-py3-none-any.whl", hash = 
"sha256:77a60a4db5766d900a2085ce9074c5c7b8e2c99afeaa98ad627637ff6f292510"},
+    {file = "arrow-1.1.1.tar.gz", hash = 
"sha256:dee7602f6c60e3ec510095b5e301441bc56288cb8f51def14dcb3079f623823a"},
 ]
 atomicwrites = [
     {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = 
"sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
@@ -1882,8 +1883,8 @@
     {file = "coverage-5.5.tar.gz", hash = 
"sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"},
 ]
 cruft = [
-    {file = "cruft-2.8.0-py3-none-any.whl", hash = 
"sha256:986bfc6b907133284882f48708a8ea9c7a90591b45f02eddd01beeb973fa0c83"},
-    {file = "cruft-2.8.0.tar.gz", hash = 
"sha256:29e6c95ed46bda8d26b9666e78bdcd625f3a2352620fc52c44dc4ff64a298ce0"},
+    {file = "cruft-2.9.0-py3-none-any.whl", hash = 
"sha256:6e77ff2f59a2e2aee7c54ebf302b5a4dd231af44e5971d5ad60135c9e7f4c29d"},
+    {file = "cruft-2.9.0.tar.gz", hash = 
"sha256:550703c35b8125612ad89d93d176f29b3e362c19c74ed28895625afa9010fcb1"},
 ]
 dataclasses = [
     {file = "dataclasses-0.7-py3-none-any.whl", hash = 
"sha256:3459118f7ede7c8bea0fe795bff7c6c2ce287d01dd226202f7c9ebc0610a7836"},
@@ -1983,8 +1984,8 @@
     {file = "hpack-3.0.0.tar.gz", hash = 
"sha256:8eec9c1f4bfae3408a3f30500261f7e6a65912dc138526ea054f9ad98892e9d2"},
 ]
 hstspreload = [
-    {file = "hstspreload-2020.12.22-py3-none-any.whl", hash = 
"sha256:f09afa7015257d33ead35137ddfee3604040b7f9eefbe995dacb4d04744f4034"},
-    {file = "hstspreload-2020.12.22.tar.gz", hash = 
"sha256:8bd8cdf180627e6289805efad5399a55bedf2e707fdcbb243b74298b95db48c6"},
+    {file = "hstspreload-2021.7.5-py3-none-any.whl", hash = 
"sha256:59fcb43897c2d63666a7e7cac2b2cb423e2c97e39fcf565c7ed814920e02bd8e"},
+    {file = "hstspreload-2021.7.5.tar.gz", hash = 
"sha256:ad5c82b2d6246dda4ca21d477fd9c009a88eb6bdf69456acf241f077d7e35d81"},
 ]
 httpcore = [
     {file = "httpcore-0.9.1-py3-none-any.whl", hash = 
"sha256:9850fe97a166a794d7e920590d5ec49a05488884c9fc8b5dba8561effab0c2a0"},
@@ -2003,8 +2004,8 @@
     {file = "hyperframe-5.2.0.tar.gz", hash = 
"sha256:a9f5c17f2cc3c719b917c4f33ed1c61bd1f8dfac4b1bd23b7c80b3400971b41f"},
 ]
 hypothesis = [
-    {file = "hypothesis-6.14.0-py3-none-any.whl", hash = 
"sha256:27aa2af763af06b8b61ce65c09626cf1da6d3a6ff155900f3c581837b453313a"},
-    {file = "hypothesis-6.14.0.tar.gz", hash = 
"sha256:9bdee01ae260329b16117e9b0229a839b4a77747a985922653f595bd2a6a541a"},
+    {file = "hypothesis-6.14.1-py3-none-any.whl", hash = 
"sha256:6dad44da8962cc7c13cdc28cf9b78c6779b5a0b0279a9baac427ae6d109f70e3"},
+    {file = "hypothesis-6.14.1.tar.gz", hash = 
"sha256:88b0736a5691b68b8e16a4b7ee8e4c8596810c5a20989ea5b5f64870a7c25740"},
 ]
 hypothesis-auto = [
     {file = "hypothesis-auto-1.1.4.tar.gz", hash = 
"sha256:5e2c2fb09dc09842512d80630bb792359a1d33d2c0473ad47ee23da0be9e32b1"},
@@ -2040,12 +2041,12 @@
     {file = "immutables-0.15.tar.gz", hash = 
"sha256:3713ab1ebbb6946b7ce1387bb9d1d7f5e09c45add58c2a2ee65f963c171e746b"},
 ]
 importlib-metadata = [
-    {file = "importlib_metadata-4.5.0-py3-none-any.whl", hash = 
"sha256:833b26fb89d5de469b24a390e9df088d4e52e4ba33b01dc5e0e4f41b81a16c00"},
-    {file = "importlib_metadata-4.5.0.tar.gz", hash = 
"sha256:b142cc1dd1342f31ff04bb7d022492b09920cb64fed867cd3ea6f80fe3ebd139"},
+    {file = "importlib_metadata-4.6.1-py3-none-any.whl", hash = 
"sha256:9f55f560e116f8643ecf2922d9cd3e1c7e8d52e683178fecd9d08f6aa357e11e"},
+    {file = "importlib_metadata-4.6.1.tar.gz", hash = 
"sha256:079ada16b7fc30dfbb5d13399a5113110dab1aa7c2bc62f66af75f0b717c8cac"},
 ]
 importlib-resources = [
-    {file = "importlib_resources-5.1.4-py3-none-any.whl", hash = 
"sha256:e962bff7440364183203d179d7ae9ad90cb1f2b74dcb84300e88ecc42dca3351"},
-    {file = "importlib_resources-5.1.4.tar.gz", hash = 
"sha256:54161657e8ffc76596c4ede7080ca68cb02962a2e074a2586b695a93a925d36e"},
+    {file = "importlib_resources-5.2.0-py3-none-any.whl", hash = 
"sha256:a0143290bef3cbc99de9e40176e4987780939a955b8632f02ce6c935f42e9bfc"},
+    {file = "importlib_resources-5.2.0.tar.gz", hash = 
"sha256:22a2c42d8c6a1d30aa8a0e1f57293725bfd5c013d562585e46aff469e0ff78b3"},
 ]
 iniconfig = [
     {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = 
"sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
@@ -2138,8 +2139,8 @@
     {file = "mkdocs-1.2.1.tar.gz", hash = 
"sha256:6e0ea175366e3a50d334597b0bc042b8cebd512398cdd3f6f34842d0ef524905"},
 ]
 mkdocs-material = [
-    {file = "mkdocs-material-7.1.8.tar.gz", hash = 
"sha256:e555c66ece5eab7023c4733270dc7627280e707e5082dab278d6a7a4881d2435"},
-    {file = "mkdocs_material-7.1.8-py2.py3-none-any.whl", hash = 
"sha256:08eaf9f77c6d026706397bae2c50d202cfe3a81ef984027b671b4acd365dfc5b"},
+    {file = "mkdocs-material-7.1.9.tar.gz", hash = 
"sha256:5a2fd487f769f382a7c979e869e4eab1372af58d7dec44c4365dd97ef5268cb5"},
+    {file = "mkdocs_material-7.1.9-py2.py3-none-any.whl", hash = 
"sha256:92c8a2bd3bd44d5948eefc46ba138e2d3285cac658900112b6bf5722c7d067a5"},
 ]
 mkdocs-material-extensions = [
     {file = "mkdocs-material-extensions-1.0.1.tar.gz", hash = 
"sha256:6947fb7f5e4291e3c61405bad3539d81e0b3cd62ae0d66ced018128af509c68f"},
@@ -2223,8 +2224,8 @@
     {file = "orderedmultidict-1.0.1.tar.gz", hash = 
"sha256:04070bbb5e87291cc9bfa51df413677faf2141c73c61d2a5f7b26bea3cd882ad"},
 ]
 packaging = [
-    {file = "packaging-20.9-py2.py3-none-any.whl", hash = 
"sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a"},
-    {file = "packaging-20.9.tar.gz", hash = 
"sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5"},
+    {file = "packaging-21.0-py3-none-any.whl", hash = 
"sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14"},
+    {file = "packaging-21.0.tar.gz", hash = 
"sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"},
 ]
 parso = [
     {file = "parso-0.8.2-py2.py3-none-any.whl", hash = 
"sha256:a8c4922db71e4fdb90e0d0bc6e50f9b273d3397925e5e60a717e719201778d22"},
@@ -2420,47 +2421,47 @@
     {file = "pyyaml_env_tag-0.1.tar.gz", hash = 
"sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
 ]
 regex = [
-    {file = "regex-2021.4.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = 
"sha256:619d71c59a78b84d7f18891fe914446d07edd48dc8328c8e149cbe0929b4e000"},
-    {file = "regex-2021.4.4-cp36-cp36m-manylinux1_i686.whl", hash = 
"sha256:47bf5bf60cf04d72bf6055ae5927a0bd9016096bf3d742fa50d9bf9f45aa0711"},
-    {file = "regex-2021.4.4-cp36-cp36m-manylinux1_x86_64.whl", hash = 
"sha256:281d2fd05555079448537fe108d79eb031b403dac622621c78944c235f3fcf11"},
-    {file = "regex-2021.4.4-cp36-cp36m-manylinux2010_i686.whl", hash = 
"sha256:bd28bc2e3a772acbb07787c6308e00d9626ff89e3bfcdebe87fa5afbfdedf968"},
-    {file = "regex-2021.4.4-cp36-cp36m-manylinux2010_x86_64.whl", hash = 
"sha256:7c2a1af393fcc09e898beba5dd59196edaa3116191cc7257f9224beaed3e1aa0"},
-    {file = "regex-2021.4.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = 
"sha256:c38c71df845e2aabb7fb0b920d11a1b5ac8526005e533a8920aea97efb8ec6a4"},
-    {file = "regex-2021.4.4-cp36-cp36m-manylinux2014_i686.whl", hash = 
"sha256:96fcd1888ab4d03adfc9303a7b3c0bd78c5412b2bfbe76db5b56d9eae004907a"},
-    {file = "regex-2021.4.4-cp36-cp36m-manylinux2014_x86_64.whl", hash = 
"sha256:ade17eb5d643b7fead300a1641e9f45401c98eee23763e9ed66a43f92f20b4a7"},
-    {file = "regex-2021.4.4-cp36-cp36m-win32.whl", hash = 
"sha256:e8e5b509d5c2ff12f8418006d5a90e9436766133b564db0abaec92fd27fcee29"},
-    {file = "regex-2021.4.4-cp36-cp36m-win_amd64.whl", hash = 
"sha256:11d773d75fa650cd36f68d7ca936e3c7afaae41b863b8c387a22aaa78d3c5c79"},
-    {file = "regex-2021.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = 
"sha256:d3029c340cfbb3ac0a71798100ccc13b97dddf373a4ae56b6a72cf70dfd53bc8"},
-    {file = "regex-2021.4.4-cp37-cp37m-manylinux1_i686.whl", hash = 
"sha256:18c071c3eb09c30a264879f0d310d37fe5d3a3111662438889ae2eb6fc570c31"},
-    {file = "regex-2021.4.4-cp37-cp37m-manylinux1_x86_64.whl", hash = 
"sha256:4c557a7b470908b1712fe27fb1ef20772b78079808c87d20a90d051660b1d69a"},
-    {file = "regex-2021.4.4-cp37-cp37m-manylinux2010_i686.whl", hash = 
"sha256:01afaf2ec48e196ba91b37451aa353cb7eda77efe518e481707e0515025f0cd5"},
-    {file = "regex-2021.4.4-cp37-cp37m-manylinux2010_x86_64.whl", hash = 
"sha256:3a9cd17e6e5c7eb328517969e0cb0c3d31fd329298dd0c04af99ebf42e904f82"},
-    {file = "regex-2021.4.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = 
"sha256:90f11ff637fe8798933fb29f5ae1148c978cccb0452005bf4c69e13db951e765"},
-    {file = "regex-2021.4.4-cp37-cp37m-manylinux2014_i686.whl", hash = 
"sha256:919859aa909429fb5aa9cf8807f6045592c85ef56fdd30a9a3747e513db2536e"},
-    {file = "regex-2021.4.4-cp37-cp37m-manylinux2014_x86_64.whl", hash = 
"sha256:339456e7d8c06dd36a22e451d58ef72cef293112b559010db3d054d5560ef439"},
-    {file = "regex-2021.4.4-cp37-cp37m-win32.whl", hash = 
"sha256:67bdb9702427ceddc6ef3dc382455e90f785af4c13d495f9626861763ee13f9d"},
-    {file = "regex-2021.4.4-cp37-cp37m-win_amd64.whl", hash = 
"sha256:32e65442138b7b76dd8173ffa2cf67356b7bc1768851dded39a7a13bf9223da3"},
-    {file = "regex-2021.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = 
"sha256:1e1c20e29358165242928c2de1482fb2cf4ea54a6a6dea2bd7a0e0d8ee321500"},
-    {file = "regex-2021.4.4-cp38-cp38-manylinux1_i686.whl", hash = 
"sha256:314d66636c494ed9c148a42731b3834496cc9a2c4251b1661e40936814542b14"},
-    {file = "regex-2021.4.4-cp38-cp38-manylinux1_x86_64.whl", hash = 
"sha256:6d1b01031dedf2503631d0903cb563743f397ccaf6607a5e3b19a3d76fc10480"},
-    {file = "regex-2021.4.4-cp38-cp38-manylinux2010_i686.whl", hash = 
"sha256:741a9647fcf2e45f3a1cf0e24f5e17febf3efe8d4ba1281dcc3aa0459ef424dc"},
-    {file = "regex-2021.4.4-cp38-cp38-manylinux2010_x86_64.whl", hash = 
"sha256:4c46e22a0933dd783467cf32b3516299fb98cfebd895817d685130cc50cd1093"},
-    {file = "regex-2021.4.4-cp38-cp38-manylinux2014_aarch64.whl", hash = 
"sha256:e512d8ef5ad7b898cdb2d8ee1cb09a8339e4f8be706d27eaa180c2f177248a10"},
-    {file = "regex-2021.4.4-cp38-cp38-manylinux2014_i686.whl", hash = 
"sha256:980d7be47c84979d9136328d882f67ec5e50008681d94ecc8afa8a65ed1f4a6f"},
-    {file = "regex-2021.4.4-cp38-cp38-manylinux2014_x86_64.whl", hash = 
"sha256:ce15b6d103daff8e9fee13cf7f0add05245a05d866e73926c358e871221eae87"},
-    {file = "regex-2021.4.4-cp38-cp38-win32.whl", hash = 
"sha256:a91aa8619b23b79bcbeb37abe286f2f408d2f2d6f29a17237afda55bb54e7aac"},
-    {file = "regex-2021.4.4-cp38-cp38-win_amd64.whl", hash = 
"sha256:c0502c0fadef0d23b128605d69b58edb2c681c25d44574fc673b0e52dce71ee2"},
-    {file = "regex-2021.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = 
"sha256:598585c9f0af8374c28edd609eb291b5726d7cbce16be6a8b95aa074d252ee17"},
-    {file = "regex-2021.4.4-cp39-cp39-manylinux1_i686.whl", hash = 
"sha256:ee54ff27bf0afaf4c3b3a62bcd016c12c3fdb4ec4f413391a90bd38bc3624605"},
-    {file = "regex-2021.4.4-cp39-cp39-manylinux1_x86_64.whl", hash = 
"sha256:7d9884d86dd4dd489e981d94a65cd30d6f07203d90e98f6f657f05170f6324c9"},
-    {file = "regex-2021.4.4-cp39-cp39-manylinux2010_i686.whl", hash = 
"sha256:bf5824bfac591ddb2c1f0a5f4ab72da28994548c708d2191e3b87dd207eb3ad7"},
-    {file = "regex-2021.4.4-cp39-cp39-manylinux2010_x86_64.whl", hash = 
"sha256:563085e55b0d4fb8f746f6a335893bda5c2cef43b2f0258fe1020ab1dd874df8"},
-    {file = "regex-2021.4.4-cp39-cp39-manylinux2014_aarch64.whl", hash = 
"sha256:b9c3db21af35e3b3c05764461b262d6f05bbca08a71a7849fd79d47ba7bc33ed"},
-    {file = "regex-2021.4.4-cp39-cp39-manylinux2014_i686.whl", hash = 
"sha256:3916d08be28a1149fb97f7728fca1f7c15d309a9f9682d89d79db75d5e52091c"},
-    {file = "regex-2021.4.4-cp39-cp39-manylinux2014_x86_64.whl", hash = 
"sha256:fd45ff9293d9274c5008a2054ecef86a9bfe819a67c7be1afb65e69b405b3042"},
-    {file = "regex-2021.4.4-cp39-cp39-win32.whl", hash = 
"sha256:fa4537fb4a98fe8fde99626e4681cc644bdcf2a795038533f9f711513a862ae6"},
-    {file = "regex-2021.4.4-cp39-cp39-win_amd64.whl", hash = 
"sha256:97f29f57d5b84e73fbaf99ab3e26134e6687348e95ef6b48cfd2c06807005a07"},
-    {file = "regex-2021.4.4.tar.gz", hash = 
"sha256:52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb"},
+    {file = "regex-2021.7.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = 
"sha256:e6a1e5ca97d411a461041d057348e578dc344ecd2add3555aedba3b408c9f874"},
+    {file = "regex-2021.7.6-cp36-cp36m-manylinux1_i686.whl", hash = 
"sha256:6afe6a627888c9a6cfbb603d1d017ce204cebd589d66e0703309b8048c3b0854"},
+    {file = "regex-2021.7.6-cp36-cp36m-manylinux1_x86_64.whl", hash = 
"sha256:ccb3d2190476d00414aab36cca453e4596e8f70a206e2aa8db3d495a109153d2"},
+    {file = "regex-2021.7.6-cp36-cp36m-manylinux2010_i686.whl", hash = 
"sha256:ed693137a9187052fc46eedfafdcb74e09917166362af4cc4fddc3b31560e93d"},
+    {file = "regex-2021.7.6-cp36-cp36m-manylinux2010_x86_64.whl", hash = 
"sha256:99d8ab206a5270c1002bfcf25c51bf329ca951e5a169f3b43214fdda1f0b5f0d"},
+    {file = "regex-2021.7.6-cp36-cp36m-manylinux2014_i686.whl", hash = 
"sha256:b85ac458354165405c8a84725de7bbd07b00d9f72c31a60ffbf96bb38d3e25fa"},
+    {file = "regex-2021.7.6-cp36-cp36m-manylinux2014_x86_64.whl", hash = 
"sha256:3f5716923d3d0bfb27048242a6e0f14eecdb2e2a7fac47eda1d055288595f222"},
+    {file = 
"regex-2021.7.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", 
hash = 
"sha256:e5983c19d0beb6af88cb4d47afb92d96751fb3fa1784d8785b1cdf14c6519407"},
+    {file = "regex-2021.7.6-cp36-cp36m-win32.whl", hash = 
"sha256:c92831dac113a6e0ab28bc98f33781383fe294df1a2c3dfd1e850114da35fd5b"},
+    {file = "regex-2021.7.6-cp36-cp36m-win_amd64.whl", hash = 
"sha256:791aa1b300e5b6e5d597c37c346fb4d66422178566bbb426dd87eaae475053fb"},
+    {file = "regex-2021.7.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = 
"sha256:59506c6e8bd9306cd8a41511e32d16d5d1194110b8cfe5a11d102d8b63cf945d"},
+    {file = "regex-2021.7.6-cp37-cp37m-manylinux1_i686.whl", hash = 
"sha256:564a4c8a29435d1f2256ba247a0315325ea63335508ad8ed938a4f14c4116a5d"},
+    {file = "regex-2021.7.6-cp37-cp37m-manylinux1_x86_64.whl", hash = 
"sha256:59c00bb8dd8775473cbfb967925ad2c3ecc8886b3b2d0c90a8e2707e06c743f0"},
+    {file = "regex-2021.7.6-cp37-cp37m-manylinux2010_i686.whl", hash = 
"sha256:9a854b916806c7e3b40e6616ac9e85d3cdb7649d9e6590653deb5b341a736cec"},
+    {file = "regex-2021.7.6-cp37-cp37m-manylinux2010_x86_64.whl", hash = 
"sha256:db2b7df831c3187a37f3bb80ec095f249fa276dbe09abd3d35297fc250385694"},
+    {file = "regex-2021.7.6-cp37-cp37m-manylinux2014_i686.whl", hash = 
"sha256:173bc44ff95bc1e96398c38f3629d86fa72e539c79900283afa895694229fe6a"},
+    {file = "regex-2021.7.6-cp37-cp37m-manylinux2014_x86_64.whl", hash = 
"sha256:15dddb19823f5147e7517bb12635b3c82e6f2a3a6b696cc3e321522e8b9308ad"},
+    {file = 
"regex-2021.7.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", 
hash = 
"sha256:2ddeabc7652024803666ea09f32dd1ed40a0579b6fbb2a213eba590683025895"},
+    {file = "regex-2021.7.6-cp37-cp37m-win32.whl", hash = 
"sha256:f080248b3e029d052bf74a897b9d74cfb7643537fbde97fe8225a6467fb559b5"},
+    {file = "regex-2021.7.6-cp37-cp37m-win_amd64.whl", hash = 
"sha256:d8bbce0c96462dbceaa7ac4a7dfbbee92745b801b24bce10a98d2f2b1ea9432f"},
+    {file = "regex-2021.7.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = 
"sha256:edd1a68f79b89b0c57339bce297ad5d5ffcc6ae7e1afdb10f1947706ed066c9c"},
+    {file = "regex-2021.7.6-cp38-cp38-manylinux1_i686.whl", hash = 
"sha256:422dec1e7cbb2efbbe50e3f1de36b82906def93ed48da12d1714cabcd993d7f0"},
+    {file = "regex-2021.7.6-cp38-cp38-manylinux1_x86_64.whl", hash = 
"sha256:cbe23b323988a04c3e5b0c387fe3f8f363bf06c0680daf775875d979e376bd26"},
+    {file = "regex-2021.7.6-cp38-cp38-manylinux2010_i686.whl", hash = 
"sha256:0eb2c6e0fcec5e0f1d3bcc1133556563222a2ffd2211945d7b1480c1b1a42a6f"},
+    {file = "regex-2021.7.6-cp38-cp38-manylinux2010_x86_64.whl", hash = 
"sha256:1c78780bf46d620ff4fff40728f98b8afd8b8e35c3efd638c7df67be2d5cddbf"},
+    {file = "regex-2021.7.6-cp38-cp38-manylinux2014_i686.whl", hash = 
"sha256:bc84fb254a875a9f66616ed4538542fb7965db6356f3df571d783f7c8d256edd"},
+    {file = "regex-2021.7.6-cp38-cp38-manylinux2014_x86_64.whl", hash = 
"sha256:598c0a79b4b851b922f504f9f39a863d83ebdfff787261a5ed061c21e67dd761"},
+    {file = 
"regex-2021.7.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", 
hash = 
"sha256:875c355360d0f8d3d827e462b29ea7682bf52327d500a4f837e934e9e4656068"},
+    {file = "regex-2021.7.6-cp38-cp38-win32.whl", hash = 
"sha256:e586f448df2bbc37dfadccdb7ccd125c62b4348cb90c10840d695592aa1b29e0"},
+    {file = "regex-2021.7.6-cp38-cp38-win_amd64.whl", hash = 
"sha256:2fe5e71e11a54e3355fa272137d521a40aace5d937d08b494bed4529964c19c4"},
+    {file = "regex-2021.7.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = 
"sha256:6110bab7eab6566492618540c70edd4d2a18f40ca1d51d704f1d81c52d245026"},
+    {file = "regex-2021.7.6-cp39-cp39-manylinux1_i686.whl", hash = 
"sha256:4f64fc59fd5b10557f6cd0937e1597af022ad9b27d454e182485f1db3008f417"},
+    {file = "regex-2021.7.6-cp39-cp39-manylinux1_x86_64.whl", hash = 
"sha256:89e5528803566af4df368df2d6f503c84fbfb8249e6631c7b025fe23e6bd0cde"},
+    {file = "regex-2021.7.6-cp39-cp39-manylinux2010_i686.whl", hash = 
"sha256:2366fe0479ca0e9afa534174faa2beae87847d208d457d200183f28c74eaea59"},
+    {file = "regex-2021.7.6-cp39-cp39-manylinux2010_x86_64.whl", hash = 
"sha256:f9392a4555f3e4cb45310a65b403d86b589adc773898c25a39184b1ba4db8985"},
+    {file = "regex-2021.7.6-cp39-cp39-manylinux2014_i686.whl", hash = 
"sha256:2bceeb491b38225b1fee4517107b8491ba54fba77cf22a12e996d96a3c55613d"},
+    {file = "regex-2021.7.6-cp39-cp39-manylinux2014_x86_64.whl", hash = 
"sha256:f98dc35ab9a749276f1a4a38ab3e0e2ba1662ce710f6530f5b0a6656f1c32b58"},
+    {file = 
"regex-2021.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", 
hash = 
"sha256:319eb2a8d0888fa6f1d9177705f341bc9455a2c8aca130016e52c7fe8d6c37a3"},
+    {file = "regex-2021.7.6-cp39-cp39-win32.whl", hash = 
"sha256:eaf58b9e30e0e546cdc3ac06cf9165a1ca5b3de8221e9df679416ca667972035"},
+    {file = "regex-2021.7.6-cp39-cp39-win_amd64.whl", hash = 
"sha256:4c9c3155fe74269f61e27617529b7f09552fbb12e44b1189cebbdb24294e6e1c"},
+    {file = "regex-2021.7.6.tar.gz", hash = 
"sha256:8394e266005f2d8c6f0bc6780001f7afa3ef81a7a2111fa35058ded6fce79e4d"},
 ]
 requests = [
     {file = "requests-2.25.1-py2.py3-none-any.whl", hash = 
"sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"},
@@ -2624,8 +2625,8 @@
     {file = "typing_inspect-0.7.1.tar.gz", hash = 
"sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"},
 ]
 urllib3 = [
-    {file = "urllib3-1.26.5-py2.py3-none-any.whl", hash = 
"sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c"},
-    {file = "urllib3-1.26.5.tar.gz", hash = 
"sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098"},
+    {file = "urllib3-1.26.6-py2.py3-none-any.whl", hash = 
"sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4"},
+    {file = "urllib3-1.26.6.tar.gz", hash = 
"sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f"},
 ]
 virtualenv = [
     {file = "virtualenv-20.4.7-py2.py3-none-any.whl", hash = 
"sha256:2b0126166ea7c9c3661f5b8e06773d28f83322de7a3ff7d06f0aed18c9de6a76"},
@@ -2640,23 +2641,27 @@
     {file = "vulture-1.6.tar.gz", hash = 
"sha256:7b94784ededbf8e2913b5142dc875d8f26de7c903b37cd2d8f478f79275f7ce9"},
 ]
 watchdog = [
-    {file = "watchdog-2.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = 
"sha256:581e3548159fe7d2a9f377a1fbcb41bdcee46849cca8ab803c7ac2e5e04ec77c"},
-    {file = "watchdog-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = 
"sha256:edcd9ef3fd460bb8a98eb1fcf99941e9fd9f275f45f1a82cb1359ec92975d647"},
-    {file = "watchdog-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = 
"sha256:d34ce2261f118ecd57eedeef95fc2a495fc4a40b3ed7b3bf0bd7a8ccc1ab4f8f"},
-    {file = "watchdog-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = 
"sha256:668391e6c32742d76e5be5db6bf95c455fa4b3d11e76a77c13b39bccb3a47a72"},
-    {file = "watchdog-2.1.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = 
"sha256:6ef9fe57162c4c361692620e1d9167574ba1975ee468b24051ca11c9bba6438e"},
-    {file = "watchdog-2.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = 
"sha256:58ebb1095ee493008a7789d47dd62e4999505d82be89fc884d473086fccc6ebd"},
-    {file = "watchdog-2.1.2-py3-none-manylinux2014_aarch64.whl", hash = 
"sha256:91387ee2421f30b75f7ff632c9d48f76648e56bf346a7c805c0a34187a93aab4"},
-    {file = "watchdog-2.1.2-py3-none-manylinux2014_armv7l.whl", hash = 
"sha256:a6471517315a8541a943c00b45f1d252e36898a3ae963d2d52509b89a50cb2b9"},
-    {file = "watchdog-2.1.2-py3-none-manylinux2014_i686.whl", hash = 
"sha256:a42e6d652f820b2b94cd03156c62559a2ea68d476476dfcd77d931e7f1012d4a"},
-    {file = "watchdog-2.1.2-py3-none-manylinux2014_ppc64.whl", hash = 
"sha256:3d6405681471ebe0beb3aa083998c4870e48b57f8afdb45ea1b5957cc5cf1014"},
-    {file = "watchdog-2.1.2-py3-none-manylinux2014_ppc64le.whl", hash = 
"sha256:598d772beeaf9c98d0df946fbabf0c8365dd95ea46a250c224c725fe0c4730bc"},
-    {file = "watchdog-2.1.2-py3-none-manylinux2014_s390x.whl", hash = 
"sha256:4b219d46d89cfa49af1d73175487c14a318a74cb8c5442603fd13c6a5b418c86"},
-    {file = "watchdog-2.1.2-py3-none-manylinux2014_x86_64.whl", hash = 
"sha256:188145185c08c73c56f1478ccf1f0f0f85101191439679b35b6b100886ce0b39"},
-    {file = "watchdog-2.1.2-py3-none-win32.whl", hash = 
"sha256:255a32d44bbbe62e52874ff755e2eefe271b150e0ec240ad7718a62a7a7a73c4"},
-    {file = "watchdog-2.1.2-py3-none-win_amd64.whl", hash = 
"sha256:1a62a4671796dc93d1a7262286217d9e75823c63d4c42782912d39a506d30046"},
-    {file = "watchdog-2.1.2-py3-none-win_ia64.whl", hash = 
"sha256:104266a778906ae0e971368d368a65c4cd032a490a9fca5ba0b78c6c7ae11720"},
-    {file = "watchdog-2.1.2.tar.gz", hash = 
"sha256:0237db4d9024859bea27d0efb59fe75eef290833fd988b8ead7a879b0308c2db"},
+    {file = "watchdog-2.1.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = 
"sha256:9628f3f85375a17614a2ab5eac7665f7f7be8b6b0a2a228e6f6a2e91dd4bfe26"},
+    {file = "watchdog-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = 
"sha256:acc4e2d5be6f140f02ee8590e51c002829e2c33ee199036fcd61311d558d89f4"},
+    {file = "watchdog-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = 
"sha256:85b851237cf3533fabbc034ffcd84d0fa52014b3121454e5f8b86974b531560c"},
+    {file = "watchdog-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = 
"sha256:a12539ecf2478a94e4ba4d13476bb2c7a2e0a2080af2bb37df84d88b1b01358a"},
+    {file = "watchdog-2.1.3-cp38-cp38-macosx_11_0_arm64.whl", hash = 
"sha256:6fe9c8533e955c6589cfea6f3f0a1a95fb16867a211125236c82e1815932b5d7"},
+    {file = "watchdog-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = 
"sha256:d9456f0433845e7153b102fffeb767bde2406b76042f2216838af3b21707894e"},
+    {file = "watchdog-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = 
"sha256:fd8c595d5a93abd441ee7c5bb3ff0d7170e79031520d113d6f401d0cf49d7c8f"},
+    {file = "watchdog-2.1.3-cp39-cp39-macosx_11_0_arm64.whl", hash = 
"sha256:0bcfe904c7d404eb6905f7106c54873503b442e8e918cc226e1828f498bdc0ca"},
+    {file = "watchdog-2.1.3-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = 
"sha256:bf84bd94cbaad8f6b9cbaeef43080920f4cb0e61ad90af7106b3de402f5fe127"},
+    {file = "watchdog-2.1.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = 
"sha256:b8ddb2c9f92e0c686ea77341dcb58216fa5ff7d5f992c7278ee8a392a06e86bb"},
+    {file = "watchdog-2.1.3-py3-none-manylinux2014_aarch64.whl", hash = 
"sha256:8805a5f468862daf1e4f4447b0ccf3acaff626eaa57fbb46d7960d1cf09f2e6d"},
+    {file = "watchdog-2.1.3-py3-none-manylinux2014_armv7l.whl", hash = 
"sha256:3e305ea2757f81d8ebd8559d1a944ed83e3ab1bdf68bcf16ec851b97c08dc035"},
+    {file = "watchdog-2.1.3-py3-none-manylinux2014_i686.whl", hash = 
"sha256:431a3ea70b20962e6dee65f0eeecd768cd3085ea613ccb9b53c8969de9f6ebd2"},
+    {file = "watchdog-2.1.3-py3-none-manylinux2014_ppc64.whl", hash = 
"sha256:e4929ac2aaa2e4f1a30a36751160be391911da463a8799460340901517298b13"},
+    {file = "watchdog-2.1.3-py3-none-manylinux2014_ppc64le.whl", hash = 
"sha256:201cadf0b8c11922f54ec97482f95b2aafca429c4c3a4bb869a14f3c20c32686"},
+    {file = "watchdog-2.1.3-py3-none-manylinux2014_s390x.whl", hash = 
"sha256:3a7d242a7963174684206093846537220ee37ba9986b824a326a8bb4ef329a33"},
+    {file = "watchdog-2.1.3-py3-none-manylinux2014_x86_64.whl", hash = 
"sha256:54e057727dd18bd01a3060dbf5104eb5a495ca26316487e0f32a394fd5fe725a"},
+    {file = "watchdog-2.1.3-py3-none-win32.whl", hash = 
"sha256:b5fc5c127bad6983eecf1ad117ab3418949f18af9c8758bd10158be3647298a9"},
+    {file = "watchdog-2.1.3-py3-none-win_amd64.whl", hash = 
"sha256:44acad6f642996a2b50bb9ce4fb3730dde08f23e79e20cd3d8e2a2076b730381"},
+    {file = "watchdog-2.1.3-py3-none-win_ia64.whl", hash = 
"sha256:0bcdf7b99b56a3ae069866c33d247c9994ffde91b620eaf0306b27e099bd1ae0"},
+    {file = "watchdog-2.1.3.tar.gz", hash = 
"sha256:e5236a8e8602ab6db4b873664c2d356c365ab3cac96fbdec4970ad616415dd45"},
 ]
 wcwidth = [
     {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = 
"sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
@@ -2671,6 +2676,6 @@
     {file = "yaspin-0.15.0.tar.gz", hash = 
"sha256:5a938bdc7bab353fd8942d0619d56c6b5159a80997dc1c387a479b39e6dc9391"},
 ]
 zipp = [
-    {file = "zipp-3.4.1-py3-none-any.whl", hash = 
"sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098"},
-    {file = "zipp-3.4.1.tar.gz", hash = 
"sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76"},
+    {file = "zipp-3.5.0-py3-none-any.whl", hash = 
"sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3"},
+    {file = "zipp-3.5.0.tar.gz", hash = 
"sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4"},
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/pyproject.toml 
new/isort-5.9.3/pyproject.toml
--- old/isort-5.9.2/pyproject.toml      2021-07-08 10:36:49.000000000 +0200
+++ new/isort-5.9.3/pyproject.toml      2021-07-29 08:40:09.000000000 +0200
@@ -3,7 +3,7 @@
 
 [tool.poetry]
 name = "isort"
-version = "5.9.2"
+version = "5.9.3"
 description = "A Python utility / library to sort Python imports."
 authors = ["Timothy Crosley <timothy.cros...@gmail.com>"]
 license = "MIT"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/scripts/build_config_option_docs.py 
new/isort-5.9.3/scripts/build_config_option_docs.py
--- old/isort-5.9.2/scripts/build_config_option_docs.py 2021-07-08 
10:36:49.000000000 +0200
+++ new/isort-5.9.3/scripts/build_config_option_docs.py 2021-07-29 
08:40:09.000000000 +0200
@@ -153,10 +153,7 @@
 
 
 def config_options() -> Generator[ConfigOption, None, None]:
-    cli_actions = {}
-    for action in parser._actions:
-        cli_actions[action.dest] = action
-
+    cli_actions = {action.dest: action for action in parser._actions}
     for name, default in config.items():
         extra_kwargs = {}
 
@@ -168,7 +165,7 @@
 
         default_display = default
         if isinstance(default, (set, frozenset)) and len(default) > 0:
-            default_display = tuple(i for i in sorted(default))
+            default_display = tuple(sorted(default))
 
         # todo: refactor place for example params
         # needs to integrate with isort/settings/_Config
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/tests/unit/test_exceptions.py 
new/isort-5.9.3/tests/unit/test_exceptions.py
--- old/isort-5.9.2/tests/unit/test_exceptions.py       2021-07-08 
10:36:49.000000000 +0200
+++ new/isort-5.9.3/tests/unit/test_exceptions.py       2021-07-29 
08:40:09.000000000 +0200
@@ -1,3 +1,5 @@
+import pickle
+
 from isort import exceptions
 
 
@@ -8,6 +10,9 @@
     def test_init(self):
         assert isinstance(self.instance, exceptions.ISortError)
 
+    def test_pickleable(self):
+        assert isinstance(pickle.loads(pickle.dumps(self.instance)), 
exceptions.ISortError)
+
 
 class TestExistingSyntaxErrors(TestISortError):
     def setup_class(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/tests/unit/test_isort.py 
new/isort-5.9.3/tests/unit/test_isort.py
--- old/isort-5.9.2/tests/unit/test_isort.py    2021-07-08 10:36:49.000000000 
+0200
+++ new/isort-5.9.3/tests/unit/test_isort.py    2021-07-29 08:40:09.000000000 
+0200
@@ -2708,7 +2708,7 @@
 
 
 def test_import_by_paren_issue_460() -> None:
-    """Test to ensure isort can doesnt move comments around """
+    """Test to ensure isort can doesnt move comments around"""
     test_input = """
 # First comment
 # Second comment
@@ -5184,7 +5184,7 @@
 
 
 def test_combine_straight_imports() -> None:
-    """ Tests to ensure that combine_straight_imports works correctly """
+    """Tests to ensure that combine_straight_imports works correctly"""
 
     test_input = (
         "import os\n" "import sys\n" "# this is a comment\n" "import math  # 
inline comment\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/tests/unit/test_main.py 
new/isort-5.9.3/tests/unit/test_main.py
--- old/isort-5.9.2/tests/unit/test_main.py     2021-07-08 10:36:49.000000000 
+0200
+++ new/isort-5.9.3/tests/unit/test_main.py     2021-07-29 08:40:09.000000000 
+0200
@@ -78,6 +78,7 @@
     assert main.parse_args(["--combine-straight-imports"]) == 
{"combine_straight_imports": True}
     assert main.parse_args(["--dont-follow-links"]) == {"follow_links": False}
     assert main.parse_args(["--overwrite-in-place"]) == {"overwrite_in_place": 
True}
+    assert main.parse_args(["--from-first"]) == {"from_first": True}
 
 
 def test_ascii_art(capsys):
@@ -562,7 +563,7 @@
 """
     )
 
-    main.main(["-", "--ff", "FROM_FIRST"], stdin=input_content)
+    main.main(["-", "--ff"], stdin=input_content)
     out, error = capsys.readouterr()
 
     assert out == (
@@ -1187,3 +1188,26 @@
     out, error = main_check([str(tmpdir), "--skip-gitignore", 
"--filter-files"])
 
     assert all(f"{str(tmpdir)}{file}" in out for file in should_check)
+
+    # Should work when git project contains symlinks
+
+    if os.name != "nt":
+        git_project0.join("has_imports_ignored.py").write(import_content)
+        git_project0.join("has_imports.py").write(import_content)
+        tmpdir.join("has_imports.py").write(import_content)
+        tmpdir.join("nested_dir").join("has_imports.py").write(import_content)
+        
git_project0.join("ignore_link.py").mksymlinkto(tmpdir.join("has_imports.py"))
+        git_project0.join("ignore_link").mksymlinkto(tmpdir.join("nested_dir"))
+        git_project0.join(".gitignore").write("ignore_link.py\nignore_link", 
mode="a")
+
+        out, error = main_check(
+            [str(git_project0), "--skip-gitignore", "--filter-files", 
"--check"]
+        )
+
+        should_check = ["/git_project0/has_imports.py"]
+
+        assert all(f"{str(tmpdir)}{file}" in error for file in should_check)
+
+        out, error = main_check([str(git_project0), "--skip-gitignore", 
"--filter-files"])
+
+        assert all(f"{str(tmpdir)}{file}" in out for file in should_check)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/isort-5.9.2/tests/unit/test_regressions.py 
new/isort-5.9.3/tests/unit/test_regressions.py
--- old/isort-5.9.2/tests/unit/test_regressions.py      2021-07-08 
10:36:49.000000000 +0200
+++ new/isort-5.9.3/tests/unit/test_regressions.py      2021-07-29 
08:40:09.000000000 +0200
@@ -1828,3 +1828,44 @@
 v=""""""
 '''
     )
+
+
+def test_literal_sort_at_top_of_file_issue_1792():
+    assert (
+        isort.code(
+            '''"""I'm a docstring! Look at me!"""
+
+# isort: unique-list
+__all__ = ["Foo", "Foo", "Bar"]
+
+from typing import final  # arbitrary
+
+
+@final
+class Foo:
+    ...
+
+
+@final
+class Bar:
+    ...
+'''
+        )
+        == '''"""I'm a docstring! Look at me!"""
+
+# isort: unique-list
+__all__ = ['Bar', 'Foo']
+
+from typing import final  # arbitrary
+
+
+@final
+class Foo:
+    ...
+
+
+@final
+class Bar:
+    ...
+'''
+    )

Reply via email to