(root)/
Python-3.11.7/
PC/
layout/
support/
catalog.py
       1  """
       2  File generation for catalog signing non-binary contents.
       3  """
       4  
       5  __author__ = "Steve Dower <steve.dower@python.org>"
       6  __version__ = "3.8"
       7  
       8  
       9  import sys
      10  
      11  __all__ = ["PYTHON_CAT_NAME", "PYTHON_CDF_NAME"]
      12  
      13  
      14  def public(f):
      15      __all__.append(f.__name__)
      16      return f
      17  
      18  
      19  PYTHON_CAT_NAME = "python.cat"
      20  PYTHON_CDF_NAME = "python.cdf"
      21  
      22  
      23  CATALOG_TEMPLATE = r"""[CatalogHeader]
      24  Name={target.stem}.cat
      25  ResultDir={target.parent}
      26  PublicVersion=1
      27  CatalogVersion=2
      28  HashAlgorithms=SHA256
      29  PageHashes=false
      30  EncodingType=
      31  
      32  [CatalogFiles]
      33  """
      34  
      35  
      36  def can_sign(file):
      37      return file.is_file() and file.stat().st_size
      38  
      39  
      40  @public
      41  def write_catalog(target, files):
      42      with target.open("w", encoding="utf-8") as cat:
      43          cat.write(CATALOG_TEMPLATE.format(target=target))
      44          cat.writelines("<HASH>{}={}\n".format(n, f) for n, f in files if can_sign(f))