From b085c7345d4c90dd4c57792a0bd5db84ce10e589 Mon Sep 17 00:00:00 2001 From: NielsRogge <48327001+NielsRogge@users.noreply.github.com> Date: Wed, 31 May 2023 21:31:28 +0200 Subject: [PATCH] [PushToHub] Make it possible to upload folders (#23920) Add first draft --- src/transformers/utils/hub.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/transformers/utils/hub.py b/src/transformers/utils/hub.py index 335547f2b8259c..c8611c492341ad 100644 --- a/src/transformers/utils/hub.py +++ b/src/transformers/utils/hub.py @@ -701,9 +701,31 @@ def _upload_modified_files( for f in os.listdir(working_dir) if f not in files_timestamps or os.path.getmtime(os.path.join(working_dir, f)) > files_timestamps[f] ] + + # filter for actual files + folders at the root level + modified_files = [ + f + for f in modified_files + if os.path.isfile(os.path.join(working_dir, f)) or os.path.isdir(os.path.join(working_dir, f)) + ] + operations = [] + # upload standalone files for file in modified_files: operations.append(CommitOperationAdd(path_or_fileobj=os.path.join(working_dir, file), path_in_repo=file)) + if os.path.isdir(os.path.join(working_dir, file)): + # go over individual files of folder + for f in os.listdir(os.path.join(working_dir, file)): + operations.append( + CommitOperationAdd( + path_or_fileobj=os.path.join(working_dir, file, f), path_in_repo=os.path.join(file, f) + ) + ) + else: + operations.append( + CommitOperationAdd(path_or_fileobj=os.path.join(working_dir, file), path_in_repo=file) + ) + logger.info(f"Uploading the following files to {repo_id}: {','.join(modified_files)}") return create_commit( repo_id=repo_id, operations=operations, commit_message=commit_message, token=token, create_pr=create_pr