Package: asciidoc
Version: 8.6.10+git20190307.51d7c14-1
Severity: normal
Tags: patch
Hello,
using asciidocapi with the following small script (also attached)
#!/usr/bin/python3
import io
import sys
sys.path.append('/usr/share/asciidoc')
import asciidocapi
infile = io.StringIO('Test')
outfile = io.StringIO()
adoc = asciidocapi.AsciiDocAPI()
adoc.execute(infile, outfile)
results in an exception:
Traceback (most recent call last):
File "./test", line 13, in
adoc = asciidocapi.AsciiDocAPI()
File "/usr/share/asciidoc/asciidocapi.py", line 209, in __init__
self.__import_asciidoc()
File "/usr/share/asciidoc/asciidocapi.py", line 244, in __import_asciidoc
module = importlib.util.module_from_spec(spec)
File "", line 580, in module_from_spec
AttributeError: 'NoneType' object has no attribute 'loader'
The attached patch fixes this issue (tested with python3.7 and
python3.8).
Regards
Simon
--
+ privacy is necessary
+ using gnupg http://gnupg.org
+ public key id: 0x92FEFDB7E44C32F9
#!/usr/bin/python3
import io
import sys
sys.path.append('/usr/share/asciidoc')
import asciidocapi
infile = io.StringIO('Test')
outfile = io.StringIO()
adoc = asciidocapi.AsciiDocAPI()
adoc.execute(infile, outfile)
--- /usr/share/asciidoc/asciidocapi.py.orig 2019-11-19 08:27:07.987333977 +0100
+++ /usr/share/asciidoc/asciidocapi.py 2019-11-24 08:23:19.141730508 +0100
@@ -239,9 +239,13 @@
import imp
module = imp.load_source('asciidoc', self.cmd)
else:
-import importlib.util
-spec = importlib.util.spec_from_file_location('asciidoc', self.cmd)
-module = importlib.util.module_from_spec(spec)
+# Thanks to Mad Physicist for this solution, read on 2019-11-19
+# https://stackoverflow.com/questions/2601047/import-a-python-module-without-the-py-extension/43602645#43602645
+from importlib.util import spec_from_loader, module_from_spec
+from importlib.machinery import SourceFileLoader
+loader = SourceFileLoader('asciidoc', self.cmd)
+spec = spec_from_loader('asciidoc', loader)
+module = module_from_spec(spec)
spec.loader.exec_module(module)
self.asciidoc = module
except ImportError:
signature.asc
Description: PGP signature