| 
					
				 | 
			
			
				@@ -10,10 +10,8 @@ import time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..archive import Archive, TarfileObjectProcessors, ChunksProcessor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..compress import CompressionSpec 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..constants import *  # NOQA 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from ..helpers import Manifest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import HardLinkManager 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import ProgressIndicatorPercent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from ..helpers import get_tar_filter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import dash_open 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import msgpack 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import create_filter_process 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -24,6 +22,7 @@ from ..helpers import remove_surrogates 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import timestamp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import basic_json_data, json_print 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import log_multi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from ..manifest import Manifest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .common import with_repository, with_archive, Highlander, define_exclusion_group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .common import build_matcher, build_filter 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -33,6 +32,24 @@ from ..logger import create_logger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 logger = create_logger(__name__) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def get_tar_filter(fname, decompress): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # Note that filter is None if fname is '-'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if fname.endswith((".tar.gz", ".tgz")): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter = "gzip -d" if decompress else "gzip" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif fname.endswith((".tar.bz2", ".tbz")): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter = "bzip2 -d" if decompress else "bzip2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif fname.endswith((".tar.xz", ".txz")): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter = "xz -d" if decompress else "xz" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif fname.endswith((".tar.lz4",)): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter = "lz4 -d" if decompress else "lz4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    elif fname.endswith((".tar.zstd",)): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter = "zstd -d" if decompress else "zstd" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    logger.debug("Automatically determined tar filter: %s", filter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return filter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class TarMixIn: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @with_repository(compatibility=(Manifest.Operation.READ,)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @with_archive 
			 |