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 <module>
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 "<frozen importlib._bootstrap>", 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

