https://github.com/python/cpython/commit/c81a5e6b5b7749862d271e7a67f89976069ad2cd
commit: c81a5e6b5b7749862d271e7a67f89976069ad2cd
branch: main
author: devdanzin <[email protected]>
committer: encukou <[email protected]>
date: 2024-06-18T17:12:58Z
summary:

gh-119574: Add some missing environment variables to '--help-env'. (GH-120006)

files:
A Misc/NEWS.d/next/Documentation/2024-06-03-22-06-26.gh-issue-119574.Ik9kOO.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 8418da541fde8c..a9963bf89d2914 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -5,6 +5,7 @@
 import os
 import subprocess
 import sys
+import sysconfig
 import tempfile
 import textwrap
 import unittest
@@ -912,6 +913,75 @@ def test_python_gil(self):
                 self.assertEqual(proc.stdout.rstrip(), expected)
                 self.assertEqual(proc.stderr, '')
 
+    def test_python_asyncio_debug(self):
+        code = "import asyncio; print(asyncio.get_event_loop().get_debug())"
+        rc, out, err = assert_python_ok('-c', code, PYTHONASYNCIODEBUG='1')
+        self.assertIn(b'True', out)
+
+    @unittest.skipUnless(sysconfig.get_config_var('Py_TRACE_REFS'), "Requires 
--with-trace-refs build option")
+    def test_python_dump_refs(self):
+        code = 'import sys; sys._clear_type_cache()'
+        rc, out, err = assert_python_ok('-c', code, PYTHONDUMPREFS='1')
+        self.assertEqual(rc, 0)
+
+    @unittest.skipUnless(sysconfig.get_config_var('Py_TRACE_REFS'), "Requires 
--with-trace-refs build option")
+    def test_python_dump_refs_file(self):
+        with tempfile.NamedTemporaryFile() as dump_file:
+            code = 'import sys; sys._clear_type_cache()'
+            rc, out, err = assert_python_ok('-c', code, 
PYTHONDUMPREFSFILE=dump_file.name)
+            self.assertEqual(rc, 0)
+            with open(dump_file.name, 'r') as file:
+                contents = file.read()
+                self.assertIn('Remaining objects', contents)
+
+    @unittest.skipUnless(sys.platform == 'darwin', 'PYTHONEXECUTABLE only 
works on macOS')
+    def test_python_executable(self):
+        code = 'import sys; print(sys.executable)'
+        expected = "/busr/bbin/bpython"
+        rc, out, err = assert_python_ok('-c', code, PYTHONEXECUTABLE=expected)
+        self.assertIn(expected.encode(), out)
+
+    @unittest.skipUnless(support.MS_WINDOWS, 'Test only applicable on Windows')
+    def test_python_legacy_windows_fs_encoding(self):
+        code = "import sys; print(sys.getfilesystemencoding())"
+        expected = 'mbcs'
+        rc, out, err = assert_python_ok('-c', code, 
PYTHONLEGACYWINDOWSFSENCODING='1')
+        self.assertIn(expected.encode(), out)
+
+    @unittest.skipUnless(support.MS_WINDOWS, 'Test only applicable on Windows')
+    def test_python_legacy_windows_stdio(self):
+        code = "import sys; print(sys.stdin.encoding, sys.stdout.encoding)"
+        expected = 'cp'
+        rc, out, err = assert_python_ok('-c', code, 
PYTHONLEGACYWINDOWSSTDIO='1')
+        self.assertIn(expected.encode(), out)
+
+    @unittest.skipIf("-fsanitize" in 
sysconfig.get_config_vars().get('PY_CFLAGS', ()),
+                     "PYTHONMALLOCSTATS doesn't work with ASAN")
+    def test_python_malloc_stats(self):
+        code = "pass"
+        rc, out, err = assert_python_ok('-c', code, PYTHONMALLOCSTATS='1')
+        self.assertIn(b'Small block threshold', err)
+
+    def test_python_user_base(self):
+        code = "import site; print(site.USER_BASE)"
+        expected = "/custom/userbase"
+        rc, out, err = assert_python_ok('-c', code, PYTHONUSERBASE=expected)
+        self.assertIn(expected.encode(), out)
+
+    def test_python_basic_repl(self):
+        # Currently this only tests that the env var is set
+        code = "import os; print('PYTHON_BASIC_REPL' in os.environ)"
+        expected = "True"
+        rc, out, err = assert_python_ok('-c', code, PYTHON_BASIC_REPL='1')
+        self.assertIn(expected.encode(), out)
+
+    @unittest.skipUnless(sysconfig.get_config_var('HAVE_PERF_TRAMPOLINE'), 
"Requires HAVE_PERF_TRAMPOLINE support")
+    def test_python_perf_jit_support(self):
+        code = "import sys; print(sys.is_stack_trampoline_active())"
+        expected = "True"
+        rc, out, err = assert_python_ok('-c', code, 
PYTHON_PERF_JIT_SUPPORT='1')
+        self.assertIn(expected.encode(), out)
+
     @unittest.skipUnless(sys.platform == 'win32',
                          'bpo-32457 only applies on Windows')
     def test_argv0_normalization(self):
diff --git 
a/Misc/NEWS.d/next/Documentation/2024-06-03-22-06-26.gh-issue-119574.Ik9kOO.rst 
b/Misc/NEWS.d/next/Documentation/2024-06-03-22-06-26.gh-issue-119574.Ik9kOO.rst
new file mode 100644
index 00000000000000..902e7c17fc2e9d
--- /dev/null
+++ 
b/Misc/NEWS.d/next/Documentation/2024-06-03-22-06-26.gh-issue-119574.Ik9kOO.rst
@@ -0,0 +1 @@
+Added some missing environment variables to the output of :option:`--help-env`.
diff --git a/Python/initconfig.c b/Python/initconfig.c
index a28c08c5318ddc..51897a2d0aef66 100644
--- a/Python/initconfig.c
+++ b/Python/initconfig.c
@@ -249,6 +249,7 @@ static const char usage_envvars[] =
 "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"
@@ -260,6 +261,20 @@ static const char usage_envvars[] =
 "                  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"
+#endif
+#ifdef __APPLE__
+"PYTHONEXECUTABLE: set sys.argv[0] to this value (macOS only)\n"
+#endif
+#ifdef MS_WINDOWS
+"PYTHONLEGACYWINDOWSFSENCODING: use legacy \"mbcs\" encoding for file system\n"
+"PYTHONLEGACYWINDOWSSTDIO: use legacy Windows stdio\n"
+#endif
+"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_CPU_COUNT: override the return value of os.cpu_count() (-X 
cpu_count)\n"
@@ -281,6 +296,8 @@ static const char usage_envvars[] =
 "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"
 #ifdef Py_DEBUG
 "PYTHON_PRESITE: import this module before site (-X presite)\n"
 #endif

_______________________________________________
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]

Reply via email to