summaryrefslogtreecommitdiffstats
path: root/Lib/modulefinder.py
diff options
context:
space:
mode:
authorBarry <barry@barrys-emacs.org>2020-04-14 19:16:06 (GMT)
committerGitHub <noreply@github.com>2020-04-14 19:16:06 (GMT)
commitd42e5820631cd66ee1eab8f610d4b58f3dfdd81c (patch)
tree3f6f2a5b9909d2e72a1c231a99736eccff3f16c5 /Lib/modulefinder.py
parentaade1cc453698e1bc48861b16955c2c2219ec521 (diff)
downloadcpython-d42e5820631cd66ee1eab8f610d4b58f3dfdd81c.zip
cpython-d42e5820631cd66ee1eab8f610d4b58f3dfdd81c.tar.gz
cpython-d42e5820631cd66ee1eab8f610d4b58f3dfdd81c.tar.bz2
bpo-40260: Update modulefinder to use io.open_code() and respect coding comments (GH-19488)
Diffstat (limited to 'Lib/modulefinder.py')
-rw-r--r--Lib/modulefinder.py30
1 files changed, 14 insertions, 16 deletions
diff --git a/Lib/modulefinder.py b/Lib/modulefinder.py
index e0d2998..84ddbdb 100644
--- a/Lib/modulefinder.py
+++ b/Lib/modulefinder.py
@@ -5,6 +5,7 @@ import importlib._bootstrap_external
import importlib.machinery
import marshal
import os
+import io
import sys
import types
import warnings
@@ -68,35 +69,32 @@ def _find_module(name, path=None):
# Some special cases:
if spec.loader is importlib.machinery.BuiltinImporter:
- return None, None, ("", "", _C_BUILTIN)
+ return None, None, ("", _C_BUILTIN)
if spec.loader is importlib.machinery.FrozenImporter:
- return None, None, ("", "", _PY_FROZEN)
+ return None, None, ("", _PY_FROZEN)
file_path = spec.origin
if spec.loader.is_package(name):
- return None, os.path.dirname(file_path), ("", "", _PKG_DIRECTORY)
+ return None, os.path.dirname(file_path), ("", _PKG_DIRECTORY)
if isinstance(spec.loader, importlib.machinery.SourceFileLoader):
kind = _PY_SOURCE
- mode = "r"
elif isinstance(spec.loader, importlib.machinery.ExtensionFileLoader):
kind = _C_EXTENSION
- mode = "rb"
elif isinstance(spec.loader, importlib.machinery.SourcelessFileLoader):
kind = _PY_COMPILED
- mode = "rb"
else: # Should never happen.
- return None, None, ("", "", _SEARCH_ERROR)
+ return None, None, ("", _SEARCH_ERROR)
- file = open(file_path, mode)
+ file = io.open_code(file_path)
suffix = os.path.splitext(file_path)[-1]
- return file, file_path, (suffix, mode, kind)
+ return file, file_path, (suffix, kind)
class Module:
@@ -160,15 +158,15 @@ class ModuleFinder:
def run_script(self, pathname):
self.msg(2, "run_script", pathname)
- with open(pathname) as fp:
- stuff = ("", "r", _PY_SOURCE)
+ with io.open_code(pathname) as fp:
+ stuff = ("", _PY_SOURCE)
self.load_module('__main__', fp, pathname, stuff)
def load_file(self, pathname):
dir, name = os.path.split(pathname)
name, ext = os.path.splitext(name)
- with open(pathname) as fp:
- stuff = (ext, "r", _PY_SOURCE)
+ with io.open_code(pathname) as fp:
+ stuff = (ext, _PY_SOURCE)
self.load_module(name, fp, pathname, stuff)
def import_hook(self, name, caller=None, fromlist=None, level=-1):
@@ -333,14 +331,14 @@ class ModuleFinder:
return m
def load_module(self, fqname, fp, pathname, file_info):
- suffix, mode, type = file_info
+ suffix, type = file_info
self.msgin(2, "load_module", fqname, fp and "fp", pathname)
if type == _PKG_DIRECTORY:
m = self.load_package(fqname, pathname)
self.msgout(2, "load_module ->", m)
return m
if type == _PY_SOURCE:
- co = compile(fp.read()+'\n', pathname, 'exec')
+ co = compile(fp.read()+b'\n', pathname, 'exec')
elif type == _PY_COMPILED:
try:
data = fp.read()
@@ -504,7 +502,7 @@ class ModuleFinder:
if path is None:
if name in sys.builtin_module_names:
- return (None, None, ("", "", _C_BUILTIN))
+ return (None, None, ("", _C_BUILTIN))
path = self.path