aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/platform.py
diff options
context:
space:
mode:
authorHarry <harry.lees@gmail.com>2025-05-03 09:58:59 +0100
committerGitHub <noreply@github.com>2025-05-03 08:58:59 +0000
commit77c391a1b178a35b0157e00689acb3904b77694d (patch)
tree4a864f33a59b771073c85756e1cc2cf93903f84a /Lib/platform.py
parentac56f8cc8d36ed65228d7eaa245569f66ad16d2b (diff)
downloadcpython-77c391a1b178a35b0157e00689acb3904b77694d.tar.gz
cpython-77c391a1b178a35b0157e00689acb3904b77694d.zip
gh-131524: Update platform CLI to use argparse (#131542)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Diffstat (limited to 'Lib/platform.py')
-rw-r--r--Lib/platform.py42
1 files changed, 37 insertions, 5 deletions
diff --git a/Lib/platform.py b/Lib/platform.py
index a62192589af..507552f360b 100644
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -1464,9 +1464,41 @@ def invalidate_caches():
### Command line interface
-if __name__ == '__main__':
- # Default is to print the aliased verbose platform string
- terse = ('terse' in sys.argv or '--terse' in sys.argv)
- aliased = (not 'nonaliased' in sys.argv and not '--nonaliased' in sys.argv)
+def _parse_args(args: list[str] | None):
+ import argparse
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument("args", nargs="*", choices=["nonaliased", "terse"])
+ parser.add_argument(
+ "--terse",
+ action="store_true",
+ help=(
+ "return only the absolute minimum information needed "
+ "to identify the platform"
+ ),
+ )
+ parser.add_argument(
+ "--nonaliased",
+ dest="aliased",
+ action="store_false",
+ help=(
+ "disable system/OS name aliasing. If aliasing is enabled, "
+ "some platforms report system names different from "
+ "their common names, e.g. SunOS is reported as Solaris"
+ ),
+ )
+
+ return parser.parse_args(args)
+
+
+def _main(args: list[str] | None = None):
+ args = _parse_args(args)
+
+ terse = args.terse or ("terse" in args.args)
+ aliased = args.aliased and ('nonaliased' not in args.args)
+
print(platform(aliased, terse))
- sys.exit(0)
+
+
+if __name__ == "__main__":
+ _main()