numba / numba/numba-prototypes

Investigate graphviz breakage

Open
#39 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
HTML
Stars
8
Forks
6
PR merge metrics
No merged PRs in 30d

Description

See https://github.com/numba/numba-prototypes/pull/37

The `environment.yml` requires a post-install fix to reinstall `graphviz`.

The error is:

```
E graphviz.backend.execute.CalledProcessError: Command '[PosixPath('dot'), '-Kdot', '-Tsvg']' died with . [stderr: b'Error: segment [(270.89, 357.85),(265.24,361.05)] does not intersect box ll=(265,319),ur=(343,361)\nAssertion failed: (0), function boxIntersectf, file compound.c, line 67.\n']
```

full traceback

```pytb

tests/test_ch04_1.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/autotests.py:33: in autotest_notebook
exec_with_linecache(code, synthetic_filename, ns, ns)
tests/autotests.py:118: in exec_with_linecache
exec(compiled_code, globals_dict, locals_dict)
:13: in
cres = _ch03_compiler_pipeline(
utils/pipeline.py:235: in __call__
result = func(**filtered_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^
ch03_egraph_program_rewrites.py:61: in egraph_saturation
pipeline_report.append("EGraph Saturated", egraph)
utils/report.py:237: in append
content = egraph_to_svg(content)
^^^^^^^^^^^^^^^^^^^^^^
utils/report.py:36: in egraph_to_svg
svg_raw = content.pipe(format="svg", quiet=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
temp_env/lib/python3.12/site-packages/graphviz/piping.py:104: in pipe
return self._pipe_legacy(format,
temp_env/lib/python3.12/site-packages/graphviz/_tools.py:185: in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
temp_env/lib/python3.12/site-packages/graphviz/piping.py:121: in _pipe_legacy
return self._pipe_future(format,
temp_env/lib/python3.12/site-packages/graphviz/piping.py:161: in _pipe_future
return self._pipe_lines(*args, input_encoding=self.encoding, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
temp_env/lib/python3.12/site-packages/graphviz/backend/piping.py:161: in pipe_lines
proc = execute.run_check(cmd, capture_output=True, quiet=quiet, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cmd = [PosixPath('dot'), '-Kdot', '-Tsvg'], input_lines = . at 0x1245549e0>
encoding = None, quiet = True, kwargs = {'startupinfo': None, 'stderr': -1, 'stdout': -1}
proc = CompletedProcess(args=[PosixPath('dot'), '-Kdot', '-Tsvg'], returncode=-6, stdout=b'', stderr=b'Error: segment [(270.8...t intersect box ll=(265,319),ur=(343,361)\nAssertion failed: (0), function boxIntersectf, file compound.c, line 67.\n')

def run_check(cmd: typing.Sequence[typing.Union[os.PathLike, str]], *,
input_lines: typing.Optional[BytesOrStrIterator] = None,
encoding: typing.Optional[str] = None,
quiet: bool = False,
**kwargs) -> subprocess.CompletedProcess:
"""Run the command described by ``cmd``
with ``check=True`` and return its completed process.

Raises:
CalledProcessError: if the returncode of the subprocess is non-zero.
"""
log.debug('run %r', cmd)
if not kwargs.pop('check', True): # pragma: no cover
raise NotImplementedError('check must be True or omited')

if encoding is not None:
kwargs['encoding'] = encoding

kwargs.setdefault('startupinfo', _compat.get_startupinfo())

try:
if input_lines is not None:
assert kwargs.get('input') is None
assert iter(input_lines) is input_lines
if kwargs.pop('capture_output'):
kwargs['stdout'] = kwargs['stderr'] = subprocess.PIPE
proc = _run_input_lines(cmd, input_lines, kwargs=kwargs)
else:
proc = subprocess.run(cmd, **kwargs)
except OSError as e:
if e.errno == errno.ENOENT:
raise ExecutableNotFound(cmd) from e
raise

if not quiet and proc.stderr:
_write_stderr(proc.stderr)

try:
proc.check_returncode()
except subprocess.CalledProcessError as e:
> raise CalledProcessError(*e.args)
E graphviz.backend.execute.CalledProcessError: Command '[PosixPath('dot'), '-Kdot', '-Tsvg']' died with . [stderr: b'Error: segment [(270.89, 357.85),(265.24,361.05)] does not intersect box ll=(265,319),ur=(343,361)\nAssertion failed: (0), function boxIntersectf, file compound.c, line 67.\n']

temp_env/lib/python3.12/site-packages/graphviz/backend/execute.py:90: CalledProcessError
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with environment.yml and reproduce the failure from tests/test_ch04_1.py. Trace the SVG conversion through utils/report.py, then inspect the graphviz dot invocation and its reported assertion failure. Done means identifying the graphviz breakage and updating the environment or related setup so the test completes without the SIGABRT.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.