Source code for norfs.copy.local
import os
import shutil
from typing import Any
from norfs.copy.base import (
GenericCopyStrategy,
CopyFile,
)
from norfs.fs.base import Path
[docs]class LocalToLocalCopyStrategy(GenericCopyStrategy):
[docs] def copy_file_to_file(self, src: CopyFile, dst: CopyFile) -> None:
parent_dir: Path = dst.path.parent
if not dst.fs.path_exists(parent_dir):
os.makedirs(dst.fs.path_to_string(parent_dir))
shutil.copyfile(src.fs.path_to_string(src.path), dst.fs.path_to_string(dst.path))
[docs]class LocalToS3CopyStrategy(GenericCopyStrategy):
def __init__(self, s3_client: Any) -> None:
self._s3_client = s3_client
[docs] def copy_file_to_file(self, src: CopyFile, dst: CopyFile) -> None:
dst_path_str: str = dst.fs.path_to_string(dst.path)
dst_tail: str = dst_path_str[dst_path_str.find("/") + 1:]
self._s3_client.upload_file(src.fs.path_to_string(src.path), dst.path.drive, dst_tail)