diff options
author | native-api <vano@mail.mipt.ru> | 2020-06-12 06:20:11 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-12 06:20:11 (GMT) |
commit | 2145c8c9724287a310bc77a2760d4f1c0ca9eb0c (patch) | |
tree | 754c3c52598209ebfd547710d0736e2ac01351ac | |
parent | ddef3bdc7b254a7e1129a52c17d79cb7c73a88f5 (diff) | |
download | cpython-2145c8c9724287a310bc77a2760d4f1c0ca9eb0c.zip cpython-2145c8c9724287a310bc77a2760d4f1c0ca9eb0c.tar.gz cpython-2145c8c9724287a310bc77a2760d4f1c0ca9eb0c.tar.bz2 |
bpo-33944: site: Add site-packages tracing in verbose mode (GH-12110)
-rw-r--r-- | Doc/using/cmdline.rst | 5 | ||||
-rw-r--r-- | Lib/site.py | 9 | ||||
-rw-r--r-- | Lib/test/test_site.py | 9 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-03-01-01-56-23.bpo-33944.-82Pkt.rst | 1 |
4 files changed, 24 insertions, 0 deletions
diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index 7aacd8f..8c65d99 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -369,6 +369,11 @@ Miscellaneous options (filename or built-in module) from which it is loaded. When given twice (:option:`!-vv`), print a message for each file that is checked for when searching for a module. Also provides information on module cleanup at exit. + + .. versionchanged:: 3.10 + The :mod:`site` module reports the site-specific paths + and :file:`.pth` files being processed. + See also :envvar:`PYTHONVERBOSE`. diff --git a/Lib/site.py b/Lib/site.py index e981a14..544306c 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -88,6 +88,11 @@ USER_SITE = None USER_BASE = None +def _trace(message): + if sys.flags.verbose: + print(message, file=sys.stderr) + + def makepath(*paths): dir = os.path.join(*paths) try: @@ -156,6 +161,7 @@ def addpackage(sitedir, name, known_paths): else: reset = False fullname = os.path.join(sitedir, name) + _trace(f"Processing .pth file: {fullname!r}") try: f = io.TextIOWrapper(io.open_code(fullname)) except OSError: @@ -190,6 +196,7 @@ def addpackage(sitedir, name, known_paths): def addsitedir(sitedir, known_paths=None): """Add 'sitedir' argument to sys.path if missing and handle .pth files in 'sitedir'""" + _trace(f"Adding directory: {sitedir!r}") if known_paths is None: known_paths = _init_pathinfo() reset = True @@ -310,6 +317,7 @@ def addusersitepackages(known_paths): """ # get the per user site-package path # this call will also make sure USER_BASE and USER_SITE are set + _trace("Processing user site-packages") user_site = getusersitepackages() if ENABLE_USER_SITE and os.path.isdir(user_site): @@ -354,6 +362,7 @@ def getsitepackages(prefixes=None): def addsitepackages(known_paths, prefixes=None): """Add site-packages to sys.path""" + _trace("Processing global site-packages") for sitedir in getsitepackages(prefixes): if os.path.isdir(sitedir): addsitedir(sitedir, known_paths) diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index 957e7a4..9f4a8bc 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -13,6 +13,7 @@ from test.support import (captured_stderr, TESTFN, EnvironmentVarGuard, import builtins import encodings import glob +import io import os import re import shutil @@ -320,6 +321,14 @@ class HelperFunctionsTests(unittest.TestCase): mock_addsitedir.assert_not_called() self.assertFalse(known_paths) + def test_trace(self): + message = "bla-bla-bla" + for verbose, out in (True, message + "\n"), (False, ""): + with mock.patch('sys.flags', mock.Mock(verbose=verbose)), \ + mock.patch('sys.stderr', io.StringIO()): + site._trace(message) + self.assertEqual(sys.stderr.getvalue(), out) + class PthFile(object): """Helper class for handling testing of .pth files""" diff --git a/Misc/NEWS.d/next/Library/2019-03-01-01-56-23.bpo-33944.-82Pkt.rst b/Misc/NEWS.d/next/Library/2019-03-01-01-56-23.bpo-33944.-82Pkt.rst new file mode 100644 index 0000000..b0c953d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-03-01-01-56-23.bpo-33944.-82Pkt.rst @@ -0,0 +1 @@ +Added site.py site-packages tracing in verbose mode. |