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