I believe I fixed this upstream some time ago:
https://github.com/dkriegner/xrayutilities/commit/8da8fd0fda2a54a23d5e65b6d043f6f808cb06ff
Likely you can patch that in debian easily.

On Tue, Jul 2, 2024 at 12:39 PM Drew Parsons <dpars...@debian.org> wrote:

> Source: xrayutilities
> Version: 1.7.4-1
> Severity: normal
>
> xrayutilities is failing tests with matplotlib 3.8 from experimental
>
> 470s _________________ TestExampleScripts.test_simpack_powdermodel
> __________________
> 470s
> 470s self = <test_examples.TestExampleScripts
> testMethod=test_simpack_powdermodel>
> 470s
> 470s     def test(self):
> 470s         with tempfile.TemporaryFile(mode='w') as fid:
> 470s             env = os.environ.copy()
> 470s             env['MPLBACKEND'] = 'agg'
> 470s             cmd = [sys.executable, scriptname]
> 470s >           subprocess.run(cmd, env=env, cwd=scriptdir, stdout=fid,
> 470s                            check=True)
> 470s
> 470s tests/test_examples.py:78:
> 470s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _ _ _ _ _
> 470s
> 470s input = None, capture_output = False, timeout = None, check = True
> 470s popenargs = (['/usr/bin/python3.11', 'simpack_powdermodel.py'],)
> 470s kwargs = {'cwd':
> '/tmp/autopkgtest-lxc.jsvdm1mu/downtmp/autopkgtest_tmp/tests/../examples',
> 'env': {'ADTTMP':
> '/tmp/autopkgtest...topkgtest-lxc.jsvdm1mu/downtmp/autopkgtest_tmp', ...},
> 'stdout': <_io.TextIOWrapper name=12 mode='w' encoding='UTF-8'>}
> 470s process = <Popen: returncode: 1 args: ['/usr/bin/python3.11',
> 'simpack_powdermodel.py']>
> 470s stdout = None, stderr = None, retcode = 1
> 470s
> 470s     def run(*popenargs,
> 470s             input=None, capture_output=False, timeout=None,
> check=False, **kwargs):
> 470s         """Run command with arguments and return a CompletedProcess
> instance.
> 470s
> 470s         The returned instance will have attributes args, returncode,
> stdout and
> 470s         stderr. By default, stdout and stderr are not captured, and
> those attributes
> 470s         will be None. Pass stdout=PIPE and/or stderr=PIPE in order to
> capture them,
> 470s         or pass capture_output=True to capture both.
> 470s
> 470s         If check is True and the exit code was non-zero, it raises a
> 470s         CalledProcessError. The CalledProcessError object will have
> the return code
> 470s         in the returncode attribute, and output & stderr attributes
> if those streams
> 470s         were captured.
> 470s
> 470s         If timeout is given, and the process takes too long, a
> TimeoutExpired
> 470s         exception will be raised.
> 470s
> 470s         There is an optional argument "input", allowing you to
> 470s         pass bytes or a string to the subprocess's stdin.  If you use
> this argument
> 470s         you may not also use the Popen constructor's "stdin"
> argument, as
> 470s         it will be used internally.
> 470s
> 470s         By default, all communication is in bytes, and therefore any
> "input" should
> 470s         be bytes, and the stdout and stderr will be bytes. If in text
> mode, any
> 470s         "input" should be a string, and stdout and stderr will be
> strings decoded
> 470s         according to locale encoding, or by "encoding" if set. Text
> mode is
> 470s         triggered by setting any of text, encoding, errors or
> universal_newlines.
> 470s
> 470s         The other arguments are the same as for the Popen constructor.
> 470s         """
> 470s         if input is not None:
> 470s             if kwargs.get('stdin') is not None:
> 470s                 raise ValueError('stdin and input arguments may not
> both be used.')
> 470s             kwargs['stdin'] = PIPE
> 470s
> 470s         if capture_output:
> 470s             if kwargs.get('stdout') is not None or
> kwargs.get('stderr') is not None:
> 470s                 raise ValueError('stdout and stderr arguments may not
> be used '
> 470s                                  'with capture_output.')
> 470s             kwargs['stdout'] = PIPE
> 470s             kwargs['stderr'] = PIPE
> 470s
> 470s         with Popen(*popenargs, **kwargs) as process:
> 470s             try:
> 470s                 stdout, stderr = process.communicate(input,
> timeout=timeout)
> 470s             except TimeoutExpired as exc:
> 470s                 process.kill()
> 470s                 if _mswindows:
> 470s                     # Windows accumulates the output in a single
> blocking
> 470s                     # read() call run on child threads, with the
> timeout
> 470s                     # being done in a join() on those threads.
> communicate()
> 470s                     # _after_ kill() is required to collect that and
> add it
> 470s                     # to the exception.
> 470s                     exc.stdout, exc.stderr = process.communicate()
> 470s                 else:
> 470s                     # POSIX _communicate already populated the output
> so
> 470s                     # far into the TimeoutExpired exception.
> 470s                     process.wait()
> 470s                 raise
> 470s             except:  # Including KeyboardInterrupt, communicate
> handled that.
> 470s                 process.kill()
> 470s                 # We don't call process.wait() as .__exit__ does that
> for us.
> 470s                 raise
> 470s             retcode = process.poll()
> 470s             if check and retcode:
> 470s >               raise CalledProcessError(retcode, process.args,
> 470s                                          output=stdout, stderr=stderr)
> 470s E               subprocess.CalledProcessError: Command
> '['/usr/bin/python3.11', 'simpack_powdermodel.py']' returned non-zero exit
> status 1.
> 470s
> 470s /usr/lib/python3.11/subprocess.py:571: CalledProcessError
> 470s ----------------------------- Captured stderr call
> -----------------------------
> 470s Traceback (most recent call last):
> 470s   File
> "/tmp/autopkgtest-lxc.jsvdm1mu/downtmp/autopkgtest_tmp/examples/simpack_powdermodel.py",
> line 137, in <module>
> 470s     main()
> 470s   File
> "/tmp/autopkgtest-lxc.jsvdm1mu/downtmp/autopkgtest_tmp/examples/simpack_powdermodel.py",
> line 128, in main
> 470s     xu.simpack.plot_powder(tt, det, pm, scale='sqrt', mask=mask)
> 470s   File
> "/usr/lib/python3/dist-packages/xrayutilities/simpack/powdermodel.py", line
> 584, in plot_powder
> 470s     sim.plot(twotheta[mask], label=labelsim, formatspec=formatsim,
> ax=ax)
> 470s   File
> "/usr/lib/python3/dist-packages/xrayutilities/simpack/powdermodel.py", line
> 420, in plot
> 470s     tax.figure.texts.append(tax.texts.pop())
> 470s                             ^^^^^^^^^^^^^
> 470s AttributeError: 'ArtistList' object has no attribute 'pop'
>
>

Reply via email to