#14264 closed defect (fixed)
Syntax Error when deployed to trac 1.6
| Reported by: | Tony Albers | Owned by: | Cinc-th |
|---|---|---|---|
| Priority: | normal | Component: | TracWikiPrintPlugin |
| Severity: | normal | Keywords: | |
| Cc: | Trac Release: | 1.6 |
Description
Hi,
Running Trac 1.6 and TracWikiPrint 3.0.dev0, I get no extra wikiprint admin menu, and in trac.log:
2023-12-19 08:06:18,827 Trac[env] INFO: -------------------------------- environment startup [Trac 1.6] --------------------------------
2023-12-19 08:06:19,281 Trac[loader] ERROR: Skipping "wikiprint.formats = wikiprint.formats": ModuleNotFoundError: No module named 'api'
2023-12-19 08:06:19,283 Trac[loader] ERROR: Skipping "wikiprint.web_ui = wikiprint.web_ui": ModuleNotFoundError: No module named 'defaults'
2023-12-19 08:06:19,287 Trac[loader] ERROR: Skipping "wikiprint.wikiprint = wikiprint.wikiprint":
Traceback (most recent call last):
File "/var/www/tracinst/lib/python3.11/site-packages/trac/loader.py", line 80, in _load_eggs
entry.load(require=True)
File "/var/www/tracinst/lib/python3.11/site-packages/pkg_resources/__init__.py", line 2468, in load
return self.resolve()
^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/pkg_resources/__init__.py", line 2474, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/wikiprint/wikiprint.py", line 150
except Exception, e:
^^^^^^^^^^^^
SyntaxError: multiple exception types must be parenthesized (wikiprint.py, line 150)
Attachments (0)
Change History (10)
comment:1 follow-up: 5 Changed 23 months ago by
comment:2 follow-up: 3 Changed 23 months ago by
Thanks, however that gives me an error about wkhtmltopdf binary missing:
Trac detected an internal error: OSError: No wkhtmltopdf executable found: "b''"
But as far as I understand it, xhtml2pdf should be used, not wkhtmltopdf... Or did i misunderstand that?
And in the log:
2023-12-19 12:08:52,166 Trac[main] ERROR: [10.23.245.44] Internal Server Error: <RequestWithSession "GE
T '/wiki/TracGuide?format=pdfpage'">, referrer 'https://trac01.example.com/wiki/TracGuide'
Traceback (most recent call last):
File "/var/www/tracinst/lib/python3.11/site-packages/pdfkit/configuration.py", line 35, in __init__
with open(self.wkhtmltopdf) as f:
^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: b''
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 609, in dispatch_request
dispatcher.dispatch(req)
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 301, in dispatch
raise e
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 247, in dispatch
resp = chosen_handler.process_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/trac/wiki/web_ui.py", line 184, in process_request
Mimeview(self.env).send_converted(req, 'text/x-trac-wiki',
File "/var/www/tracinst/lib/python3.11/site-packages/trac/mimeview/api.py", line 1039, in send_converted
content, output_type, ext = self.convert_content(req, in_type, content,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/trac/mimeview/api.py", line 712, in convert_content
output = conversion.converter.convert_content(req, mimetype,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/tracpdf/wikiprint.py", line 244, in convert_content
pdf_page = from_url(page_lst, False, options=pdfoptions, cover=cover_url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/pdfkit/api.py", line 24, in from_url
r = PDFKit(url, 'url', options=options, toc=toc, cover=cover,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/pdfkit/pdfkit.py", line 45, in __init__
self.configuration = (Configuration() if configuration is None
^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/pdfkit/configuration.py", line 38, in __init__
raise IOError('No wkhtmltopdf executable found: "%s"\n'
OSError: No wkhtmltopdf executable found: "b''"
OSError: No wkhtmltopdf executable found: "b''"
If this file exists please check that this process can read it or you can pass path to it manually in method call, check README. Otherwise please install wkhtmltopdf - https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf
And I'd rather not install wkhtmltopdf since it pulls in a whole bunch of X-related stuff that shouldn't be on this server.
comment:3 Changed 23 months ago by
But as far as I understand it, xhtml2pdf should be used, not wkhtmltopdf... Or did i misunderstand that?
TracWikiPrintPlugin#Installation says: Install wkhtmltopdf.
comment:4 Changed 23 months ago by
Well, it does. But I'm trying to use xhtml2pdf
And I missed the fact that WikiPrintXhtml2pdf doesn't actually have a "component" in the ticket system here. And I didn't even notice that when I created the ticket, sorry.
It doesn't look like WikiPrintXhtml2pdf is in svn..
So, is it possible to use it?
comment:5 follow-up: 10 Changed 23 months ago by
Replying to Jun Omae:
Please install from repository in trac-hacks.org instead of pypi.
I added you as a maintainer on PyPI. Feel free to push the latest. I'll do the same if I can find time.
comment:6 follow-up: 7 Changed 23 months ago by
Okay, so I managed to fetch wkhtmltopdf from the author's gihub releases page: https://github.com/wkhtmltopdf/packaging/releases
I've installed the .deb, and I now have the wkhtmltopdf binary in PATH, and I've checked that it's working correctly by trying to convert a simple html to pdf. Worked fine.
But when I try to get a pdf from a trac page, I get:
Trac detected an internal error: OSError: wkhtmltopdf reported an error: Exit with code 1 due to network error: UnknownContentError
And i the trac log file:
2023-12-20 14:27:24,541 Trac[main] ERROR: [100.230.240.22] Internal Server Error: <RequestWithSession "GET
'/wikiprint/WikiStart'">, referrer None
Traceback (most recent call last):
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 609, in dispatch_request
dispatcher.dispatch(req)
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 301, in dispatch
raise e
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 247, in dispatch
resp = chosen_handler.process_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/tracpdf/wikiprint.py", line 335, in process_request
html_page = self.create_html_page(req, page.text)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/tracpdf/wikiprint.py", line 393, in create_html_page
return self.page_tmpl.format(wiki=wiki_html, style=self._get_styles(stylepage))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/tracpdf/wikiprint.py", line 376, in _get_styles
trac_css = get_trac_css(self.env, 'trac.css')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/tracpdf/util.py", line 53, in get_trac_css
return to_unicode(f.read(-1))
^^^^^^^^^^
File "/usr/lib/python3.11/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 15517: ordinal not in range(128)
2023-12-20 14:27:24,984 Trac[main] ERROR: [100.230.245.48] Internal Server Error: <RequestWithSession "GET '/wiki/WikiStart?format=pdfpage'">, referrer 'https://trac01.example.com/wiki'
Traceback (most recent call last):
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 609, in dispatch_request
dispatcher.dispatch(req)
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 301, in dispatch
raise e
File "/var/www/tracinst/lib/python3.11/site-packages/trac/web/main.py", line 247, in dispatch
resp = chosen_handler.process_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/trac/wiki/web_ui.py", line 184, in process_request
Mimeview(self.env).send_converted(req, 'text/x-trac-wiki',
File "/var/www/tracinst/lib/python3.11/site-packages/trac/mimeview/api.py", line 1039, in send_converted
content, output_type, ext = self.convert_content(req, in_type, content,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/trac/mimeview/api.py", line 712, in convert_content
output = conversion.converter.convert_content(req, mimetype,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/tracpdf/wikiprint.py", line 244, in convert_content
pdf_page = from_url(page_lst, False, options=pdfoptions, cover=cover_url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/pdfkit/api.py", line 27, in from_url
return r.to_pdf(output_path)
^^^^^^^^^^^^^^^^^^^^^
File "/var/www/tracinst/lib/python3.11/site-packages/pdfkit/pdfkit.py", line 201, in to_pdf
self.handle_error(exit_code, stderr)
File "/var/www/tracinst/lib/python3.11/site-packages/pdfkit/pdfkit.py", line 155, in handle_error
raise IOError('wkhtmltopdf reported an error:\n' + stderr)
OSError: wkhtmltopdf reported an error:
Exit with code 1 due to network error: UnknownContentError
OSError: wkhtmltopdf reported an error:
Exit with code 1 due to network error: UnknownContentError
As far as I can tell, it goes wrong here:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 15517: ordinal not in range(128)
But I'm unable to figure out if this is an error in Trac or in wkhtmltopdf..
/tony
comment:7 Changed 23 months ago by
Replying to Tony Albers:
And i the trac log file:
2023-12-20 14:27:24,541 Trac[main] ERROR: [100.230.240.22] Internal Server Error: <RequestWithSession "GET '/wikiprint/WikiStart'">, referrer None Traceback (most recent call last): ... File "/var/www/tracinst/lib/python3.11/site-packages/tracpdf/util.py", line 53, in get_trac_css return to_unicode(f.read(-1)) ^^^^^^^^^^ File "/usr/lib/python3.11/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 15517: ordinal not in range(128) ...
Unable to reproduce it on my environment. However, could you please try the following patch?
-
tracpdf/util.py
23 23 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 24 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 25 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 import io 26 27 import os 27 28 from imp import find_module 28 from trac.util.text import to_unicode29 29 30 30 try: 31 31 FileNotFoundError … … 48 48 49 49 # TODO: check for environment CSS files first to account for local 50 50 # styles. 51 path = os.path.join(mod[1], 'htdocs', 'css', css_file) 51 52 try: 52 with open(os.path.join(mod[1], 'htdocs', 'css', css_file), 'r') as f:53 return to_unicode(f.read(-1))53 with io.open(path, encoding='utf-8', errors='replace') as f: 54 return f.read() 54 55 except FileNotFoundError: 55 return to_unicode(u'')56 return u'' 56 57 57 58 58 59 def writeResponse(req, data, httperror=200, content_type='text/plain; charset=utf-8'):
comment:8 Changed 23 months ago by
Thanks Jun,
That seems to have solved that issue.
However, I have run into another issue with it, the images on the pages don't show up in the PDFs or in the printable HTML. I've written to trac-users about that since it might no be related to this.
Thanks,
/tony
comment:10 Changed 22 months ago by
Replying to Ryan J Ollos:
Replying to Jun Omae:
Please install from repository in trac-hacks.org instead of pypi.
I added you as a maintainer on PyPI. Feel free to push the latest. I'll do the same if I can find time.
Thanks, Ryan. I just pushed the latest at https://pypi.org/project/TracWikiPrint/4.0.0.dev0/.



Please install from repository in trac-hacks.org instead of pypi. The trunk has been made compatible with Python 3.