Skip to content

Commit abfd936

Browse files
committed
Revert "use importlib.resources to acquire doctest resources"
This reverts commit 9b850e7.
1 parent 9b850e7 commit abfd936

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

Lib/doctest.py

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ def _test():
102102
import sys
103103
import traceback
104104
import unittest
105-
import importlib.resources
106-
from io import StringIO
105+
from io import StringIO, IncrementalNewlineDecoder
107106
from collections import namedtuple
108107
import _colorize # Used in doctests
109108
from _colorize import ANSIColors, can_colorize
@@ -236,31 +235,25 @@ def _normalize_module(module, depth=2):
236235
else:
237236
raise TypeError("Expected a module, string, or None")
238237

238+
def _newline_convert(data):
239+
# The IO module provides a handy decoder for universal newline conversion
240+
return IncrementalNewlineDecoder(None, True).decode(data, True)
241+
239242
def _load_testfile(filename, package, module_relative, encoding):
240243
if module_relative:
241244
package = _normalize_module(package, 3)
242245
filename = _module_relative_path(package, filename)
243-
try:
244-
loader = package.__loader__
245-
except AttributeError:
246-
pass
247-
else:
248-
if loader is not None:
249-
return (
250-
importlib.resources.read_text(package, filename, encoding=encoding),
251-
filename,
252-
)
253-
254-
try:
255-
package.__spec__.loader
256-
except AttributeError:
257-
pass
258-
else:
259-
return (
260-
importlib.resources.read_text(package, filename, encoding=encoding),
261-
filename,
262-
)
263-
246+
if (loader := getattr(package, '__loader__', None)) is None:
247+
try:
248+
loader = package.__spec__.loader
249+
except AttributeError:
250+
pass
251+
if hasattr(loader, 'get_data'):
252+
file_contents = loader.get_data(filename)
253+
file_contents = file_contents.decode(encoding)
254+
# get_data() opens files as 'rb', so one must do the equivalent
255+
# conversion as universal newlines would do.
256+
return _newline_convert(file_contents), filename
264257
with open(filename, encoding=encoding) as f:
265258
return f.read(), filename
266259

0 commit comments

Comments
 (0)