Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 38 additions & 15 deletions Lib/test/pythoninfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import re
import sys
import traceback
import warnings


def normalize_text(text):
Expand Down Expand Up @@ -144,6 +145,10 @@ def collect_platform(info_add):
info_add('platform.platform',
platform.platform(aliased=True))

libc_ver = ('%s %s' % platform.libc_ver()).strip()
if libc_ver:
info_add('platform.libc_ver', libc_ver)


def collect_locale(info_add):
import locale
Expand Down Expand Up @@ -376,9 +381,17 @@ def collect_time(info_add):
copy_attributes(info_add, time, 'time.%s', attributes)

if hasattr(time, 'get_clock_info'):
for clock in ('time', 'perf_counter'):
tinfo = time.get_clock_info(clock)
info_add('time.get_clock_info(%s)' % clock, tinfo)
for clock in ('clock', 'monotonic', 'perf_counter',
'process_time', 'thread_time', 'time'):
try:
# prevent DeprecatingWarning on get_clock_info('clock')
with warnings.catch_warnings(record=True):
clock_info = time.get_clock_info(clock)
except ValueError:
# missing clock like time.thread_time()
pass
else:
info_add('time.get_clock_info(%s)' % clock, clock_info)


def collect_datetime(info_add):
Expand Down Expand Up @@ -558,10 +571,17 @@ def collect_cc(info_add):
except ImportError:
args = CC.split()
args.append('--version')
proc = subprocess.Popen(args,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
universal_newlines=True)
try:
proc = subprocess.Popen(args,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
universal_newlines=True)
except OSError:
# Cannot run the compiler, for example when Python has been
# cross-compiled and installed on the target platform where the
# compiler is missing.
return

stdout = proc.communicate()[0]
if proc.returncode:
# CC --version failed: ignore error
Expand All @@ -585,18 +605,20 @@ def collect_get_config(info_add):
# Dump global configuration variables, _PyCoreConfig
# and _PyMainInterpreterConfig
try:
from _testcapi import get_global_config, get_core_config, get_main_config
from _testinternalcapi import get_configs
except ImportError:
return

for prefix, get_config_func in (
('global_config', get_global_config),
('core_config', get_core_config),
('main_config', get_main_config),
):
config = get_config_func()
all_configs = get_configs()
for config_type in sorted(all_configs):
config = all_configs[config_type]
for key in sorted(config):
info_add('%s[%s]' % (prefix, key), repr(config[key]))
info_add('%s[%s]' % (config_type, key), repr(config[key]))


def collect_subprocess(info_add):
import subprocess
copy_attributes(info_add, subprocess, 'subprocess.%s', ('_USE_POSIX_SPAWN',))


def collect_info(info):
Expand Down Expand Up @@ -628,6 +650,7 @@ def collect_info(info):
collect_cc,
collect_gdbm,
collect_get_config,
collect_subprocess,

# Collecting from tests should be last as they have side effects.
collect_test_socket,
Expand Down