https://github.com/python/cpython/commit/b062f391cfb407b02041737914b4a1f4fb1da87b
commit: b062f391cfb407b02041737914b4a1f4fb1da87b
branch: main
author: Gregory P. Smith <[email protected]>
committer: gpshead <[email protected]>
date: 2026-03-15T22:02:14Z
summary:
gh-145990: Sort `python --help-xoptions` by option name (GH-145991)
* Sort --help-xoptions alphabetically by name.
* add a sorting regression test in test_help_xoptions
files:
A
Misc/NEWS.d/next/Core_and_Builtins/2026-03-15-20-47-34.gh-issue-145990.14BUzw.rst
M Lib/test/test_cmd_line.py
M Python/initconfig.c
diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
index e106ac20809f20..c1dc59677896a5 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -3,6 +3,7 @@
# See test_cmd_line_script.py for testing of script execution
import os
+import re
import subprocess
import sys
import sysconfig
@@ -64,6 +65,9 @@ def test_help_env(self):
def test_help_xoptions(self):
out = self.verify_valid_flag('--help-xoptions')
self.assertIn(b'-X dev', out)
+ options = re.findall(rb'^-X (\w+)', out, re.MULTILINE)
+ self.assertEqual(options, sorted(options),
+ "options should be sorted alphabetically")
@support.cpython_only
def test_help_all(self):
diff --git
a/Misc/NEWS.d/next/Core_and_Builtins/2026-03-15-20-47-34.gh-issue-145990.14BUzw.rst
b/Misc/NEWS.d/next/Core_and_Builtins/2026-03-15-20-47-34.gh-issue-145990.14BUzw.rst
new file mode 100644
index 00000000000000..f66c156b4bc916
--- /dev/null
+++
b/Misc/NEWS.d/next/Core_and_Builtins/2026-03-15-20-47-34.gh-issue-145990.14BUzw.rst
@@ -0,0 +1 @@
+``python --help-xoptions`` is now sorted by ``-X`` option name.
diff --git a/Python/initconfig.c b/Python/initconfig.c
index 57629ff8c57380..eff37fc32b4947 100644
--- a/Python/initconfig.c
+++ b/Python/initconfig.c
@@ -304,9 +304,15 @@ arg ...: arguments passed to program in sys.argv[1:]\n\
static const char usage_xoptions[] = "\
The following implementation-specific options are available:\n\
+-X context_aware_warnings=[0|1]: if true (1) then the warnings module will\n\
+ use a context variables; if false (0) then the warnings module will\n\
+ use module globals, which is not concurrent-safe; set to true for\n\
+ free-threaded builds and false otherwise; also\n\
+ PYTHON_CONTEXT_AWARE_WARNINGS\n\
-X cpu_count=N: override the return value of os.cpu_count();\n\
-X cpu_count=default cancels overriding; also PYTHON_CPU_COUNT\n\
-X dev : enable Python Development Mode; also PYTHONDEVMODE\n\
+-X disable-remote-debug: disable remote debugging; also
PYTHON_DISABLE_REMOTE_DEBUG\n\
-X faulthandler: dump the Python traceback on fatal errors;\n\
also PYTHONFAULTHANDLER\n\
-X frozen_modules=[on|off]: whether to use frozen modules; the default is
\"on\"\n\
@@ -319,16 +325,18 @@ The following implementation-specific options are
available:\n\
"\
-X importtime[=2]: show how long each import takes; use -X importtime=2 to\n\
log imports of already-loaded modules; also PYTHONPROFILEIMPORTTIME\n\
--X lazy_imports=[all|none|normal]: control global lazy imports;\n\
- default is normal; also PYTHON_LAZY_IMPORTS\n\
-X int_max_str_digits=N: limit the size of int<->str conversions;\n\
0 disables the limit; also PYTHONINTMAXSTRDIGITS\n\
+-X lazy_imports=[all|none|normal]: control global lazy imports;\n\
+ default is normal; also PYTHON_LAZY_IMPORTS\n\
-X no_debug_ranges: don't include extra location information in code
objects;\n\
also PYTHONNODEBUGRANGES\n\
+-X pathconfig_warnings=[0|1]: if true (1) then path configuration is allowed\n\
+ to log warnings into stderr; if false (0) suppress these warnings;\n\
+ set to true by default; also PYTHON_PATHCONFIG_WARNINGS\n\
-X perf: support the Linux \"perf\" profiler; also PYTHONPERFSUPPORT=1\n\
-X perf_jit: support the Linux \"perf\" profiler with DWARF support;\n\
also PYTHON_PERF_JIT_SUPPORT=1\n\
--X disable-remote-debug: disable remote debugging; also
PYTHON_DISABLE_REMOTE_DEBUG\n\
"
#ifdef Py_DEBUG
"-X presite=MOD: import this module before site; also PYTHON_PRESITE\n"
@@ -343,24 +351,17 @@ The following implementation-specific options are
available:\n\
"\
-X showrefcount: output the total reference count and number of used\n\
memory blocks when the program finishes or after each statement in\n\
- the interactive interpreter; only works on debug builds\n"
+ the interactive interpreter; only works on debug builds\n\
+-X thread_inherit_context=[0|1]: enable (1) or disable (0) threads
inheriting\n\
+ context vars by default; enabled by default in the free-threaded\n\
+ build and disabled otherwise; also PYTHON_THREAD_INHERIT_CONTEXT\n\
+"
#ifdef Py_GIL_DISABLED
"-X tlbc=[0|1]: enable (1) or disable (0) thread-local bytecode. Also\n\
PYTHON_TLBC\n"
#endif
"\
--X thread_inherit_context=[0|1]: enable (1) or disable (0) threads
inheriting\n\
- context vars by default; enabled by default in the free-threaded\n\
- build and disabled otherwise; also PYTHON_THREAD_INHERIT_CONTEXT\n\
--X context_aware_warnings=[0|1]: if true (1) then the warnings module will\n\
- use a context variables; if false (0) then the warnings module will\n\
- use module globals, which is not concurrent-safe; set to true for\n\
- free-threaded builds and false otherwise; also\n\
- PYTHON_CONTEXT_AWARE_WARNINGS\n\
--X pathconfig_warnings=[0|1]: if true (1) then path configuration is allowed\n\
- to log warnings into stderr; if false (0) suppress these warnings;\n\
- set to true by default; also PYTHON_PATHCONFIG_WARNINGS\n\
--X tracemalloc[=N]: trace Python memory allocations; N sets a traceback
limit\n \
+-X tracemalloc[=N]: trace Python memory allocations; N sets a traceback
limit\n\
of N frames (default: 1); also PYTHONTRACEMALLOC=N\n\
-X utf8[=0|1]: enable (1) or disable (0) UTF-8 mode; also PYTHONUTF8\n\
-X warn_default_encoding: enable opt-in EncodingWarning for 'encoding=None';\n\
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]