mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-python/yapf: Backport dev-python/tomli support
Closes: https://bugs.gentoo.org/878673 Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
@@ -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
|
||||
|
||||
178
dev-python/yapf/files/yapf-0.32.0-tomli.patch
Normal file
178
dev-python/yapf/files/yapf-0.32.0-tomli.patch
Normal file
@@ -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
|
||||
|
||||
@@ -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' ||
|
||||
Reference in New Issue
Block a user