diff --git a/doc/utilities.rst b/doc/utilities.rst index dffc8d93273641226c59b8a5ca7b2cffb7f93ff1..466795ba4bc86315500fffa5de9460f7fca8ed74 100644 --- a/doc/utilities.rst +++ b/doc/utilities.rst @@ -54,5 +54,3 @@ Visualizing Expressions ======================= .. autofunction:: pymbolic.imperative.utils.get_dot_dependency_graph - -.. autofunction:: pymbolic.imperative.utils.show_dot diff --git a/pymbolic/imperative/utils.py b/pymbolic/imperative/utils.py index 7479e475c74f19ebc8ddb4eea150b100f6335e21..ecd1e0ecab6e25e68eec3d51a5da594be68af127 100644 --- a/pymbolic/imperative/utils.py +++ b/pymbolic/imperative/utils.py @@ -139,75 +139,13 @@ def get_dot_dependency_graph( # {{{ graphviz / dot interactive show def show_dot(dot_code, output_to=None): - """ - Visualize the graph represented by *dot_code*. - Can be called on the result of :func:`get_dot_dependency_graph`. - - :arg dot_code: An instance of :class:`str` in the `dot <http://graphviz.org/>`__ - language to visualize. - :arg output_to: An instance of :class:`str` that can be one of: - - - ``"xwindow"`` to visualize the graph as an - `X window <https://en.wikipedia.org/wiki/X_Window_System>`_. - - ``"browser"`` to visualize the graph as an SVG file in the - system's default web-browser. - - ``"svg"`` to store the dot code as an SVG file on the file system. - Returns the path to the generated svg file. - - Defaults to ``"xwindow"`` if X11 support is present, otherwise defaults - to ``"browser"``. - - :returns: Depends on *output_to*. - """ - - from tempfile import mkdtemp - import subprocess - temp_dir = mkdtemp(prefix="tmp_dagrt_dot") - - dot_file_name = "code.dot" - - from os.path import join - with open(join(temp_dir, dot_file_name), "w") as dotf: - dotf.write(dot_code) - - # {{{ preprocess 'output_to' - - if output_to is None: - with subprocess.Popen(["dot", "-T?"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE - ) as proc: - supported_formats = proc.stderr.read().decode() - - if " x11 " in supported_formats: - output_to = "xwindow" - else: - output_to = "browser" - - # }}} - - if output_to == "xwindow": - subprocess.check_call(["dot", "-Tx11", dot_file_name], cwd=temp_dir) - elif output_to in ["browser", "svg"]: - svg_file_name = "code.svg" - subprocess.check_call(["dot", "-Tsvg", "-o", svg_file_name, dot_file_name], - cwd=temp_dir) - - full_svg_file_name = join(temp_dir, svg_file_name) - logger.info("show_dot_dependency_graph: svg written to '%s'", - full_svg_file_name) - - if output_to == "svg": - return full_svg_file_name - else: - assert output_to == "browser" - - from webbrowser import open as browser_open - browser_open("file://" + full_svg_file_name) - else: - raise ValueError("`output_to` can be one of 'xwindow' or 'browser'," - f" got '{output_to}'") + from warnings import warn + warn("pymbolic.imperative.utils.show_dot is deprecated. " + "It will stop working in July 2023. " + "Please use pytools.graphviz.show_dot instead.", DeprecationWarning) + from pytools.graphviz import show_dot + return show_dot(dot_code, output_to) # }}} # vim: fdm=marker diff --git a/setup.py b/setup.py index bb4591825215cddcb4d15e1a185c5564bf5f803d..e0d5f35dce614d4c33682b7eddecd5ea09cdac48 100644 --- a/setup.py +++ b/setup.py @@ -37,7 +37,7 @@ setup(name="pymbolic", packages=find_packages(), python_requires="~=3.8", install_requires=[ - "pytools>=2", + "pytools>=2022.1.14", ], extras_require={ "test": ["pytest>=2.3"],