From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 3840115800F for ; Thu, 26 Jan 2023 10:45:48 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id E8E56E0826; Thu, 26 Jan 2023 10:45:46 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (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) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id C9A71E0826 for ; Thu, 26 Jan 2023 10:45:46 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (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) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 88940335D74 for ; Thu, 26 Jan 2023 10:45:45 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id A2A79779 for ; Thu, 26 Jan 2023 10:45:43 +0000 (UTC) From: "Michał Górny" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Michał Górny" Message-ID: <1674729939.96211210164eb5dc02ce851a39ca5655d49ca2de.mgorny@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/yapf/files/, dev-python/yapf/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-python/yapf/Manifest dev-python/yapf/files/yapf-0.32.0-tomli.patch dev-python/yapf/yapf-0.32.0-r1.ebuild dev-python/yapf/yapf-0.32.0.ebuild X-VCS-Directories: dev-python/yapf/files/ dev-python/yapf/ X-VCS-Committer: mgorny X-VCS-Committer-Name: Michał Górny X-VCS-Revision: 96211210164eb5dc02ce851a39ca5655d49ca2de X-VCS-Branch: master Date: Thu, 26 Jan 2023 10:45:43 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 6c30a881-bb5f-4bd5-ab17-e5d5a3fe03fd X-Archives-Hash: 34f3bd694ab545375994d3ff3a538f28 commit: 96211210164eb5dc02ce851a39ca5655d49ca2de Author: Michał Górny gentoo org> AuthorDate: Thu Jan 26 10:44:52 2023 +0000 Commit: Michał Górny gentoo org> CommitDate: Thu Jan 26 10:45:39 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=96211210 dev-python/yapf: Backport dev-python/tomli support Closes: https://bugs.gentoo.org/878673 Signed-off-by: Michał Górny gentoo.org> dev-python/yapf/Manifest | 2 +- dev-python/yapf/files/yapf-0.32.0-tomli.patch | 178 +++++++++++++++++++++ .../{yapf-0.32.0.ebuild => yapf-0.32.0-r1.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 +--- + 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 similarity index 58% rename from dev-python/yapf/yapf-0.32.0.ebuild rename to 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' ||