From nobody Tue Jul 12 17:07:23 2022 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3020617FD732; Tue, 12 Jul 2022 17:07:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Lj6cr16y8z3Xld; Tue, 12 Jul 2022 17:07:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1657645644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HEiF26Q7/c81XvFYQnQx8SOHhxMtNgO++Ng7cp9rB8A=; b=FD0flq0ABHBcQEIROik0gJDz0RVDFmMGLIA6qR7SHXi8w1C7m/UbQUU+8dteI3fvLen3cZ ocOQM1E65kqDt9S+hxcth3j6SJj/+0IGFPAR34R/toqvSOv68iJ8WjbiyOvbRc9fynlH2s 2VWPbRjXg3id0iu1IjRwBRK/njFmKa5FOrHCDxyuUCVFh2H/TzLSS+EPonnTf203dmspVD rD3GELgYWzlngBjP9lszAAameO01mVV7at7+oC3OEHV2l288nlvXCLEBFUiJuwr2zeoQoI /ZvRHd2Fx7Ir6SnUdkNnHypk3hyCm/JQJ+OxFkq9Dmpc8UfCW6BhIYR7O70qfw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Lj6cr09sSzrPr; Tue, 12 Jul 2022 17:07:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 26CH7NJf025322; Tue, 12 Jul 2022 17:07:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 26CH7NBR025321; Tue, 12 Jul 2022 17:07:23 GMT (envelope-from git) Date: Tue, 12 Jul 2022 17:07:23 GMT Message-Id: <202207121707.26CH7NBR025321@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Rainer Hurling Subject: git: 4ed2bd37b021 - main - textproc/py-whatthepatch: New port: For patch files List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-main@freebsd.org X-BeenThere: dev-commits-ports-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rhurlin X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4ed2bd37b0219eacf261cd82f44dad7bc18c005d Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1657645644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=HEiF26Q7/c81XvFYQnQx8SOHhxMtNgO++Ng7cp9rB8A=; b=DObO1TMCeNP/9EvJ0wWj9WUM6YSdTD9hrNuZDuuc6YJrwoZHRh3rNGZ9WmFufvDblfjkcw 1Lw/vsZzNh4uQhSb7n3ypaTPNhDugAdCj5fkAPFSLjlM4ySFsZqZyvq5rW473SI5f2Xw5w K7zqSIQADqwJT8N98Wnrtg9jFNgGR0VTV3hMVaGVBVaIqPihExdJWt8DpRVIXHCMGvpHvO uT4OJeLCv2Gj3th726pPwTsE8ZSWJxS4fVxogrrxDjB3KAmThUoK4sAj2gbppH5bOBpW3G Sk2HwdVu3AClypRX0VdVUNMSsxJEPKmgZSzzy6dRJ8rwZs3v/ID18UxJBDwYoQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1657645644; a=rsa-sha256; cv=none; b=Cz+wAasyJ0U3u03Tuq0d3RQ3tBpffj5FogsbYPSiZf1ala5vcyWOpxY67sYJILbyr7T0IR nG/HLib3gNATE9N5P6FP/+HhPkz2E1kH7dMYttesyLaIQV4i0uIeoXv8GjWzEfYEJ2RAVr HZiUeRUW/Ge4fRwHOurCy/qQG2JMFzvcIYA2twEFtlHESN80cvpUy9AwRbK0RUZC+WBH07 lWqHwja8lPdnTht622MSSRvi97W8ZuN/FMu+RBuJqkUaS2j7X0Bpk+K4R3oxPVLVBmLz4g FqFPUM0C/28nhSmaBofySg43a5aFwLRXJ4NzJcz0+A87SLKlvtVluw62c/qjNw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rhurlin: URL: https://cgit.FreeBSD.org/ports/commit/?id=4ed2bd37b0219eacf261cd82f44dad7bc18c005d commit 4ed2bd37b0219eacf261cd82f44dad7bc18c005d Author: Rainer Hurling AuthorDate: 2022-07-12 16:52:49 +0000 Commit: Rainer Hurling CommitDate: 2022-07-12 17:06:48 +0000 textproc/py-whatthepatch: New port: For patch files Library for both parsing and applying patch files Features: - Parsing of almost all diff formats (except forwarded ed) - normal (default, --normal) - copied context (-c, --context) - unified context (-u, --unified) - ed script (-e, --ed) - rcs ed script (-n, --rcs) - Parsing of several SCM patches - CVS - SVN - Git https://github.com/cscorley/whatthepatch This port is needed for the next update of textproc/py-python-lsp-server. The patches in files are post-release additions from Github: - #4b0d9ef70109 Fix unified diff parse error - #700175dd2bf7 Support Python 3.9 --- textproc/Makefile | 1 + textproc/py-whatthepatch/Makefile | 19 + textproc/py-whatthepatch/distinfo | 3 + .../files/0001-Fix-unified-diff-parse-error.patch | 144 +++++ ...-support-3.9-on-build-and-cut-new-version.patch | 580 +++++++++++++++++++++ textproc/py-whatthepatch/pkg-descr | 13 + 6 files changed, 760 insertions(+) diff --git a/textproc/Makefile b/textproc/Makefile index 68134eb9aeee..aafed562a018 100644 --- a/textproc/Makefile +++ b/textproc/Makefile @@ -1549,6 +1549,7 @@ SUBDIR += py-ucl SUBDIR += py-ufal.udpipe SUBDIR += py-wcmatch + SUBDIR += py-whatthepatch SUBDIR += py-whoosh SUBDIR += py-wordcloud SUBDIR += py-wordnet diff --git a/textproc/py-whatthepatch/Makefile b/textproc/py-whatthepatch/Makefile new file mode 100644 index 000000000000..7d2d737bff8c --- /dev/null +++ b/textproc/py-whatthepatch/Makefile @@ -0,0 +1,19 @@ +PORTNAME= whatthepatch +PORTVERSION= 1.0.2 +CATEGORIES= textproc python +MASTER_SITES= CHEESESHOP +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= rhurlin@FreeBSD.org +COMMENT= Library for both parsing and applying patch files + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +# make test: 1 failed, 48 passed +USES= python:3.7+ pytest +USE_PYTHON= concurrent distutils autoplist + +NO_ARCH= yes + +.include diff --git a/textproc/py-whatthepatch/distinfo b/textproc/py-whatthepatch/distinfo new file mode 100644 index 000000000000..21c05e5d690e --- /dev/null +++ b/textproc/py-whatthepatch/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1657565995 +SHA256 (whatthepatch-1.0.2.tar.gz) = c540ea59173e0a291e19c742dd8b406c56e2be039a600edb7c6fc3ae4bbdfa9f +SIZE (whatthepatch-1.0.2.tar.gz) = 28459 diff --git a/textproc/py-whatthepatch/files/0001-Fix-unified-diff-parse-error.patch b/textproc/py-whatthepatch/files/0001-Fix-unified-diff-parse-error.patch new file mode 100644 index 000000000000..670d42507289 --- /dev/null +++ b/textproc/py-whatthepatch/files/0001-Fix-unified-diff-parse-error.patch @@ -0,0 +1,144 @@ +From 4d6629d4617fa94ee907145c00dcb6b7852f674e Mon Sep 17 00:00:00 2001 +From: Kai Zhang +Date: Thu, 4 Feb 2021 12:01:44 +0800 +Subject: [PATCH 1/2] Fix unified diff parse error + + +diff --git a/tests/casefiles/abc b/tests/casefiles/abc +new file mode 100644 +index 0000000..5b4d7c6 +--- /dev/null ++++ b/tests/casefiles/abc +@@ -0,0 +1 @@ ++The Nameless is the origin of Heaven and Earth; +diff --git a/tests/casefiles/diff-unified2.diff b/tests/casefiles/diff-unified2.diff +new file mode 100644 +index 0000000..168410b +--- /dev/null ++++ b/tests/casefiles/diff-unified2.diff +@@ -0,0 +1,5 @@ ++--- abc 2013-01-05 16:56:19.000000000 -0600 +++++ efg 2013-01-05 16:56:35.000000000 -0600 ++@@ -1 +1,2 @@ ++ The Nameless is the origin of Heaven and Earth; +++The named is the mother of all things. +diff --git a/tests/casefiles/efg b/tests/casefiles/efg +new file mode 100644 +index 0000000..9e0843b +--- /dev/null ++++ b/tests/casefiles/efg +@@ -0,0 +1,2 @@ ++The Nameless is the origin of Heaven and Earth; ++The named is the mother of all things. +diff --git a/tests/test_apply.py b/tests/test_apply.py +index 0f94d2a..38a39db 100644 +--- a/tests/test_apply.py ++++ b/tests/test_apply.py +@@ -28,6 +28,12 @@ class ApplyTestSuite(unittest.TestCase): + with open("tests/casefiles/tzu") as f: + self.tzu = f.read().splitlines() + ++ with open("tests/casefiles/abc") as f: ++ self.abc = f.read().splitlines() ++ ++ with open("tests/casefiles/efg") as f: ++ self.efg = f.read().splitlines() ++ + def test_truth(self): + self.assertEqual(type(self.lao), list) + self.assertEqual(type(self.tzu), list) +@@ -55,6 +61,13 @@ class ApplyTestSuite(unittest.TestCase): + self.assertEqual(_apply(self.lao, diff_text), self.tzu) + self.assertEqual(_apply_r(self.tzu, diff_text), self.lao) + ++ def test_diff_unified2(self): ++ with open("tests/casefiles/diff-unified2.diff") as f: ++ diff_text = f.read() ++ ++ self.assertEqual(_apply(self.abc, diff_text), self.efg) ++ self.assertEqual(_apply_r(self.efg, diff_text), self.abc) ++ + def test_diff_unified_bad(self): + with open("tests/casefiles/diff-unified-bad.diff") as f: + diff_text = f.read() +@@ -129,6 +142,22 @@ class ApplyTestSuite(unittest.TestCase): + with pytest.raises(exceptions.ApplyException): + _apply([""] + self.lao, diff_text, use_patch=True) + ++ def test_diff_unified2_patchutil(self): ++ with open("tests/casefiles/diff-unified2.diff") as f: ++ diff_text = f.read() ++ ++ if not which("patch"): ++ raise SkipTest() ++ ++ self.assertEqual(_apply(self.abc, diff_text, use_patch=True), ++ (self.efg, None)) ++ self.assertEqual(_apply(self.abc, diff_text, use_patch=True), ++ (_apply(self.abc, diff_text), None)) ++ self.assertEqual(_apply_r(self.efg, diff_text, use_patch=True), ++ (self.abc, None)) ++ self.assertEqual(_apply_r(self.efg, diff_text, use_patch=True), ++ (_apply_r(self.efg, diff_text), None)) ++ + def test_diff_rcs(self): + with open("tests/casefiles/diff-rcs.diff") as f: + diff_text = f.read() +diff --git a/tests/test_patch.py b/tests/test_patch.py +index b50cd00..bd4b961 100644 +--- a/tests/test_patch.py ++++ b/tests/test_patch.py +@@ -857,6 +857,34 @@ class PatchTestSuite(unittest.TestCase): + results_main = next(wtp.patch.parse_patch(text)) + self.assert_diffs_equal(results_main, expected_main) + ++ def test_unified2_diff(self): ++ with open(datapath("diff-unified2.diff")) as f: ++ text = f.read() ++ ++ # off with your head! ++ text_diff = "\n".join(text.splitlines()[2:]) + "\n" ++ ++ expected = [ ++ (None, 2, "The named is the mother of all things."), ++ ] ++ ++ results = list(wtp.patch.parse_unified_diff(text_diff)) ++ self.assert_diffs_equal(results, expected) ++ ++ expected_main = diffobj( ++ header=headerobj( ++ index_path=None, ++ old_path="abc", ++ old_version="2013-01-05 16:56:19.000000000 -0600", ++ new_path="efg", ++ new_version="2013-01-05 16:56:35.000000000 -0600", ++ ), ++ changes=expected, ++ text=text, ++ ) ++ results_main = next(wtp.patch.parse_patch(text)) ++ self.assert_diffs_equal(results_main, expected_main) ++ + def test_diff_unified_with_does_not_include_extra_lines(self): + with open("tests/casefiles/diff-unified-blah.diff") as f: + text = f.read() +diff --git a/whatthepatch/patch.py b/whatthepatch/patch.py +index 9b592a2..3d58df6 100644 +--- a/whatthepatch/patch.py ++++ b/whatthepatch/patch.py +@@ -622,8 +622,9 @@ def parse_unified_diff(text): + elif kind == "+" and (i != new_len or i == 0): + changes.append(Change(None, new + i, line, hunk_n)) + i += 1 +- elif kind == " " and r != old_len and i != new_len: +- changes.append(Change(old + r, new + i, line, hunk_n)) ++ elif kind == " ": ++ if r != old_len and i != new_len: ++ changes.append(Change(old + r, new + i, line, hunk_n)) + r += 1 + i += 1 + +-- +2.37.0 + diff --git a/textproc/py-whatthepatch/files/0002-Update-to-support-3.9-on-build-and-cut-new-version.patch b/textproc/py-whatthepatch/files/0002-Update-to-support-3.9-on-build-and-cut-new-version.patch new file mode 100644 index 000000000000..abcc1cf363c7 --- /dev/null +++ b/textproc/py-whatthepatch/files/0002-Update-to-support-3.9-on-build-and-cut-new-version.patch @@ -0,0 +1,580 @@ +From 700175dd2bf76e312d3d44f7033b9a7f84dc7aaa Mon Sep 17 00:00:00 2001 +From: "Christopher S. Corley" +Date: Fri, 5 Feb 2021 21:57:11 -0500 +Subject: [PATCH 2/2] Update to support 3.9 on build and cut new version + + +diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml +index d9e0039..d15eee6 100644 +--- a/.github/workflows/build.yml ++++ b/.github/workflows/build.yml +@@ -16,7 +16,7 @@ jobs: + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] +- python-version: [3.5, 3.6, 3.7, 3.8] ++ python-version: [3.5, 3.6, 3.7, 3.8, 3.9] + + steps: + - uses: actions/checkout@v2 +diff --git a/HISTORY.md b/HISTORY.md +index 0df906e..4f235f5 100644 +--- a/HISTORY.md ++++ b/HISTORY.md +@@ -2,6 +2,11 @@ + + Nothing yet :) + ++# 1.0.2 ++ ++- Support up to 3.9 ++- PR #42 Fix unified diff parse error (Thanks, @kkpattern) ++ + # 1.0.1 + + - PR #37 Replace nose with pytest (Thanks, @MeggyCal) +diff --git a/Pipfile b/Pipfile +index 606069f..5fb951e 100644 +--- a/Pipfile ++++ b/Pipfile +@@ -15,7 +15,7 @@ wheel = "*" + [packages] + + [requires] +-python_version = "3.7" ++python_version = "3.9" + + [pipenv] + allow_prereleases = true +diff --git a/Pipfile.lock b/Pipfile.lock +index a4bc5b6..b8ddb32 100644 +--- a/Pipfile.lock ++++ b/Pipfile.lock +@@ -1,11 +1,11 @@ + { + "_meta": { + "hash": { +- "sha256": "3a87b619c61c9c76e282c92cf216f184d3207572cb11b0b30d05fed98aaf997f" ++ "sha256": "0b974aff9c74c44e274d0d21a9d71e0d5ad85f5d4469cd75722e1aec852d4060" + }, + "pipfile-spec": 6, + "requires": { +- "python_version": "3.7" ++ "python_version": "3.9" + }, + "sources": [ + { +@@ -24,108 +24,98 @@ + ], + "version": "==1.4.4" + }, +- "atomicwrites": { +- "hashes": [ +- "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197", +- "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a" +- ], +- "markers": "sys_platform == 'win32'", +- "version": "==1.4.0" +- }, + "attrs": { + "hashes": [ +- "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", +- "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" ++ "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", ++ "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" + ], +- "version": "==19.3.0" ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", ++ "version": "==20.3.0" + }, + "black": { + "hashes": [ +- "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", +- "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" ++ "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea" + ], + "index": "pypi", +- "version": "==19.10b0" ++ "version": "==20.8b1" + }, + "bleach": { + "hashes": [ +- "sha256:2bce3d8fab545a6528c8fa5d9f9ae8ebc85a56da365c7f85180bfe96a35ef22f", +- "sha256:3c4c520fdb9db59ef139915a5db79f8b51bc2a7257ea0389f30c846883430a4b" ++ "sha256:6123ddc1052673e52bab52cdc955bcb57a015264a1c57d37bea2f6b817af0125", ++ "sha256:98b3170739e5e83dd9dc19633f074727ad848cbedb6026708c8ac2d3b697a433" + ], +- "version": "==3.1.5" ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", ++ "version": "==3.3.0" + }, + "certifi": { + "hashes": [ +- "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3", +- "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41" ++ "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c", ++ "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830" + ], +- "version": "==2020.6.20" ++ "version": "==2020.12.5" + }, + "chardet": { + "hashes": [ +- "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", +- "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" ++ "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", ++ "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + ], +- "version": "==3.0.4" ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", ++ "version": "==4.0.0" + }, + "click": { + "hashes": [ + "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", + "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" + ], ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==7.1.2" + }, + "colorama": { + "hashes": [ +- "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff", +- "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1" ++ "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", ++ "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" + ], +- "markers": "sys_platform == 'win32'", +- "version": "==0.4.3" ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", ++ "version": "==0.4.4" + }, + "docutils": { + "hashes": [ + "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af", + "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc" + ], ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.16" + }, + "flake8": { + "hashes": [ +- "sha256:15e351d19611c887e482fb960eae4d44845013cc142d42896e9862f775d8cf5c", +- "sha256:f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208" ++ "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", ++ "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" + ], + "index": "pypi", +- "version": "==3.8.3" ++ "version": "==3.8.4" + }, + "idna": { + "hashes": [ + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + ], ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.10" + }, +- "importlib-metadata": { +- "hashes": [ +- "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83", +- "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070" +- ], +- "markers": "python_version < '3.8'", +- "version": "==1.7.0" +- }, + "iniconfig": { + "hashes": [ +- "sha256:80cf40c597eb564e86346103f609d74efce0f6b4d4f30ec8ce9e2c26411ba437", +- "sha256:e5f92f89355a67de0595932a6c6c02ab4afddc6fcdc0bfc5becd0d60884d3f69" ++ "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", ++ "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + ], +- "version": "==1.0.1" ++ "version": "==1.1.1" + }, + "keyring": { + "hashes": [ +- "sha256:3401234209015144a5d75701e71cb47239e552b0882313e9f51e8976f9e27843", +- "sha256:c53e0e5ccde3ad34284a40ce7976b5b3a3d6de70344c3f8ee44364cc340976ec" ++ "sha256:9acb3e1452edbb7544822b12fd25459078769e560fa51f418b6d00afaa6178df", ++ "sha256:9f44660a5d4931bdc14c08a1d01ef30b18a7a8147380710d8c9f9531e1f6c3c0" + ], +- "version": "==21.2.1" ++ "markers": "python_version >= '3.6'", ++ "version": "==22.0.1" + }, + "mccabe": { + "hashes": [ +@@ -134,53 +124,57 @@ + ], + "version": "==0.6.1" + }, +- "more-itertools": { ++ "mypy-extensions": { + "hashes": [ +- "sha256:68c70cc7167bdf5c7c9d8f6954a7837089c6a36bf565383919bb595efb8a17e5", +- "sha256:b78134b2063dd214000685165d81c154522c3ee0a1c0d4d113c80361c234c5a2" ++ "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", ++ "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + ], +- "version": "==8.4.0" ++ "version": "==0.4.3" + }, + "packaging": { + "hashes": [ +- "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8", +- "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181" ++ "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", ++ "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" + ], +- "version": "==20.4" ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", ++ "version": "==20.9" + }, + "pathspec": { + "hashes": [ +- "sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0", +- "sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061" ++ "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", ++ "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" + ], +- "version": "==0.8.0" ++ "version": "==0.8.1" + }, + "pkginfo": { + "hashes": [ +- "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", +- "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" ++ "sha256:029a70cb45c6171c329dfc890cde0879f8c52d6f3922794796e06f577bb03db4", ++ "sha256:9fdbea6495622e022cc72c2e5e1b735218e4ffb2a2a69cde2694a6c1f16afb75" + ], +- "version": "==1.5.0.1" ++ "version": "==1.7.0" + }, + "pluggy": { + "hashes": [ + "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", + "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + ], ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.13.1" + }, + "py": { + "hashes": [ +- "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2", +- "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342" ++ "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", ++ "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + ], +- "version": "==1.9.0" ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", ++ "version": "==1.10.0" + }, + "pycodestyle": { + "hashes": [ + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + ], ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.6.0" + }, + "pyflakes": { +@@ -188,77 +182,93 @@ + "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", + "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" + ], ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.2.0" + }, + "pygments": { + "hashes": [ +- "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44", +- "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324" ++ "sha256:bc9591213a8f0e0ca1a5e68a479b4887fdc3e75d0774e5c71c31920c427de435", ++ "sha256:df49d09b498e83c1a73128295860250b0b7edd4c723a32e9bc0d295c7c2ec337" + ], +- "version": "==2.6.1" ++ "markers": "python_version >= '3.5'", ++ "version": "==2.7.4" + }, + "pyparsing": { + "hashes": [ +- "sha256:1060635ca5ac864c2b7bc7b05a448df4e32d7d8c65e33cbe1514810d339672a2", +- "sha256:56a551039101858c9e189ac9e66e330a03fb7079e97ba6b50193643905f450ce" ++ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", ++ "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + ], +- "version": "==3.0.0a2" ++ "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", ++ "version": "==2.4.7" + }, + "pytest": { + "hashes": [ +- "sha256:85228d75db9f45e06e57ef9bf4429267f81ac7c0d742cc9ed63d09886a9fe6f4", +- "sha256:8b6007800c53fdacd5a5c192203f4e531eb2a1540ad9c752e052ec0f7143dbad" ++ "sha256:9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9", ++ "sha256:b574b57423e818210672e07ca1fa90aaf194a4f63f3ab909a2c67ebb22913839" + ], + "index": "pypi", +- "version": "==6.0.1" +- }, +- "pywin32-ctypes": { +- "hashes": [ +- "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942", +- "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98" +- ], +- "markers": "sys_platform == 'win32'", +- "version": "==0.2.0" ++ "version": "==6.2.2" + }, + "readme-renderer": { + "hashes": [ +- "sha256:cbe9db71defedd2428a1589cdc545f9bd98e59297449f69d721ef8f1cfced68d", +- "sha256:cc4957a803106e820d05d14f71033092537a22daa4f406dfbdd61177e0936376" ++ "sha256:267854ac3b1530633c2394ead828afcd060fc273217c42ac36b6be9c42cd9a9d", ++ "sha256:6b7e5aa59210a40de72eb79931491eaf46fefca2952b9181268bd7c7c65c260a" + ], +- "version": "==26.0" ++ "version": "==28.0" + }, + "regex": { + "hashes": [ +- "sha256:0dc64ee3f33cd7899f79a8d788abfbec168410be356ed9bd30bbd3f0a23a7204", +- "sha256:1269fef3167bb52631ad4fa7dd27bf635d5a0790b8e6222065d42e91bede4162", +- "sha256:14a53646369157baa0499513f96091eb70382eb50b2c82393d17d7ec81b7b85f", +- "sha256:3a3af27a8d23143c49a3420efe5b3f8cf1a48c6fc8bc6856b03f638abc1833bb", +- "sha256:46bac5ca10fb748d6c55843a931855e2727a7a22584f302dd9bb1506e69f83f6", +- "sha256:4c037fd14c5f4e308b8370b447b469ca10e69427966527edcab07f52d88388f7", +- "sha256:51178c738d559a2d1071ce0b0f56e57eb315bcf8f7d4cf127674b533e3101f88", +- "sha256:5ea81ea3dbd6767873c611687141ec7b06ed8bab43f68fad5b7be184a920dc99", +- "sha256:6961548bba529cac7c07af2fd4d527c5b91bb8fe18995fed6044ac22b3d14644", +- "sha256:75aaa27aa521a182824d89e5ab0a1d16ca207318a6b65042b046053cfc8ed07a", +- "sha256:7a2dd66d2d4df34fa82c9dc85657c5e019b87932019947faece7983f2089a840", +- "sha256:8a51f2c6d1f884e98846a0a9021ff6861bdb98457879f412fdc2b42d14494067", +- "sha256:9c568495e35599625f7b999774e29e8d6b01a6fb684d77dee1f56d41b11b40cd", +- "sha256:9eddaafb3c48e0900690c1727fba226c4804b8e6127ea409689c3bb492d06de4", +- "sha256:bbb332d45b32df41200380fff14712cb6093b61bd142272a10b16778c418e98e", +- "sha256:bc3d98f621898b4a9bc7fecc00513eec8f40b5b83913d74ccb445f037d58cd89", +- "sha256:c11d6033115dc4887c456565303f540c44197f4fc1a2bfb192224a301534888e", +- "sha256:c50a724d136ec10d920661f1442e4a8b010a4fe5aebd65e0c2241ea41dbe93dc", +- "sha256:d0a5095d52b90ff38592bbdc2644f17c6d495762edf47d876049cfd2968fbccf", +- "sha256:d6cff2276e502b86a25fd10c2a96973fdb45c7a977dca2138d661417f3728341", +- "sha256:e46d13f38cfcbb79bfdb2964b0fe12561fe633caf964a77a5f8d4e45fe5d2ef7" +- ], +- "version": "==2020.7.14" ++ "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538", ++ "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4", ++ "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc", ++ "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa", ++ "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444", ++ "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1", ++ "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af", ++ "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8", ++ "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9", ++ "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88", ++ "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba", ++ "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364", ++ "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e", ++ "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7", ++ "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0", ++ "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31", ++ "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683", ++ "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee", ++ "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b", ++ "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884", ++ "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c", ++ "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e", ++ "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562", ++ "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85", ++ "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c", ++ "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6", ++ "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d", ++ "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b", ++ "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70", ++ "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b", ++ "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b", ++ "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f", ++ "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0", ++ "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5", ++ "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5", ++ "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f", ++ "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e", ++ "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512", ++ "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d", ++ "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917", ++ "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f" ++ ], ++ "version": "==2020.11.13" + }, + "requests": { + "hashes": [ +- "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b", +- "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898" ++ "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", ++ "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + ], +- "version": "==2.24.0" ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", ++ "version": "==2.25.1" + }, + "requests-toolbelt": { + "hashes": [ +@@ -279,63 +289,83 @@ + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" + ], ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.15.0" + }, + "toml": { + "hashes": [ +- "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f", +- "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88" ++ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", ++ "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + ], +- "version": "==0.10.1" ++ "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", ++ "version": "==0.10.2" + }, + "tqdm": { + "hashes": [ +- "sha256:6baa75a88582b1db6d34ce4690da5501d2a1cb65c34664840a456b2c9f794d29", +- "sha256:fcb7cb5b729b60a27f300b15c1ffd4744f080fb483b88f31dc8654b082cc8ea5" ++ "sha256:4621f6823bab46a9cc33d48105753ccbea671b68bab2c50a9f0be23d4065cb5a", ++ "sha256:fe3d08dd00a526850568d542ff9de9bbc2a09a791da3c334f3213d8d0bbbca65" + ], +- "version": "==4.48.0" ++ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", ++ "version": "==4.56.0" + }, + "twine": { + "hashes": [ +- "sha256:34352fd52ec3b9d29837e6072d5a2a7c6fe4290e97bba46bb8d478b5c598f7ab", +- "sha256:ba9ff477b8d6de0c89dd450e70b2185da190514e91c42cc62f96850025c10472" ++ "sha256:2f6942ec2a17417e19d2dd372fc4faa424c87ee9ce49b4e20c427eb00a0f3f41", ++ "sha256:fcffa8fc37e8083a5be0728371f299598870ee1eccc94e9a25cef7b1dcfa8297" + ], + "index": "pypi", +- "version": "==3.2.0" ++ "version": "==3.3.0" + }, + "typed-ast": { + "hashes": [ +- "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", +- "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", +- "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", +- "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", +- "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", +- "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", +- "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", +- "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", +- "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", +- "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", +- "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", +- "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", +- "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", +- "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", +- "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", +- "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", +- "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", +- "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", +- "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", +- "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", +- "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" +- ], +- "version": "==1.4.1" ++ "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1", ++ "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d", ++ "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6", ++ "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd", ++ "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37", ++ "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151", ++ "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07", ++ "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440", ++ "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70", ++ "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496", ++ "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea", ++ "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400", ++ "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc", ++ "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606", ++ "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc", ++ "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581", ++ "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412", ++ "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a", ++ "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2", ++ "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787", ++ "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f", ++ "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937", ++ "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64", ++ "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487", ++ "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b", ++ "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41", ++ "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a", ++ "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3", ++ "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166", ++ "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10" ++ ], ++ "version": "==1.4.2" ++ }, ++ "typing-extensions": { ++ "hashes": [ ++ "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", ++ "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", ++ "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" ++ ], ++ "version": "==3.7.4.3" + }, + "urllib3": { + "hashes": [ +- "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a", +- "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461" ++ "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80", ++ "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73" + ], + "index": "pypi", +- "version": "==1.25.10" ++ "version": "==1.26.3" + }, + "webencodings": { + "hashes": [ +@@ -346,18 +376,11 @@ + }, + "wheel": { + "hashes": [ +- "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96", +- "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e" ++ "sha256:78b5b185f0e5763c26ca1e324373aadd49182ca90e825f7853f4b2509215dc0e", ++ "sha256:e11eefd162658ea59a60a0f6c7d493a7190ea4b9a85e335b33489d9f17e0245e" + ], + "index": "pypi", +- "version": "==0.34.2" +- }, +- "zipp": { +- "hashes": [ +- "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b", +- "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96" +- ], +- "version": "==3.1.0" ++ "version": "==0.36.2" + } + } + } +diff --git a/setup.py b/setup.py +index 5c55092..406c1c4 100644 +--- a/setup.py ++++ b/setup.py +@@ -11,7 +11,7 @@ with open("README.rst") as f: + + setup( + name="whatthepatch", +- version="1.0.1", ++ version="1.0.2", + author="Christopher S. Corley", + author_email="cscorley@gmail.com", + description="A patch parsing and application library.", +-- +2.37.0 + diff --git a/textproc/py-whatthepatch/pkg-descr b/textproc/py-whatthepatch/pkg-descr new file mode 100644 index 000000000000..641ce9409845 --- /dev/null +++ b/textproc/py-whatthepatch/pkg-descr @@ -0,0 +1,13 @@ +Features: +- Parsing of almost all diff formats (except forwarded ed) + - normal (default, --normal) + - copied context (-c, --context) + - unified context (-u, --unified) + - ed script (-e, --ed) + - rcs ed script (-n, --rcs) +- Parsing of several SCM patches + - CVS + - SVN + - Git + +WWW: https://github.com/cscorley/whatthepatch