From b01323a2cada0b2fd8bf56665a4eef71b3a5845e Mon Sep 17 00:00:00 2001 From: Yannick DAYER <yannick.dayer@idiap.ch> Date: Sun, 5 Feb 2023 05:10:51 +0100 Subject: [PATCH] [py] fix issues with listing protocol paths in tar --- .../pipelines/dataset/protocols/retrieve.py | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/bob/pipelines/dataset/protocols/retrieve.py b/src/bob/pipelines/dataset/protocols/retrieve.py index 9246b3e..8bab0d1 100644 --- a/src/bob/pipelines/dataset/protocols/retrieve.py +++ b/src/bob/pipelines/dataset/protocols/retrieve.py @@ -113,27 +113,32 @@ def list_protocol_paths( database_name: str, base_dir: Union[PathLike[str], str, None] = None, subdir: Union[PathLike[str], str] = "protocol", - database_filename: Optional[str] = None, + database_filename: Union[str, None] = None, ) -> list[Path]: """Returns the paths of each protocol in a database definition file.""" if base_dir is None: base_dir = _get_local_data_directory() final_dir = Path(base_dir) / subdir - if database_filename is None: - final_dir /= database_name - else: - final_dir /= database_filename + final_dir /= ( + database_name if database_filename is None else database_filename + ) if archive.is_archive(final_dir): protocols = archive.list_dirs(final_dir, show_files=False) - archive_path, inner_dir = archive.path_and_subdir(final_dir) - if len(protocols) == 1 and protocols[0] == database_name: + if len(protocols) == 1 and protocols[0].name == database_name: protocols = archive.list_dirs( final_dir, database_name, show_files=False ) - inner_dir /= database_name + + archive_path, inner_dir = archive.path_and_subdir(final_dir) + if inner_dir is None: + return [ + Path(f"{archive_path.as_posix()}:{p.as_posix().lstrip('/')}") + for p in protocols + ] + return [ - Path(f"{archive_path.as_posix()}:{inner_dir.as_posix}/{p}") + Path(f"{archive_path.as_posix()}:{inner_dir.as_posix()}/{p.name}") for p in protocols ] -- GitLab