|
|
|
@ -90,13 +90,18 @@ class _HackedGetData: |
|
|
|
def get_data(self, path): |
|
|
|
"""Gross hack to contort loader to deal w/ load_*()'s bad API.""" |
|
|
|
if self.file and path == self.path: |
|
|
|
with self.file: |
|
|
|
if not self.file.closed: |
|
|
|
file = self.file |
|
|
|
else: |
|
|
|
self.file = file = open(self.path, 'r') |
|
|
|
|
|
|
|
with file: |
|
|
|
# Technically should be returning bytes, but |
|
|
|
# SourceLoader.get_code() just passed what is returned to |
|
|
|
# compile() which can handle str. And converting to bytes would |
|
|
|
# require figuring out the encoding to decode to and |
|
|
|
# tokenize.detect_encoding() only accepts bytes. |
|
|
|
return self.file.read() |
|
|
|
return file.read() |
|
|
|
else: |
|
|
|
return super().get_data(path) |
|
|
|
|
|
|
|
|