mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 05:01:30 +00:00 
			
		
		
		
	
		
			
	
	
		
			45 lines
		
	
	
	
		
			834 B
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
	
		
			834 B
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | """
 | ||
|  | File generation for catalog signing non-binary contents. | ||
|  | """
 | ||
|  | 
 | ||
|  | __author__ = "Steve Dower <steve.dower@python.org>" | ||
|  | __version__ = "3.8" | ||
|  | 
 | ||
|  | 
 | ||
|  | import sys | ||
|  | 
 | ||
|  | __all__ = ["PYTHON_CAT_NAME", "PYTHON_CDF_NAME"] | ||
|  | 
 | ||
|  | 
 | ||
|  | def public(f): | ||
|  |     __all__.append(f.__name__) | ||
|  |     return f | ||
|  | 
 | ||
|  | 
 | ||
|  | PYTHON_CAT_NAME = "python.cat" | ||
|  | PYTHON_CDF_NAME = "python.cdf" | ||
|  | 
 | ||
|  | 
 | ||
|  | CATALOG_TEMPLATE = r"""[CatalogHeader]
 | ||
|  | Name={target.stem}.cat | ||
|  | ResultDir={target.parent} | ||
|  | PublicVersion=1 | ||
|  | CatalogVersion=2 | ||
|  | HashAlgorithms=SHA256 | ||
|  | PageHashes=false | ||
|  | EncodingType= | ||
|  | 
 | ||
|  | [CatalogFiles] | ||
|  | """
 | ||
|  | 
 | ||
|  | 
 | ||
|  | def can_sign(file): | ||
|  |     return file.is_file() and file.stat().st_size | ||
|  | 
 | ||
|  | 
 | ||
|  | @public | ||
|  | def write_catalog(target, files): | ||
|  |     with target.open("w", encoding="utf-8") as cat: | ||
|  |         cat.write(CATALOG_TEMPLATE.format(target=target)) | ||
|  |         cat.writelines("<HASH>{}={}\n".format(n, f) for n, f in files if can_sign(f)) |