summaryrefslogtreecommitdiff
path: root/dev-python/yapf
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/yapf')
-rw-r--r--dev-python/yapf/Manifest7
-rw-r--r--dev-python/yapf/files/yapf-0.32.0-tomli.patch178
-rw-r--r--dev-python/yapf/metadata.xml1
-rw-r--r--dev-python/yapf/yapf-0.32.0-r1.ebuild (renamed from dev-python/yapf/yapf-0.32.0.ebuild)23
4 files changed, 202 insertions, 7 deletions
diff --git a/dev-python/yapf/Manifest b/dev-python/yapf/Manifest
index d2c6cede7f36..2745af9cd679 100644
--- a/dev-python/yapf/Manifest
+++ b/dev-python/yapf/Manifest
@@ -1,3 +1,4 @@
-DIST yapf-0.32.0.tar.gz 178621 BLAKE2B b2132e3fffb96113700e322bba3f49ded0fe417de901522793564d5830951e9f2017c576fb89c5e423f4f547c95659040c2a4fc923887d9fb941e219b21f0cf6 SHA512 c1a05a04f7558a5b51899c29010bedc105c4a4bad4b5358a903a22a39f451e03369d2b4e670ecb44a857a8fef2bf438d9da0afcbdd3a336cf037bbf480d19878
-EBUILD yapf-0.32.0.ebuild 599 BLAKE2B 07a4269277313d39e45bf35342534d61932221f77c30b5f3c8af3d8764cafba6b1cee5b6d893499df38e9c7568fa2cd289d4e10d2a8c884121f443d9ef80b976 SHA512 2fd4d4a85abea972811250ca2632fb224154d49c506cd910aa68ade3536902a75481c6c7ceaec8ab41ee70d6051c9078640f17fd31be707c6b27df10057b78fb
-MISC metadata.xml 603 BLAKE2B 3c5e1326c4a276e94f5bfbc44c0ee89ac37dfd91f131444faa1345471e8aac8c306da211af47d7176c2756904b8cf3c3ed5bff1bcef26d9ee56e243fa0bc15b5 SHA512 e0d943210f72f70877bac20467e7fcc696a2b61f6e1b601ebc78eeceac427ff5e48ae3f0cec5913d95bff51e237038afd9eb29bf5ee3429f46fef983b5369c9f
+AUX yapf-0.32.0-tomli.patch 6596 BLAKE2B 9693c14cc55bf54c763dab158e488ce4a3013426d9cac62822715071fe424252e096d2d1b78bcb62798b586edcc195fe9241227c8b85d1e3570aff5bdb7fdd12 SHA512 b859f1b487dd0331a9e59c411072ceba719cd7b95bea450b6d8ed8f969d0af552adde77d9d8251bd31416d9715b238e628df5a7516da8eca028dd1a99ca72731
+DIST yapf-0.32.0.gh.tar.gz 178621 BLAKE2B b2132e3fffb96113700e322bba3f49ded0fe417de901522793564d5830951e9f2017c576fb89c5e423f4f547c95659040c2a4fc923887d9fb941e219b21f0cf6 SHA512 c1a05a04f7558a5b51899c29010bedc105c4a4bad4b5358a903a22a39f451e03369d2b4e670ecb44a857a8fef2bf438d9da0afcbdd3a336cf037bbf480d19878
+EBUILD yapf-0.32.0-r1.ebuild 726 BLAKE2B 5039d43c021920f55ebb7937ffc4f8eae6159cf1956b50a2188215336a7e646bad4e3579adf65d5cd286c9d8593298257bc714196b206357fef62f44c1512fa8 SHA512 211b484cf1490b940469b16a471068a4eb61727723649e80049c8acc2afac9a2406f7c2599beb40e30f2f720a6d8b8ed6877c02f1a1b3ce7e6099bcdcb9d0312
+MISC metadata.xml 654 BLAKE2B 9b8696004f7b8613e02a2cdc79c74a79806b1e4278c7a6e8b8b82f953629ad1233f1a5d1b1212306c688edba57ed4933fc23ba251ec12baac5c93c67b51ec47c SHA512 ccea54dccfb6f336699e0078cb3cd238b3aff5e7c05c50d6fdaf60e9b717a064c7e0cf27e17b001d252b0b52f7fa48c48eec5789aecd81c8f2e53a6ebb4054b6
diff --git a/dev-python/yapf/files/yapf-0.32.0-tomli.patch b/dev-python/yapf/files/yapf-0.32.0-tomli.patch
new file mode 100644
index 000000000000..bdbfd96112a2
--- /dev/null
+++ b/dev-python/yapf/files/yapf-0.32.0-tomli.patch
@@ -0,0 +1,178 @@
+From 5909ba87f79ea1d687e5836c62dc82a116f4229f Mon Sep 17 00:00:00 2001
+From: Eric McDonald <221418+emcd@users.noreply.github.com>
+Date: Wed, 30 Nov 2022 14:23:50 -0800
+Subject: [PATCH] Prevent crashes against valid 'pyproject.toml'. (#1040)
+
+* Replace 'toml' dependency with 'tomli', which fully supports TOML 1.
+
+Co-authored-by: Eric McDonald <emcd@users.noreply.github.com>
+---
+ setup.py | 2 +-
+ yapf/yapflib/file_resources.py | 15 ++++++++-------
+ yapf/yapflib/style.py | 25 ++++++++++++++-----------
+ yapftests/file_resources_test.py | 10 +++++-----
+ yapftests/style_test.py | 4 ++--
+ 5 files changed, 30 insertions(+), 26 deletions(-)
+
+diff --git a/yapf/yapflib/file_resources.py b/yapf/yapflib/file_resources.py
+index b5e2612b..6809ca9f 100644
+--- a/yapf/yapflib/file_resources.py
++++ b/yapf/yapflib/file_resources.py
+@@ -49,14 +49,15 @@ def _GetExcludePatternsFromPyprojectToml(filename):
+ """Get a list of file patterns to ignore from pyproject.toml."""
+ ignore_patterns = []
+ try:
+- import toml
++ import tomli as tomllib
+ except ImportError:
+ raise errors.YapfError(
+- "toml package is needed for using pyproject.toml as a "
++ "tomli package is needed for using pyproject.toml as a "
+ "configuration file")
+
+ if os.path.isfile(filename) and os.access(filename, os.R_OK):
+- pyproject_toml = toml.load(filename)
++ with open(filename, 'rb') as fd:
++ pyproject_toml = tomllib.load(fd)
+ ignore_patterns = pyproject_toml.get('tool',
+ {}).get('yapfignore',
+ {}).get('ignore_patterns', [])
+@@ -127,19 +128,19 @@ def GetDefaultStyleForDir(dirname, default_style=style.DEFAULT_STYLE):
+ # See if we have a pyproject.toml file with a '[tool.yapf]' section.
+ config_file = os.path.join(dirname, style.PYPROJECT_TOML)
+ try:
+- fd = open(config_file)
++ fd = open(config_file, 'rb')
+ except IOError:
+ pass # It's okay if it's not there.
+ else:
+ with fd:
+ try:
+- import toml
++ import tomli as tomllib
+ except ImportError:
+ raise errors.YapfError(
+- "toml package is needed for using pyproject.toml as a "
++ "tomli package is needed for using pyproject.toml as a "
+ "configuration file")
+
+- pyproject_toml = toml.load(config_file)
++ pyproject_toml = tomllib.load(fd)
+ style_dict = pyproject_toml.get('tool', {}).get('yapf', None)
+ if style_dict is not None:
+ return config_file
+diff --git a/yapf/yapflib/style.py b/yapf/yapflib/style.py
+index 233a64e6..c8397b32 100644
+--- a/yapf/yapflib/style.py
++++ b/yapf/yapflib/style.py
+@@ -746,17 +746,18 @@ def _CreateConfigParserFromConfigFile(config_filename):
+ # Provide a more meaningful error here.
+ raise StyleConfigError(
+ '"{0}" is not a valid style or file path'.format(config_filename))
+- with open(config_filename) as style_file:
+- config = py3compat.ConfigParser()
+- if config_filename.endswith(PYPROJECT_TOML):
+- try:
+- import toml
+- except ImportError:
+- raise errors.YapfError(
+- "toml package is needed for using pyproject.toml as a "
+- "configuration file")
+-
+- pyproject_toml = toml.load(style_file)
++ config = py3compat.ConfigParser()
++
++ if config_filename.endswith(PYPROJECT_TOML):
++ try:
++ import tomli as tomllib
++ except ImportError:
++ raise errors.YapfError(
++ "tomli package is needed for using pyproject.toml as a "
++ "configuration file")
++
++ with open(config_filename, 'rb') as style_file:
++ pyproject_toml = tomllib.load(style_file)
+ style_dict = pyproject_toml.get("tool", {}).get("yapf", None)
+ if style_dict is None:
+ raise StyleConfigError(
+@@ -766,7 +767,9 @@ def _CreateConfigParserFromConfigFile(config_filename):
+ config.set('style', k, str(v))
+ return config
+
++ with open(config_filename) as style_file:
+ config.read_file(style_file)
++
+ if config_filename.endswith(SETUP_CONFIG):
+ if not config.has_section('yapf'):
+ raise StyleConfigError(
+diff --git a/yapftests/file_resources_test.py b/yapftests/file_resources_test.py
+index 31184c4a..f54f393d 100644
+--- a/yapftests/file_resources_test.py
++++ b/yapftests/file_resources_test.py
+@@ -75,7 +75,7 @@ def test_get_exclude_file_patterns_from_yapfignore_with_wrong_syntax(self):
+
+ def test_get_exclude_file_patterns_from_pyproject(self):
+ try:
+- import toml
++ import tomli
+ except ImportError:
+ return
+ local_ignore_file = os.path.join(self.test_tmpdir, 'pyproject.toml')
+@@ -93,7 +93,7 @@ def test_get_exclude_file_patterns_from_pyproject(self):
+ @unittest.skipUnless(py3compat.PY36, 'Requires Python 3.6')
+ def test_get_exclude_file_patterns_from_pyproject_with_wrong_syntax(self):
+ try:
+- import toml
++ import tomli
+ except ImportError:
+ return
+ local_ignore_file = os.path.join(self.test_tmpdir, 'pyproject.toml')
+@@ -109,7 +109,7 @@ def test_get_exclude_file_patterns_from_pyproject_with_wrong_syntax(self):
+
+ def test_get_exclude_file_patterns_from_pyproject_no_ignore_section(self):
+ try:
+- import toml
++ import tomli
+ except ImportError:
+ return
+ local_ignore_file = os.path.join(self.test_tmpdir, 'pyproject.toml')
+@@ -122,7 +122,7 @@ def test_get_exclude_file_patterns_from_pyproject_no_ignore_section(self):
+
+ def test_get_exclude_file_patterns_from_pyproject_ignore_section_empty(self):
+ try:
+- import toml
++ import tomli
+ except ImportError:
+ return
+ local_ignore_file = os.path.join(self.test_tmpdir, 'pyproject.toml')
+@@ -192,7 +192,7 @@ def test_setup_config(self):
+ def test_pyproject_toml(self):
+ # An empty pyproject.toml file should not be used
+ try:
+- import toml
++ import tomli
+ except ImportError:
+ return
+
+diff --git a/yapftests/style_test.py b/yapftests/style_test.py
+index 8a37f953..d2203d9a 100644
+--- a/yapftests/style_test.py
++++ b/yapftests/style_test.py
+@@ -230,7 +230,7 @@ def testErrorUnknownStyleOption(self):
+
+ def testPyprojectTomlNoYapfSection(self):
+ try:
+- import toml
++ import tomli
+ except ImportError:
+ return
+
+@@ -242,7 +242,7 @@ def testPyprojectTomlNoYapfSection(self):
+
+ def testPyprojectTomlParseYapfSection(self):
+ try:
+- import toml
++ import tomli
+ except ImportError:
+ return
+
diff --git a/dev-python/yapf/metadata.xml b/dev-python/yapf/metadata.xml
index a0cd829c2bc3..51f7db08b2d2 100644
--- a/dev-python/yapf/metadata.xml
+++ b/dev-python/yapf/metadata.xml
@@ -12,6 +12,7 @@
didn't violate the style guide.
</longdescription>
<upstream>
+ <remote-id type="github">google/yapf</remote-id>
<remote-id type="pypi">yapf</remote-id>
</upstream>
</pkgmetadata>
diff --git a/dev-python/yapf/yapf-0.32.0.ebuild b/dev-python/yapf/yapf-0.32.0-r1.ebuild
index e0552774be32..d8665695e7b3 100644
--- a/dev-python/yapf/yapf-0.32.0.ebuild
+++ b/dev-python/yapf/yapf-0.32.0-r1.ebuild
@@ -1,14 +1,22 @@
# Copyright 2018-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
+DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{9..11} )
+
inherit distutils-r1
DESCRIPTION="A formatter for Python files"
-HOMEPAGE="https://github.com/google/yapf"
-SRC_URI="https://github.com/google/yapf/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+HOMEPAGE="
+ https://github.com/google/yapf/
+ https://pypi.org/project/yapf/
+"
+SRC_URI="
+ https://github.com/google/yapf/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
LICENSE="Apache-2.0"
SLOT="0"
@@ -17,7 +25,14 @@ IUSE="test"
RESTRICT="!test? ( test )"
BDEPEND="
- test? ( dev-python/toml[${PYTHON_USEDEP}] )"
+ test? (
+ dev-python/tomli[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-tomli.patch
+)
python_test() {
"${EPYTHON}" -m unittest discover -v -p '*_test.py' ||