mirror of
				https://github.com/devine-dl/devine.git
				synced 2025-11-04 03:44:49 +00:00 
			
		
		
		
	refactor(Track): Return new path on move(), raise exceptions on errors
This commit is contained in:
		
							parent
							
								
									3ceabd0c74
								
							
						
					
					
						commit
						866de402fb
					
				@ -307,33 +307,36 @@ class Track:
 | 
			
		||||
 | 
			
		||||
        self.path = output_path
 | 
			
		||||
 | 
			
		||||
    def move(self, target: Union[Path, str]) -> bool:
 | 
			
		||||
    def move(self, target: Union[Path, str]) -> Path:
 | 
			
		||||
        """
 | 
			
		||||
        Move the Track's file from current location, to target location.
 | 
			
		||||
        This will overwrite anything at the target path.
 | 
			
		||||
 | 
			
		||||
        Raises:
 | 
			
		||||
            TypeError: If the target argument is not the expected type.
 | 
			
		||||
            ValueError: If track has no file to move, or the target does not exist.
 | 
			
		||||
            OSError: If the file somehow failed to move.
 | 
			
		||||
 | 
			
		||||
        Returns True if the move succeeded, or False if there was no file to move, or
 | 
			
		||||
        the file failed to move.
 | 
			
		||||
        Returns the new location of the track.
 | 
			
		||||
        """
 | 
			
		||||
        if not isinstance(target, (str, Path)):
 | 
			
		||||
            raise TypeError(f"Expected {target} to be a {Path} or {str}, not {type(target)}")
 | 
			
		||||
 | 
			
		||||
        if not self.path:
 | 
			
		||||
            return False
 | 
			
		||||
            raise ValueError("Track has no file to move")
 | 
			
		||||
 | 
			
		||||
        if not isinstance(target, Path):
 | 
			
		||||
            target = Path(target)
 | 
			
		||||
 | 
			
		||||
        if not target.exists():
 | 
			
		||||
            raise ValueError(f"Target file {repr(target)} does not exist")
 | 
			
		||||
 | 
			
		||||
        moved_to = Path(shutil.move(self.path, target))
 | 
			
		||||
        success = moved_to.resolve() == target.resolve()
 | 
			
		||||
        if moved_to.resolve() != target.resolve():
 | 
			
		||||
            raise OSError(f"Failed to move {self.path} to {target}")
 | 
			
		||||
 | 
			
		||||
        if success:
 | 
			
		||||
            self.path = target
 | 
			
		||||
 | 
			
		||||
        return success
 | 
			
		||||
        self.path = target
 | 
			
		||||
        return target
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__all__ = ("Track",)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user