mirror of
https://github.com/python/cpython.git
synced 2026-04-13 23:31:02 +00:00
gh-145990: sort --help-env sections by environment variable name (GH-145997)
* sort --help-env alphabetically by name. * add a sorting regression test in test_help_env.
This commit is contained in:
parent
b062f391cf
commit
83edae33a5
3 changed files with 37 additions and 28 deletions
|
|
@ -60,6 +60,14 @@ def test_help(self):
|
|||
def test_help_env(self):
|
||||
out = self.verify_valid_flag('--help-env')
|
||||
self.assertIn(b'PYTHONHOME', out)
|
||||
# Env vars in each section should be sorted alphabetically
|
||||
# (ignoring underscores so PYTHON_FOO and PYTHONFOO intermix naturally)
|
||||
sort_key = lambda name: name.replace(b'_', b'').lower()
|
||||
sections = out.split(b'These variables have equivalent')
|
||||
for section in sections:
|
||||
envvars = re.findall(rb'^(PYTHON\w+)', section, re.MULTILINE)
|
||||
self.assertEqual(envvars, sorted(envvars, key=sort_key),
|
||||
"env vars should be sorted alphabetically")
|
||||
|
||||
@support.cpython_only
|
||||
def test_help_xoptions(self):
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
``python --help-env`` sections are now sorted by environment variable name.
|
||||
|
|
@ -371,34 +371,19 @@ The following implementation-specific options are available:\n\
|
|||
/* Envvars that don't have equivalent command-line options are listed first */
|
||||
static const char usage_envvars[] =
|
||||
"Environment variables that change behavior:\n"
|
||||
"PYTHONSTARTUP : file executed on interactive startup (no default)\n"
|
||||
"PYTHONPATH : '%lc'-separated list of directories prefixed to the\n"
|
||||
" default module search path. The result is sys.path.\n"
|
||||
"PYTHONHOME : alternate <prefix> directory (or <prefix>%lc<exec_prefix>).\n"
|
||||
" The default module search path uses %s.\n"
|
||||
"PYTHONPLATLIBDIR: override sys.platlibdir\n"
|
||||
"PYTHONASYNCIODEBUG: enable asyncio debug mode\n"
|
||||
"PYTHON_BASIC_REPL: use the traditional parser-based REPL\n"
|
||||
"PYTHONBREAKPOINT: if this variable is set to 0, it disables the default\n"
|
||||
" debugger. It can be set to the callable of your debugger of\n"
|
||||
" choice.\n"
|
||||
"PYTHONCASEOK : ignore case in 'import' statements (Windows)\n"
|
||||
"PYTHONIOENCODING: encoding[:errors] used for stdin/stdout/stderr\n"
|
||||
"PYTHONHASHSEED : if this variable is set to 'random', a random value is used\n"
|
||||
" to seed the hashes of str and bytes objects. It can also be\n"
|
||||
" set to an integer in the range [0,4294967295] to get hash\n"
|
||||
" values with a predictable seed.\n"
|
||||
"PYTHONMALLOC : set the Python memory allocators and/or install debug hooks\n"
|
||||
" on Python memory allocators. Use PYTHONMALLOC=debug to\n"
|
||||
" install debug hooks.\n"
|
||||
"PYTHONMALLOCSTATS: print memory allocator statistics\n"
|
||||
"PYTHONCOERCECLOCALE: if this variable is set to 0, it disables the locale\n"
|
||||
" coercion behavior. Use PYTHONCOERCECLOCALE=warn to request\n"
|
||||
" display of locale coercion and locale compatibility warnings\n"
|
||||
" on stderr.\n"
|
||||
"PYTHONBREAKPOINT: if this variable is set to 0, it disables the default\n"
|
||||
" debugger. It can be set to the callable of your debugger of\n"
|
||||
" choice.\n"
|
||||
"PYTHON_COLORS : if this variable is set to 1, the interpreter will colorize\n"
|
||||
" various kinds of output. Setting it to 0 deactivates\n"
|
||||
" this behavior.\n"
|
||||
"PYTHON_HISTORY : the location of a .python_history file.\n"
|
||||
"PYTHONASYNCIODEBUG: enable asyncio debug mode\n"
|
||||
#ifdef Py_TRACE_REFS
|
||||
"PYTHONDUMPREFS : dump objects and reference counts still alive after shutdown\n"
|
||||
"PYTHONDUMPREFSFILE: dump objects and reference counts to the specified file\n"
|
||||
|
|
@ -406,14 +391,31 @@ static const char usage_envvars[] =
|
|||
#ifdef __APPLE__
|
||||
"PYTHONEXECUTABLE: set sys.argv[0] to this value (macOS only)\n"
|
||||
#endif
|
||||
"PYTHONHASHSEED : if this variable is set to 'random', a random value is used\n"
|
||||
" to seed the hashes of str and bytes objects. It can also be\n"
|
||||
" set to an integer in the range [0,4294967295] to get hash\n"
|
||||
" values with a predictable seed.\n"
|
||||
"PYTHON_HISTORY : the location of a .python_history file.\n"
|
||||
"PYTHONHOME : alternate <prefix> directory (or <prefix>%lc<exec_prefix>).\n"
|
||||
" The default module search path uses %s.\n"
|
||||
"PYTHONIOENCODING: encoding[:errors] used for stdin/stdout/stderr\n"
|
||||
#ifdef MS_WINDOWS
|
||||
"PYTHONLEGACYWINDOWSFSENCODING: use legacy \"mbcs\" encoding for file system\n"
|
||||
"PYTHONLEGACYWINDOWSSTDIO: use legacy Windows stdio\n"
|
||||
#endif
|
||||
"PYTHONMALLOC : set the Python memory allocators and/or install debug hooks\n"
|
||||
" on Python memory allocators. Use PYTHONMALLOC=debug to\n"
|
||||
" install debug hooks.\n"
|
||||
"PYTHONMALLOCSTATS: print memory allocator statistics\n"
|
||||
"PYTHONPATH : '%lc'-separated list of directories prefixed to the\n"
|
||||
" default module search path. The result is sys.path.\n"
|
||||
"PYTHONPLATLIBDIR: override sys.platlibdir\n"
|
||||
"PYTHONSTARTUP : file executed on interactive startup (no default)\n"
|
||||
"PYTHONUSERBASE : defines the user base directory (site.USER_BASE)\n"
|
||||
"PYTHON_BASIC_REPL: use the traditional parser-based REPL\n"
|
||||
"\n"
|
||||
"These variables have equivalent command-line options (see --help for details):\n"
|
||||
"PYTHON_CONTEXT_AWARE_WARNINGS: if true (1), enable thread-safe warnings\n"
|
||||
" module behaviour (-X context_aware_warnings)\n"
|
||||
"PYTHON_CPU_COUNT: override the return value of os.cpu_count() (-X cpu_count)\n"
|
||||
"PYTHONDEBUG : enable parser debug mode (-d)\n"
|
||||
"PYTHONDEVMODE : enable Python Development Mode (-X dev)\n"
|
||||
|
|
@ -428,31 +430,29 @@ static const char usage_envvars[] =
|
|||
"PYTHONINSPECT : inspect interactively after running script (-i)\n"
|
||||
"PYTHONINTMAXSTRDIGITS: limit the size of int<->str conversions;\n"
|
||||
" 0 disables the limit (-X int_max_str_digits=N)\n"
|
||||
"PYTHON_LAZY_IMPORTS: control global lazy imports (-X lazy_imports)\n"
|
||||
"PYTHONNODEBUGRANGES: don't include extra location information in code objects\n"
|
||||
" (-X no_debug_ranges)\n"
|
||||
"PYTHONNOUSERSITE: disable user site directory (-s)\n"
|
||||
"PYTHONOPTIMIZE : enable level 1 optimizations (-O)\n"
|
||||
"PYTHONPERFSUPPORT: support the Linux \"perf\" profiler (-X perf)\n"
|
||||
"PYTHON_PERF_JIT_SUPPORT: enable Linux \"perf\" profiler support with JIT\n"
|
||||
" (-X perf_jit)\n"
|
||||
"PYTHONPERFSUPPORT: support the Linux \"perf\" profiler (-X perf)\n"
|
||||
#ifdef Py_DEBUG
|
||||
"PYTHON_PRESITE: import this module before site (-X presite)\n"
|
||||
#endif
|
||||
"PYTHONPROFILEIMPORTTIME: show how long each import takes (-X importtime)\n"
|
||||
"PYTHON_LAZY_IMPORTS: control global lazy imports (-X lazy_imports)\n"
|
||||
"PYTHONPYCACHEPREFIX: root directory for bytecode cache (pyc) files\n"
|
||||
" (-X pycache_prefix)\n"
|
||||
"PYTHONSAFEPATH : don't prepend a potentially unsafe path to sys.path.\n"
|
||||
#ifdef Py_STATS
|
||||
"PYTHONSTATS : turns on statistics gathering (-X pystats)\n"
|
||||
#endif
|
||||
"PYTHON_THREAD_INHERIT_CONTEXT: if true (1), threads inherit context vars\n"
|
||||
" (-X thread_inherit_context)\n"
|
||||
#ifdef Py_GIL_DISABLED
|
||||
"PYTHON_TLBC : when set to 0, disables thread-local bytecode (-X tlbc)\n"
|
||||
#endif
|
||||
"PYTHON_THREAD_INHERIT_CONTEXT: if true (1), threads inherit context vars\n"
|
||||
" (-X thread_inherit_context)\n"
|
||||
"PYTHON_CONTEXT_AWARE_WARNINGS: if true (1), enable thread-safe warnings module\n"
|
||||
" behaviour (-X context_aware_warnings)\n"
|
||||
"PYTHONTRACEMALLOC: trace Python memory allocations (-X tracemalloc)\n"
|
||||
"PYTHONUNBUFFERED: disable stdout/stderr buffering (-u)\n"
|
||||
"PYTHONUTF8 : control the UTF-8 mode (-X utf8)\n"
|
||||
|
|
@ -2947,7 +2947,7 @@ config_usage(int error, const wchar_t* program)
|
|||
static void
|
||||
config_envvars_usage(void)
|
||||
{
|
||||
printf(usage_envvars, (wint_t)DELIM, (wint_t)DELIM, PYTHONHOMEHELP);
|
||||
printf(usage_envvars, (wint_t)DELIM, PYTHONHOMEHELP, (wint_t)DELIM);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue