Repository: pastelmind/d2txt (language: python)

Issue:
Bump py from 1.9.0 to 1.10.0
Bumps [py](https://github.com/pytest-dev/py) from 1.9.0 to 1.10.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pytest-dev/py/blob/master/CHANGELOG.rst">py's changelog</a>.</em></p>
<blockquote>
<h1>1.10.0 (2020-12-12)</h1>
<ul>
<li>Fix a regular expression DoS vulnerability in the py.path.svnwc SVN blame functionality (CVE-2020-29651)</li>
<li>Update vendored apipkg: 1.4 =&gt; 1.5</li>
<li>Update vendored iniconfig: 1.0.0 =&gt; 1.1.1</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pytest-dev/py/commit/e5ff378fc3bd3f7c366dec769a718bdb1ceca1f1"><code>e5ff378</code></a> Update CHANGELOG for 1.10.0</li>
<li><a href="https://github.com/pytest-dev/py/commit/94cf44fd41d957eb50773d3e4fb54e931836779e"><code>94cf44f</code></a> Update vendored libs</li>
<li><a href="https://github.com/pytest-dev/py/commit/5e8ded5dea0a92656fe98383b66ebfb3cb84be03"><code>5e8ded5</code></a> testing: comment out an assert which fails on Python 3.9 for now</li>
<li><a href="https://github.com/pytest-dev/py/commit/afdffcc981fd3f7cd12f24b5407f40aa01dde22a"><code>afdffcc</code></a> Rename HOWTORELEASE.rst to RELEASING.rst</li>
<li><a href="https://github.com/pytest-dev/py/commit/2de53a67589d8eeaea35927357c0a05dd0329ce4"><code>2de53a6</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pytest-dev/py/issues/266">#266</a> from nicoddemus/gh-actions</li>
<li><a href="https://github.com/pytest-dev/py/commit/fa1b32e2912ad4ea39016cd50ec3125d204bcf65"><code>fa1b32e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/pytest-dev/py/issues/264">#264</a> from hugovk/patch-2</li>
<li><a href="https://github.com/pytest-dev/py/commit/887d6b8937bd74c729c89b589ec8adaa557a78cf"><code>887d6b8</code></a> Skip test_samefile_symlink on pypy3 on Windows</li>
<li><a href="https://github.com/pytest-dev/py/commit/e94e670032d8ccf42ad9d37730bd03b6da6f263b"><code>e94e670</code></a> Fix test_comments() in test_source</li>
<li><a href="https://github.com/pytest-dev/py/commit/fef9a32a8578e9c467f6ef8ccc7bce81b89496a4"><code>fef9a32</code></a> Adapt test</li>
<li><a href="https://github.com/pytest-dev/py/commit/4a694b00a68de2d93b547c2704da4283a375a53c"><code>4a694b0</code></a> Add GitHub Actions badge to README</li>
<li>Additional commits viewable in <a href="https://github.com/pytest-dev/py/compare/1.9.0...1.10.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=py&package-manager=pip&previous-version=1.9.0&new-version=1.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/pastelmind/d2txt/network/alerts).

</details>


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 1a834ae..93ff682 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -13,7 +13,7 @@ on:
 
 env:
   # Default Python version for running build and lint jobs
-  python-version: 3.8
+  python-version: 3.9
 
 jobs:
   build:
@@ -71,7 +71,7 @@ jobs:
         - lint-tool: black
           run: black --check .
         - lint-tool: isort
-          run: isort --check-only
+          run: isort --check --diff .
         - lint-tool: pylint
           run: pylint samples src tests
       # Make all lint jobs run to completion for combined diagnosis
@@ -115,7 +115,7 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-latest, windows-latest]
-        python-version: [3.6, 3.7, 3.8]
+        python-version: [3.6, 3.7, 3.8, 3.9]
 
     steps:
     - uses: actions/checkout@v2
diff --git a/pyproject.toml b/pyproject.toml
index 847efb9..0102a86 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,5 +1,5 @@
 [build-system]
-requires = ["flit_core >=2,<3"]
+requires = ["flit_core >=2,<4"]
 build-backend = "flit_core.buildapi"
 
 [tool.flit.metadata]
@@ -17,6 +17,9 @@ classifiers = [
     "License :: OSI Approved :: MIT License",
     "Operating System :: OS Independent",
     "Programming Language :: Python :: 3.6",
+    "Programming Language :: Python :: 3.7",
+    "Programming Language :: Python :: 3.8",
+    "Programming Language :: Python :: 3.9",
 ]
 requires-python = ">= 3.6"
 
diff --git a/requirements-build.txt b/requirements-build.txt
index 695e0dc..4452ea4 100644
--- a/requirements-build.txt
+++ b/requirements-build.txt
@@ -1,11 +1,11 @@
 # Dependencies for building
-flit==2.3.0
-  docutils==0.16
-  flit-core==2.3.0
-    pytoml==0.1.21
-  pytoml==0.1.21
-  requests==2.24.0
-    certifi==2020.6.20
-    chardet==3.0.4
+flit==3.2.0
+  docutils==0.17.1
+  flit-core==3.2.0
+    toml==0.10.2
+  requests==2.25.1
+    certifi==2020.12.5
+    chardet==4.0.0
     idna==2.10
-    urllib3==1.25.9
+    urllib3==1.26.4
+  toml==0.10.2
diff --git a/requirements-dev.txt b/requirements-dev.txt
index bd32869..c9b0ea6 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -3,4 +3,4 @@
 -r requirements-lint.txt
 -r requirements-test.txt
 -r requirements.txt
-pipdeptree==1.0.0
+pipdeptree==2.0.0
diff --git a/requirements-lint.txt b/requirements-lint.txt
index 3f8b9c6..9bb9476 100644
--- a/requirements-lint.txt
+++ b/requirements-lint.txt
@@ -1,19 +1,19 @@
 # Dependencies for linting source code
-black==19.10b0
+black==20.8b1
   appdirs==1.4.4
-  attrs==19.3.0
   click==7.1.2
-  pathspec==0.8.0
-  regex==2020.6.8
-  toml==0.10.1
-  typed-ast==1.4.1
-isort==4.3.21
-pylint==2.5.3
-  astroid==2.4.2
-    lazy-object-proxy==1.4.3
-    six==1.15.0
+  mypy-extensions==0.4.3
+  pathspec==0.8.1
+  regex==2021.4.4
+  toml==0.10.2
+  typed-ast==1.4.3
+  typing-extensions==3.7.4.3
+isort==5.8.0
+pylint==2.7.4
+  astroid==2.5.3
+    lazy-object-proxy==1.6.0
     wrapt==1.12.1
-  colorama==0.4.3
-  isort==4.3.21
+  colorama==0.4.4
+  isort==5.8.0
   mccabe==0.6.1
-  toml==0.10.1
+  toml==0.10.2
diff --git a/requirements.txt b/requirements.txt
index 06ece68..621f7ac 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
 qtoml==0.3.0
   attrs==19.3.0
   click==7.1.2
-toml==0.10.1
+toml==0.10.2
diff --git a/tox.ini b/tox.ini
index 780c847..7c41c29 100644
--- a/tox.ini
+++ b/tox.ini
@@ -4,7 +4,7 @@
 # and then run "tox" from this directory.
 
 [tox]
-envlist = py36, py37, py38
+envlist = py36, py37, py38, py39
 isolated_build = True
 
 [testenv]


Test patch:
diff --git a/requirements-test.txt b/requirements-test.txt
index 63a8e9b..575e4f7 100644
--- a/requirements-test.txt
+++ b/requirements-test.txt
@@ -1,15 +1,14 @@
 # Dependencies for testing
-tox==3.16.1
-  colorama==0.4.3
+tox==3.23.0
+  colorama==0.4.4
   filelock==3.0.12
-  packaging==20.4
+  packaging==20.9
     pyparsing==2.4.7
-    six==1.15.0
   pluggy==0.13.1
-  py==1.9.0
+  py==1.10.0
   six==1.15.0
-  toml==0.10.1
-  virtualenv==20.0.26
+  toml==0.10.2
+  virtualenv==20.4.4
     appdirs==1.4.4
     distlib==0.3.1
     filelock==3.0.12
diff --git a/tests/test_d2txt.py b/tests/test_d2txt.py
index 0493926..b7e1663 100644
--- a/tests/test_d2txt.py
+++ b/tests/test_d2txt.py
@@ -15,7 +15,10 @@ class TestD2TXTBase(unittest.TestCase):
     """Base class for D2TXT-related tests. Provides convenience methods."""
 
     def compare_d2txt(
-        self, d2txt: D2TXT, column_names: Iterable[str], rows: Sequence[Iterable[str]],
+        self,
+        d2txt: D2TXT,
+        column_names: Iterable[str],
+        rows: Sequence[Iterable[str]],
     ):
         """Compares a D2TXT object with the given column names and rows.
 
@@ -111,7 +114,8 @@ def test_column_name_case_sensitivity(self):
 
         d2txt.append(["lowercase", "capital letters", "uppercase"])
         self.assertEqual(
-            list(d2txt[0].values()), ["lowercase", "capital letters", "uppercase"],
+            list(d2txt[0].values()),
+            ["lowercase", "capital letters", "uppercase"],
         )
         with self.assertRaises(KeyError):
             d2txt[0]["column NAME"]  # pylint:disable=pointless-statement
@@ -174,7 +178,10 @@ def test_extend_list(self):
         d2txt.extend([[]])
         self.assertEqual(len(d2txt), 1)
         d2txt.extend(
-            [["foo", "bar"], ["1", "2", "3", "these", "strings", "are", "ignored"],]
+            [
+                ["foo", "bar"],
+                ["1", "2", "3", "these", "strings", "are", "ignored"],
+            ]
         )
         self.assertEqual(len(d2txt), 3)
 
@@ -278,7 +285,13 @@ def test_load_path(self):
 
         self.compare_d2txt(
             d2txt,
-            ["column name", "column 2", "column 3", "", "COLUMN NAME",],
+            [
+                "column name",
+                "column 2",
+                "column 3",
+                "",
+                "COLUMN NAME",
+            ],
             [
                 [
                     "lowercase column name",
@@ -317,8 +330,7 @@ def test_load_file_object(self):
         )
 
     def test_duplicate_column_names(self):
-        """Tests if duplicate column names raise an error loading a TXT file.
-        """
+        """Tests if duplicate column names raise an error loading a TXT file."""
         with self.assertRaises(DuplicateColumnNameError):
             D2TXT.load_txt(
                 StringIO(
@@ -345,8 +357,7 @@ def test_column_name_case_preserving(self):
         )
 
     def test_column_name_whitespace(self):
-        """Tests if whitespace in columns are preserved when loading a TXT file.
-        """
+        """Tests if whitespace in columns are preserved when loading a TXT file."""
         d2txt = D2TXT.load_txt(
             StringIO(
                 "   column 1\tcolumn 2    \t  column 3  \t\t  \r\n"
@@ -375,8 +386,7 @@ def test_empty_cell(self):
         )
 
     def test_cell_whitespace(self):
-        """Tests if whitespace in cells are preserved when loading a TXT file.
-        """
+        """Tests if whitespace in cells are preserved when loading a TXT file."""
         d2txt = D2TXT.load_txt(
             StringIO(
                 "column 1\tcolumn 2\tcolumn 3\r\n"
@@ -539,8 +549,7 @@ def test_falsy_cell(self):
         )
 
     def test_cell_whitespace(self):
-        """Tests if whitespace in cells are preserved when saved to a TXT file.
-        """
+        """Tests if whitespace in cells are preserved when saved to a TXT file."""
         d2txt = D2TXT(["column 1", "column 2", "column 3"])
         d2txt.extend([["  2 leading spaces", "3 trailing spaces   ", "     "]])
 
@@ -554,8 +563,7 @@ def test_cell_whitespace(self):
         )
 
     def test_surrounding_quotes(self):
-        """Tests if surrounding quotes are preserved when saved to a TXT file.
-        """
+        """Tests if surrounding quotes are preserved when saved to a TXT file."""
         d2txt = D2TXT(["'single quotes'", '"double quotes"', "`backticks`"])
         d2txt.extend([["'single quotes'", '"double quotes"', "`backticks`"]])