diff options
author | Michał Górny <mgorny@gentoo.org> | 2023-01-26 11:44:52 +0100 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2023-01-26 11:45:39 +0100 |
commit | 96211210164eb5dc02ce851a39ca5655d49ca2de (patch) | |
tree | dae2867623914ac5c822dae48615a08d59537ad6 | |
parent | dev-lang/smlnj: better makefile fix (diff) | |
download | gentoo-96211210164eb5dc02ce851a39ca5655d49ca2de.tar.gz gentoo-96211210164eb5dc02ce851a39ca5655d49ca2de.tar.bz2 gentoo-96211210164eb5dc02ce851a39ca5655d49ca2de.zip |
dev-python/yapf: Backport dev-python/tomli support
Closes: https://bugs.gentoo.org/878673
Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r-- | dev-python/yapf/Manifest | 2 | ||||
-rw-r--r-- | dev-python/yapf/files/yapf-0.32.0-tomli.patch | 178 | ||||
-rw-r--r-- | dev-python/yapf/yapf-0.32.0-r1.ebuild (renamed from dev-python/yapf/yapf-0.32.0.ebuild) | 23 |
3 files changed, 198 insertions, 5 deletions
diff --git a/dev-python/yapf/Manifest b/dev-python/yapf/Manifest index 9dd78a39089f..36aac5ba5a5a 100644 --- a/dev-python/yapf/Manifest +++ b/dev-python/yapf/Manifest @@ -1 +1 @@ -DIST yapf-0.32.0.tar.gz 178621 BLAKE2B b2132e3fffb96113700e322bba3f49ded0fe417de901522793564d5830951e9f2017c576fb89c5e423f4f547c95659040c2a4fc923887d9fb941e219b21f0cf6 SHA512 c1a05a04f7558a5b51899c29010bedc105c4a4bad4b5358a903a22a39f451e03369d2b4e670ecb44a857a8fef2bf438d9da0afcbdd3a336cf037bbf480d19878 +DIST yapf-0.32.0.gh.tar.gz 178621 BLAKE2B b2132e3fffb96113700e322bba3f49ded0fe417de901522793564d5830951e9f2017c576fb89c5e423f4f547c95659040c2a4fc923887d9fb941e219b21f0cf6 SHA512 c1a05a04f7558a5b51899c29010bedc105c4a4bad4b5358a903a22a39f451e03369d2b4e670ecb44a857a8fef2bf438d9da0afcbdd3a336cf037bbf480d19878 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/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' || |