diff --git a/sphinxcontrib/plantuml.py b/sphinxcontrib/plantuml.py index c6cc647..7cd1eb7 100644 --- a/sphinxcontrib/plantuml.py +++ b/sphinxcontrib/plantuml.py @@ -22,7 +22,6 @@ from docutils.parsers.rst import directives from docutils.parsers.rst import Directive from sphinx.errors import SphinxError -from sphinx.util import logging from sphinx.util.nodes import set_source_info from sphinx.util.osutil import ( ensuredir, @@ -40,7 +39,14 @@ def search_image_for_language(filename, env): return filename -logger = logging.getLogger(__name__) +try: + from sphinx.util import logging + logger = logging.getLogger(__name__) + def _warn(self, msg): + logger.warning(msg) +except (AttributeError, ImportError): # Sphinx < 1.6 + def _warn(self, msg): + self.builder.warn(msg) class PlantUmlError(SphinxError): @@ -245,9 +251,9 @@ def _get_png_tag(self, fnames, node): # process images prior to html_vist. scale_attrs = [k for k in ('scale', 'width', 'height') if k in node] if scale_attrs and Image is None: - logger.warning('plantuml: unsupported scaling attributes: %s ' - '(install PIL or Pillow)' - % ', '.join(scale_attrs)) + _warn(self, ('plantuml: unsupported scaling attributes: %s ' + '(install PIL or Pillow)' + % ', '.join(scale_attrs))) if not scale_attrs or Image is None: return ('%s\n' % (self.encode(refname), self.encode(alt))) @@ -278,8 +284,7 @@ def _get_png_tag(self, fnames, node): styles.extend('%s: %s%s' % (a, w * scale / 100, 'px') for a, w in zip(['width', 'height'], im.size)) except OSError as err: - logger.warning('plantuml: failed to get image size: %s' - % err) + _warn(self, 'plantuml: failed to get image size: %s' % err) return ('%s' '\n' @@ -358,7 +363,7 @@ def _prepare_html_render(self, fmt): yield fileformats, gettag except PlantUmlError as err: - logger.warning(str(err)) + _warn(self, str(err)) raise nodes.SkipNode @@ -427,7 +432,7 @@ def latex_visit_plantuml(self, node): refname, outfname = render_plantuml(self, node, fileformat) refname, outfname = postproc(self, refname, outfname) except PlantUmlError as err: - logger.warning(str(err)) + _warn(self, str(err)) raise nodes.SkipNode # put node representing rendered image @@ -470,7 +475,7 @@ def text_visit_plantuml(self, node): try: text = render_plantuml_inline(self, node, 'txt') except PlantUmlError as err: - logger.warning(str(err)) + _warn(self, str(err)) text = node['uml'] # fall back to uml text, which is still readable self.new_state() @@ -484,14 +489,14 @@ def pdf_visit_plantuml(self, node): refname, outfname = render_plantuml(self, node, 'eps') refname, outfname = _convert_eps_to_pdf(self, refname, outfname) except PlantUmlError as err: - logger.warning(str(err)) + _warn(self, str(err)) raise nodes.SkipNode rep = nodes.image(uri=outfname, alt=node.get('alt', node['uml'])) node.parent.replace(node, rep) def unsupported_visit_plantuml(self, node): - logger.warning('plantuml: unsupported output format (node skipped)') + _warn(self, 'plantuml: unsupported output format (node skipped)') raise nodes.SkipNode