mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
bpo-34977: Add Windows App Store package (GH-10245)
This commit is contained in:
parent
c9566b8c45
commit
468a15aaf9
52 changed files with 3082 additions and 331 deletions
122
PC/layout/support/options.py
Normal file
122
PC/layout/support/options.py
Normal file
|
@ -0,0 +1,122 @@
|
|||
"""
|
||||
List of optional components.
|
||||
"""
|
||||
|
||||
__author__ = "Steve Dower <steve.dower@python.org>"
|
||||
__version__ = "3.8"
|
||||
|
||||
|
||||
__all__ = []
|
||||
|
||||
|
||||
def public(f):
|
||||
__all__.append(f.__name__)
|
||||
return f
|
||||
|
||||
|
||||
OPTIONS = {
|
||||
"stable": {"help": "stable ABI stub"},
|
||||
"pip": {"help": "pip"},
|
||||
"distutils": {"help": "distutils"},
|
||||
"tcltk": {"help": "Tcl, Tk and tkinter"},
|
||||
"idle": {"help": "Idle"},
|
||||
"tests": {"help": "test suite"},
|
||||
"tools": {"help": "tools"},
|
||||
"venv": {"help": "venv"},
|
||||
"dev": {"help": "headers and libs"},
|
||||
"symbols": {"help": "symbols"},
|
||||
"bdist-wininst": {"help": "bdist_wininst support"},
|
||||
"underpth": {"help": "a python._pth file", "not-in-all": True},
|
||||
"launchers": {"help": "specific launchers"},
|
||||
"appxmanifest": {"help": "an appxmanifest"},
|
||||
"props": {"help": "a python.props file"},
|
||||
"chm": {"help": "the CHM documentation"},
|
||||
"html-doc": {"help": "the HTML documentation"},
|
||||
}
|
||||
|
||||
|
||||
PRESETS = {
|
||||
"appx": {
|
||||
"help": "APPX package",
|
||||
"options": [
|
||||
"stable",
|
||||
"pip",
|
||||
"distutils",
|
||||
"tcltk",
|
||||
"idle",
|
||||
"venv",
|
||||
"dev",
|
||||
"launchers",
|
||||
"appxmanifest",
|
||||
# XXX: Disabled for now "precompile",
|
||||
],
|
||||
},
|
||||
"nuget": {
|
||||
"help": "nuget package",
|
||||
"options": ["stable", "pip", "distutils", "dev", "props"],
|
||||
},
|
||||
"default": {
|
||||
"help": "development kit package",
|
||||
"options": [
|
||||
"stable",
|
||||
"pip",
|
||||
"distutils",
|
||||
"tcltk",
|
||||
"idle",
|
||||
"tests",
|
||||
"tools",
|
||||
"venv",
|
||||
"dev",
|
||||
"symbols",
|
||||
"bdist-wininst",
|
||||
"chm",
|
||||
],
|
||||
},
|
||||
"embed": {
|
||||
"help": "embeddable package",
|
||||
"options": ["stable", "zip-lib", "flat-dlls", "underpth", "precompile"],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@public
|
||||
def get_argparse_options():
|
||||
for opt, info in OPTIONS.items():
|
||||
help = "When specified, includes {}".format(info["help"])
|
||||
if info.get("not-in-all"):
|
||||
help = "{}. Not affected by --include-all".format(help)
|
||||
|
||||
yield "--include-{}".format(opt), help
|
||||
|
||||
for opt, info in PRESETS.items():
|
||||
help = "When specified, includes default options for {}".format(info["help"])
|
||||
yield "--preset-{}".format(opt), help
|
||||
|
||||
|
||||
def ns_get(ns, key, default=False):
|
||||
return getattr(ns, key.replace("-", "_"), default)
|
||||
|
||||
|
||||
def ns_set(ns, key, value=True):
|
||||
k1 = key.replace("-", "_")
|
||||
k2 = "include_{}".format(k1)
|
||||
if hasattr(ns, k2):
|
||||
setattr(ns, k2, value)
|
||||
elif hasattr(ns, k1):
|
||||
setattr(ns, k1, value)
|
||||
else:
|
||||
raise AttributeError("no argument named '{}'".format(k1))
|
||||
|
||||
|
||||
@public
|
||||
def update_presets(ns):
|
||||
for preset, info in PRESETS.items():
|
||||
if ns_get(ns, "preset-{}".format(preset)):
|
||||
for opt in info["options"]:
|
||||
ns_set(ns, opt)
|
||||
|
||||
if ns.include_all:
|
||||
for opt in OPTIONS:
|
||||
if OPTIONS[opt].get("not-in-all"):
|
||||
continue
|
||||
ns_set(ns, opt)
|
Loading…
Add table
Add a link
Reference in a new issue