summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2024-08-15 19:32:05 (GMT)
committerGitHub <noreply@github.com>2024-08-15 19:32:05 (GMT)
commite913d2c87f1ae4e7a4aef5ba78368ef31d060767 (patch)
tree239207179608edb638b18adb39f524597c4eebf3
parentd7a3df91505faa56c51d169648253bd0d57ddae2 (diff)
downloadcpython-e913d2c87f1ae4e7a4aef5ba78368ef31d060767.zip
cpython-e913d2c87f1ae4e7a4aef5ba78368ef31d060767.tar.gz
cpython-e913d2c87f1ae4e7a4aef5ba78368ef31d060767.tar.bz2
gh-116608: Apply style and compatibility changes from importlib_metadata. (#123028)
-rw-r--r--Lib/importlib/resources/_functional.py6
-rw-r--r--Lib/test/test_importlib/resources/test_functional.py80
2 files changed, 50 insertions, 36 deletions
diff --git a/Lib/importlib/resources/_functional.py b/Lib/importlib/resources/_functional.py
index 9e3ea15..f59416f 100644
--- a/Lib/importlib/resources/_functional.py
+++ b/Lib/importlib/resources/_functional.py
@@ -57,11 +57,7 @@ def contents(anchor, *path_names):
DeprecationWarning,
stacklevel=1,
)
- return (
- resource.name
- for resource
- in _get_resource(anchor, path_names).iterdir()
- )
+ return (resource.name for resource in _get_resource(anchor, path_names).iterdir())
def _get_encoding_arg(path_names, encoding):
diff --git a/Lib/test/test_importlib/resources/test_functional.py b/Lib/test/test_importlib/resources/test_functional.py
index d60a2be..f65ffe6 100644
--- a/Lib/test/test_importlib/resources/test_functional.py
+++ b/Lib/test/test_importlib/resources/test_functional.py
@@ -1,9 +1,9 @@
import unittest
import os
-from test.support.warnings_helper import ignore_warnings, check_warnings
+from test.support import warnings_helper
-import importlib.resources as resources
+from importlib import resources
# Since the functional API forwards to Traversable, we only test
# filesystem resources here -- not zip files, namespace packages etc.
@@ -22,8 +22,7 @@ class ModuleAnchorMixin:
class FunctionalAPIBase:
def _gen_resourcetxt_path_parts(self):
- """Yield various names of a text file in anchor02, each in a subTest
- """
+ """Yield various names of a text file in anchor02, each in a subTest"""
for path_parts in (
('subdirectory', 'subsubdir', 'resource.txt'),
('subdirectory/subsubdir/resource.txt',),
@@ -36,7 +35,7 @@ class FunctionalAPIBase:
"""Assert that `string` ends with `suffix`.
Used to ignore an architecture-specific UTF-16 byte-order mark."""
- self.assertEqual(string[-len(suffix):], suffix)
+ self.assertEqual(string[-len(suffix) :], suffix)
def test_read_text(self):
self.assertEqual(
@@ -45,7 +44,10 @@ class FunctionalAPIBase:
)
self.assertEqual(
resources.read_text(
- self.anchor02, 'subdirectory', 'subsubdir', 'resource.txt',
+ self.anchor02,
+ 'subdirectory',
+ 'subsubdir',
+ 'resource.txt',
encoding='utf-8',
),
'a resource',
@@ -53,7 +55,9 @@ class FunctionalAPIBase:
for path_parts in self._gen_resourcetxt_path_parts():
self.assertEqual(
resources.read_text(
- self.anchor02, *path_parts, encoding='utf-8',
+ self.anchor02,
+ *path_parts,
+ encoding='utf-8',
),
'a resource',
)
@@ -67,13 +71,16 @@ class FunctionalAPIBase:
resources.read_text(self.anchor01, 'utf-16.file')
self.assertEqual(
resources.read_text(
- self.anchor01, 'binary.file', encoding='latin1',
+ self.anchor01,
+ 'binary.file',
+ encoding='latin1',
),
'\x00\x01\x02\x03',
)
self.assertEndsWith( # ignore the BOM
resources.read_text(
- self.anchor01, 'utf-16.file',
+ self.anchor01,
+ 'utf-16.file',
errors='backslashreplace',
),
'Hello, UTF-16 world!\n'.encode('utf-16-le').decode(
@@ -97,7 +104,8 @@ class FunctionalAPIBase:
self.assertEqual(f.read(), 'Hello, UTF-8 world!\n')
for path_parts in self._gen_resourcetxt_path_parts():
with resources.open_text(
- self.anchor02, *path_parts,
+ self.anchor02,
+ *path_parts,
encoding='utf-8',
) as f:
self.assertEqual(f.read(), 'a resource')
@@ -111,11 +119,14 @@ class FunctionalAPIBase:
with self.assertRaises(UnicodeDecodeError):
f.read()
with resources.open_text(
- self.anchor01, 'binary.file', encoding='latin1',
+ self.anchor01,
+ 'binary.file',
+ encoding='latin1',
) as f:
self.assertEqual(f.read(), '\x00\x01\x02\x03')
with resources.open_text(
- self.anchor01, 'utf-16.file',
+ self.anchor01,
+ 'utf-16.file',
errors='backslashreplace',
) as f:
self.assertEndsWith( # ignore the BOM
@@ -130,16 +141,17 @@ class FunctionalAPIBase:
self.assertEqual(f.read(), b'Hello, UTF-8 world!\n')
for path_parts in self._gen_resourcetxt_path_parts():
with resources.open_binary(
- self.anchor02, *path_parts,
+ self.anchor02,
+ *path_parts,
) as f:
self.assertEqual(f.read(), b'a resource')
def test_path(self):
with resources.path(self.anchor01, 'utf-8.file') as path:
- with open(str(path)) as f:
+ with open(str(path), encoding='utf-8') as f:
self.assertEqual(f.read(), 'Hello, UTF-8 world!\n')
with resources.path(self.anchor01) as path:
- with open(os.path.join(path, 'utf-8.file')) as f:
+ with open(os.path.join(path, 'utf-8.file'), encoding='utf-8') as f:
self.assertEqual(f.read(), 'Hello, UTF-8 world!\n')
def test_is_resource(self):
@@ -152,32 +164,32 @@ class FunctionalAPIBase:
self.assertTrue(is_resource(self.anchor02, *path_parts))
def test_contents(self):
- is_resource = resources.is_resource
- with check_warnings((".*contents.*", DeprecationWarning)):
+ with warnings_helper.check_warnings((".*contents.*", DeprecationWarning)):
c = resources.contents(self.anchor01)
self.assertGreaterEqual(
set(c),
{'utf-8.file', 'utf-16.file', 'binary.file', 'subdirectory'},
)
- with (
- self.assertRaises(OSError),
- check_warnings((".*contents.*", DeprecationWarning)),
- ):
+ with self.assertRaises(OSError), warnings_helper.check_warnings((
+ ".*contents.*",
+ DeprecationWarning,
+ )):
list(resources.contents(self.anchor01, 'utf-8.file'))
+
for path_parts in self._gen_resourcetxt_path_parts():
- with (
- self.assertRaises(OSError),
- check_warnings((".*contents.*", DeprecationWarning)),
- ):
+ with self.assertRaises(OSError), warnings_helper.check_warnings((
+ ".*contents.*",
+ DeprecationWarning,
+ )):
list(resources.contents(self.anchor01, *path_parts))
- with check_warnings((".*contents.*", DeprecationWarning)):
+ with warnings_helper.check_warnings((".*contents.*", DeprecationWarning)):
c = resources.contents(self.anchor01, 'subdirectory')
self.assertGreaterEqual(
set(c),
{'binary.file'},
)
- @ignore_warnings(category=DeprecationWarning)
+ @warnings_helper.ignore_warnings(category=DeprecationWarning)
def test_common_errors(self):
for func in (
resources.read_text,
@@ -208,18 +220,24 @@ class FunctionalAPIBase:
# Multiple path arguments need explicit encoding argument.
with self.assertRaises(TypeError):
func(
- self.anchor02, 'subdirectory',
- 'subsubdir', 'resource.txt',
+ self.anchor02,
+ 'subdirectory',
+ 'subsubdir',
+ 'resource.txt',
)
class FunctionalAPITest_StringAnchor(
- unittest.TestCase, FunctionalAPIBase, StringAnchorMixin,
+ unittest.TestCase,
+ FunctionalAPIBase,
+ StringAnchorMixin,
):
pass
class FunctionalAPITest_ModuleAnchor(
- unittest.TestCase, FunctionalAPIBase, ModuleAnchorMixin,
+ unittest.TestCase,
+ FunctionalAPIBase,
+ ModuleAnchorMixin,
):
pass