[Debian-med-packaging] Bug#1042334: heudiconv: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 returned exit code 13
Lucas Nussbaum
lucas at debian.org
Wed Jul 26 21:06:34 BST 2023
Source: heudiconv
Version: 0.11.6-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20230726 ftbfs-trixie
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> debian/rules binary
> dh binary --with python3 --buildsystem=pybuild
> dh_update_autotools_config -O--buildsystem=pybuild
> dh_autoreconf -O--buildsystem=pybuild
> dh_auto_configure -O--buildsystem=pybuild
> pybuild --configure -i python{version} -p 3.11
> I: pybuild base:240: python3.11 setup.py config
> running config
> dh_auto_build -O--buildsystem=pybuild
> pybuild --build -i python{version} -p 3.11
> I: pybuild base:240: /usr/bin/python3 setup.py build
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/_version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/dicoms.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/due.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/queue.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/convert.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/info.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/parser.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/main.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> copying heudiconv/bids.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/banda-bids.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/bids_with_ses.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/bids_PhoenixReport.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/reproin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/convertall.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/bids_ME.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/studyforrest_phase2.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/test_b0dwi_for_fmap.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/multires_7Tbold.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/test_reproin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/example.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/cmrr_heuristic.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> copying heudiconv/heuristics/uc_bids.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/heuristics
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_dicoms.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/anonymize_script.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_monitor.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_bids.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_main.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_queue.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_regression.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_heuristics.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_convert.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_utils.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> copying heudiconv/tests/test_tarballs.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/external
> copying heudiconv/external/dlad.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/external
> copying heudiconv/external/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/external
> copying heudiconv/external/pydicom.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/external
> copying heudiconv/external/dcmstack.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/external
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/cli
> copying heudiconv/cli/run.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/cli
> copying heudiconv/cli/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/cli
> copying heudiconv/cli/monitor.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/cli
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/external/tests
> copying heudiconv/external/tests/test_dlad.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/external/tests
> copying heudiconv/external/tests/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/external/tests
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data
> copying heudiconv/tests/data/axasc35.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data
> copying heudiconv/tests/data/phantom.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/01-fmap_acq-3mm
> copying heudiconv/tests/data/01-fmap_acq-3mm/1.3.12.2.1107.5.2.43.66112.2016101409263663466202201.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/01-fmap_acq-3mm
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/b0dwiForFmap
> copying heudiconv/tests/data/b0dwiForFmap/b0dwi_for_fmap+00002.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/b0dwiForFmap
> copying heudiconv/tests/data/b0dwiForFmap/b0dwi_for_fmap+00003.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/b0dwiForFmap
> copying heudiconv/tests/data/b0dwiForFmap/b0dwi_for_fmap+00001.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/b0dwiForFmap
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/01-anat-scout
> copying heudiconv/tests/data/01-anat-scout/0001.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/01-anat-scout
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/Phoenix
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/Phoenix/01+AA
> copying heudiconv/tests/data/Phoenix/01+AA/01+AA+00001.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/Phoenix/01+AA
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/Phoenix/99+PhoenixDocument
> copying heudiconv/tests/data/Phoenix/99+PhoenixDocument/99+PhoenixDocument+00001.dcm -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data/Phoenix/99+PhoenixDocument
> copying heudiconv/tests/data/sample_nifti_params.txt -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data
> copying heudiconv/tests/data/sample_nifti.nii.gz -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/data
> dh_auto_test -O--buildsystem=pybuild
> pybuild --test --test-pytest -i python{version} -p 3.11
> I: pybuild pybuild:307: cp -a heudiconv/tests /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/
> I: pybuild base:240: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build; python3.11 -m pytest
> ============================= test session starts ==============================
> platform linux -- Python 3.11.4, pytest-7.4.0, pluggy-1.2.0
> rootdir: /<<PKGBUILDDIR>>
> collected 99 items / 1 skipped
>
> heudiconv/external/tests/test_dlad.py . [ 1%]
> heudiconv/heuristics/test_reproin.py ........ [ 9%]
> heudiconv/tests/test_bids.py ..................................s [ 44%]
> heudiconv/tests/test_convert.py .......... [ 54%]
> heudiconv/tests/test_dicoms.py ... [ 57%]
> heudiconv/tests/test_heuristics.py ........... [ 68%]
> heudiconv/tests/test_main.py .....F........ [ 82%]
> heudiconv/tests/test_queue.py ... [ 85%]
> heudiconv/tests/test_regression.py sss. [ 89%]
> heudiconv/tests/test_tarballs.py . [ 90%]
> heudiconv/tests/test_utils.py ......... [100%]
>
> =================================== FAILURES ===================================
> ___________________________ test_prepare_for_datalad ___________________________
>
> tmpdir = local('/tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0')
>
> def test_prepare_for_datalad(tmpdir):
> pytest.importorskip("datalad", minversion=MIN_VERSION)
> studydir = tmpdir.join("PI").join("study")
> studydir_ = str(studydir)
> os.makedirs(studydir_)
> populate_bids_templates(studydir_)
>
> add_to_datalad(str(tmpdir), studydir_, None, False)
>
> from datalad.api import Dataset
> superds = Dataset(str(tmpdir))
>
> assert superds.is_installed()
> assert not superds.repo.dirty
> subdss = superds.subdatasets(recursive=True, result_xfm='relpaths')
> for ds_path in sorted(subdss):
> ds = Dataset(opj(superds.path, ds_path))
> assert ds.is_installed()
> assert not ds.repo.dirty
>
> # the last one should have been the study
> target_files = {
> '.gitattributes',
> '.datalad/config', '.datalad/.gitattributes',
> 'dataset_description.json',
> 'scans.json',
> 'CHANGES', 'README'}
> assert set(ds.repo.get_indexed_files()) == target_files
> # and all are under git
> for f in target_files:
> > assert not ds.repo.is_under_annex(f)
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_main.py:142:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> /usr/lib/python3/dist-packages/datalad/support/gitrepo.py:322: in _wrap_normalize_paths
> result = func(self, files_new, *args, **kwargs)
> /usr/lib/python3/dist-packages/datalad/support/annexrepo.py:1991: in is_under_annex
> return self._check_files(check, files, batch)
> /usr/lib/python3/dist-packages/datalad/support/annexrepo.py:1936: in _check_files
> annex_res = fn(files, normalize_paths=False, batch=batch)
> /usr/lib/python3/dist-packages/datalad/support/annexrepo.py:1988: in check
> return self.info([f for f in files if not isdir(f)],
> /usr/lib/python3/dist-packages/datalad/support/gitrepo.py:322: in _wrap_normalize_paths
> result = func(self, files_new, *args, **kwargs)
> /usr/lib/python3/dist-packages/datalad/support/annexrepo.py:2502: in info
> json_objects = self._call_annex_records(
> /usr/lib/python3/dist-packages/datalad/support/annexrepo.py:1077: in _call_annex_records
> raise e
> /usr/lib/python3/dist-packages/datalad/support/annexrepo.py:1041: in _call_annex_records
> out = self._call_annex(
> /usr/lib/python3/dist-packages/datalad/support/annexrepo.py:937: in _call_annex
> return runner.run_on_filelist_chunks(
> /usr/lib/python3/dist-packages/datalad/runner/gitrunner.py:256: in run_on_filelist_chunks
> for res in self._get_chunked_results(cmd=cmd,
> /usr/lib/python3/dist-packages/datalad/runner/gitrunner.py:184: in _get_chunked_results
> yield self.run(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <datalad.runner.gitrunner.GitWitlessRunner object at 0x7fb8072c5f90>
> cmd = ['git', '-c', 'diff.ignoreSubmodules=none', '-c', 'annex.merge-annex-branches=false', 'annex', ...]
> protocol = <class 'datalad.support.annexrepo.AnnexJsonProtocol'>, stdin = None
> cwd = None
> env = {'APT_CONFIG': '/var/lib/sbuild/apt.conf', 'ASFLAGS': '', 'CCACHE_DIR': '/<<PKGBUILDDIR>>/.pyb...-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security', ...}
> timeout = None, exception_on_error = True, kwargs = {}
> applied_cwd = PosixPath('/tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0/PI/study')
> applied_env = {'APT_CONFIG': '/var/lib/sbuild/apt.conf', 'ASFLAGS': '', 'CCACHE_DIR': '/<<PKGBUILDDIR>>/.pyb...-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security', ...}
> threaded_runner = <datalad.runner.nonasyncrunner.ThreadedRunner object at 0x7fb807239ad0>
> results_or_iterator = {'code': 1, 'stderr': 'fatal: Not a valid object name ./CHANGES\ninfo: 1 failed\n', 'stdout': '', 'stdout_json': [{'command': 'info', 'error-messages': [], 'file': './CHANGES', 'input': ['./CHANGES'], ...}]}
> results = {'code': 1, 'stderr': 'fatal: Not a valid object name ./CHANGES\ninfo: 1 failed\n', 'stdout': '', 'stdout_json': [{'command': 'info', 'error-messages': [], 'file': './CHANGES', 'input': ['./CHANGES'], ...}]}
>
> def run(self,
> cmd: list | str,
> protocol: type[WitlessProtocol] | None = None,
> stdin: bytes | IO | Queue | None = None,
> cwd: PathLike | str | None = None,
> env: dict | None = None,
> timeout: float | None = None,
> exception_on_error: bool = True,
> **kwargs) -> dict | _ResultGenerator:
> """Execute a command and communicate with it.
>
> Parameters
> ----------
> cmd : list or str
> Sequence of program arguments. Passing a single string causes
> execution via the platform shell.
> protocol : WitlessProtocol, optional
> Protocol class handling interaction with the running process
> (e.g. output capture). A number of pre-crafted classes are
> provided (e.g `KillOutput`, `NoCapture`, `GitProgress`).
> If the protocol has the GeneratorMixIn-mixin, the run-method
> will return an iterator and can therefore be used in a for-clause.
> stdin : file-like, bytes, Queue, or None
> If stdin is a file-like, it will be directly used as stdin for the
> subprocess. The caller is responsible for writing to it and closing it.
> If stdin is a bytes, it will be fed to stdin of the subprocess.
> If all data is written, stdin will be closed.
> If stdin is a Queue, all elements (bytes) put into the Queue will
> be passed to stdin until None is read from the queue. If None is read,
> stdin of the subprocess is closed.
> cwd : str or path-like, optional
> If given, commands are executed with this path as PWD,
> the PWD of the parent process is used otherwise. Overrides
> any `cwd` given to the constructor.
> env : dict, optional
> Environment to be used for command execution. If given, it will
> completely replace any environment provided to theconstructor. If
> `cwd` is given, 'PWD' in the environment is set to its value.
> This must be a complete environment definition, no values
> from the current environment will be inherited. Overrides
> any `env` given to the constructor.
> timeout: float, optional
> None or the seconds after which a timeout callback is
> invoked, if no progress was made in communicating with
> the sub-process, or if waiting for the subprocess exit
> took more than the specified time. See the protocol and
> `ThreadedRunner` descriptions for a more detailed discussion
> on timeouts.
> exception_on_error : bool, optional
> This argument is only interpreted if the protocol is a subclass
> of `GeneratorMixIn`. If it is `True` (default), a
> `CommandErrorException` is raised by the generator if the
> sub process exited with a return code not equal to zero. If the
> parameter is `False`, no exception is raised. In both cases the
> return code can be read from the attribute `return_code` of
> the generator.
> kwargs :
> Passed to the Protocol class constructor.
>
> Returns
> -------
> dict | _ResultGenerator
>
> If the protocol is not a subclass of `GeneratorMixIn`, the
> result of protocol._prepare_result will be returned.
>
> If the protocol is a subclass of `GeneratorMixIn`, a Generator, i.e.
> a `_ResultGenerator`, will be returned. This allows to use this
> method in constructs like:
>
> for protocol_output in runner.run():
> ...
>
> Where the iterator yields whatever protocol.pipe_data_received
> sends into the generator.
> If all output was yielded and the process has terminated, the
> generator will raise StopIteration(return_code), where
> return_code is the return code of the process. The return code
> of the process will also be stored in the "return_code"-attribute
> of the runner. So you could write:
>
> gen = runner.run()
> for file_descriptor, data in gen:
> ...
>
> # get the return code of the process
> result = gen.return_code
>
> Raises
> ------
> CommandError
> On execution failure (non-zero exit code) this exception is
> raised which provides the command (cmd), stdout, stderr,
> exit code (status), and a message identifying the failed
> command, as properties.
> FileNotFoundError
> When a given executable does not exist.
> """
> if protocol is None:
> # by default let all subprocess stream pass through
> protocol = NoCapture
>
> applied_cwd = cwd or self.cwd
> applied_env = self._get_adjusted_env(
> env=env or self.env,
> cwd=applied_cwd,
> )
>
> lgr.debug(
> 'Run %r (protocol_class=%s) (cwd=%s)',
> cmd,
> protocol.__name__,
> applied_cwd
> )
>
> threaded_runner = ThreadedRunner(
> cmd=cmd,
> protocol_class=protocol,
> stdin=stdin,
> protocol_kwargs=kwargs,
> timeout=timeout,
> exception_on_error=exception_on_error,
> cwd=applied_cwd,
> env=applied_env
> )
>
> results_or_iterator = threaded_runner.run()
> if issubclass(protocol, GeneratorMixIn):
> return results_or_iterator
>
> results = cast(dict, results_or_iterator)
> # log before any exception is raised
> lgr.debug("Finished %r with status %s", cmd, results['code'])
>
> # make it such that we always blow if a protocol did not report
> # a return code at all
> if results.get('code', True) not in [0, None]:
> # the runner has a better idea, doc string warns Protocol
> # implementations not to return these
> results.pop('cmd', None)
> results.pop('cwd', None)
> > raise CommandError(
> # whatever the results were, we carry them forward
> cmd=cmd,
> cwd=applied_cwd,
> **results,
> )
> E datalad.runner.exception.CommandError: CommandError: 'git -c diff.ignoreSubmodules=none -c annex.merge-annex-branches=false annex info --bytes --fast --json --json-error-messages -c annex.dotfiles=true -- ./CHANGES' failed with exitcode 1 under /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0/PI/study [info keys: stdout_json]
> E > not a directory or an annexed file or a treeish or a remote or a uuid
> E [err: 'fatal: Not a valid object name ./CHANGES
> E info: 1 failed']
>
> /usr/lib/python3/dist-packages/datalad/runner/runner.py:220: CommandError
> ----------------------------- Captured stdout call -----------------------------
> create(ok): /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0 (dataset)
> add(ok): PI (dataset)
> add(ok): .gitmodules (file)
> save(ok): . (dataset)
> create(ok): PI (dataset)
> action summary:
> add (ok: 2)
> create (ok: 1)
> save (ok: 1)
> add(ok): study (dataset)
> add(ok): .gitmodules (file)
> save(ok): . (dataset)
> create(ok): study (dataset)
> action summary:
> add (ok: 2)
> create (ok: 1)
> save (ok: 1)
> add(ok): .gitattributes (file)
> save(ok): . (dataset)
> action summary:
> add (ok: 1)
> save (ok: 1)
> add(ok): CHANGES (file)
> add(ok): README (file)
> add(ok): dataset_description.json (file)
> add(ok): scans.json (file)
> save(ok): . (dataset)
> action summary:
> add (ok: 4)
> save (ok: 1)
> add(ok): study (dataset)
> add(ok): .gitmodules (file)
> save(ok): PI (dataset)
> add(ok): PI (dataset)
> add(ok): .gitmodules (file)
> save(ok): . (dataset)
> action summary:
> add (ok: 4)
> save (notneeded: 1, ok: 2)
> subdataset(ok): PI (dataset)
> subdataset(ok): PI/study (dataset)
> ------------------------------ Captured log call -------------------------------
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: starting
> INFO datalad.core.local.save:log.py:432
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: processed result for /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: done
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: starting
> INFO datalad.core.local.save:log.py:432
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: processed result for /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0/PI
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: done
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: starting
> INFO datalad.core.local.save:log.py:432
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: processed result for /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0/PI/study
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: done
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: starting
> INFO datalad.core.local.save:log.py:432
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: processed result for /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0/PI/study
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: done
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: starting
> INFO datalad.core.local.save:log.py:432
> INFO datalad.core.local.save:log.py:432 Total: processed result for /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0/PI/study
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: processed result for /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0/PI
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: processed result for /tmp/pytest-of-user42/pytest-0/test_prepare_for_datalad0
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad.core.local.save:log.py:432 Total: done
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> INFO datalad:log.py:432 Clear progress bars
> INFO datalad:log.py:432 Refresh progress bars
> =============================== warnings summary ===============================
> ../../../../../../usr/lib/python3/dist-packages/traits/observation/_generated_parser.py:258
> /usr/lib/python3/dist-packages/traits/observation/_generated_parser.py:258: DeprecationWarning: module 'sre_parse' is deprecated
> import sre_parse
>
> ../../../../../../usr/lib/python3/dist-packages/traits/observation/_generated_parser.py:259
> /usr/lib/python3/dist-packages/traits/observation/_generated_parser.py:259: DeprecationWarning: module 'sre_constants' is deprecated
> import sre_constants
>
> heudiconv/bids.py:162
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/bids.py:162: DeprecationWarning: invalid escape sequence '\s'
> """Aggregate across the entire BIDS dataset ``.json``\s into top level ``.json``\s
>
> heudiconv/bids.py:181
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/bids.py:181: DeprecationWarning: invalid escape sequence '\_'
> for fpath in find_files('.*_task-.*\_bold\.json',
>
> heudiconv/bids.py:184
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/bids.py:184: DeprecationWarning: invalid escape sequence '\.'
> exclude="/\.(datalad|heudiconv)/"):
>
> heudiconv/bids.py:190
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/bids.py:190: DeprecationWarning: invalid escape sequence '\.'
> task = re.sub('.*_(task-[^_\.]*(_acq-[^_\.]*)?)_.*', r'\1', fpath)
>
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_convert.py::test_b0dwi_for_fmap
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_heuristics.py::test_phoenix_doc_conversion
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_main.py::test_cache
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build/heudiconv/parser.py:204: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
> lgr.warn("Heuristic is missing an `infotoids` method, assigning "
>
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_convert.py::test_b0dwi_for_fmap
> /usr/lib/python3/dist-packages/etelemetry/client.py:95: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
> from pkg_resources import parse_version
>
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_convert.py::test_b0dwi_for_fmap
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_convert.py::test_b0dwi_for_fmap
> /usr/lib/python3/dist-packages/nipype/utils/filemanip.py:696: DeprecationWarning: Use setlocale(), getencoding() and getlocale() instead
> default_encoding = encoding or locale.getdefaultlocale()[1] or "UTF-8"
>
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_convert.py: 4 warnings
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_dicoms.py: 2 warnings
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_heuristics.py: 22 warnings
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_main.py: 2 warnings
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_regression.py: 4 warnings
> /usr/lib/python3/dist-packages/nipype/utils/subprocess.py:34: DeprecationWarning: Use setlocale(), getencoding() and getlocale() instead
> self.default_encoding = locale.getdefaultlocale()[1] or "UTF-8"
>
> .pybuild/cpython3_3.11_heudiconv/build/heudiconv/tests/test_convert.py::test_b0dwi_for_fmap
> /usr/lib/python3/dist-packages/pydicom/valuerep.py:290: UserWarning: The value length (22) exceeds the maximum length of 16 allowed for VR SH.
> warnings.warn(msg)
>
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info ============================
> FAILED heudiconv/tests/test_main.py::test_prepare_for_datalad - datalad.runne...
> ============ 1 failed, 94 passed, 5 skipped, 47 warnings in 36.35s =============
> E: pybuild pybuild:388: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_heudiconv/build; python3.11 -m pytest
> rm -fr -- /tmp/dh-xdg-rundir-gMzdxhdF
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 returned exit code 13
The full build log is available from:
http://qa-logs.debian.net/2023/07/26/heudiconv_0.11.6-1_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20230726;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20230726&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.
More information about the Debian-med-packaging
mailing list