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
73 changes: 65 additions & 8 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 @@ -142,7 +143,11 @@ def collect_platform(info_add):
info_add('platform.python_implementation',
platform.python_implementation())
info_add('platform.platform',
platform.platform(aliased=True, terse=True))
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):
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 @@ -407,7 +420,10 @@ def collect_sysconfig(info_add):
'OPT',
'PY_CFLAGS',
'PY_CFLAGS_NODIST',
'PY_CORE_LDFLAGS',
'PY_LDFLAGS',
'PY_LDFLAGS_NODIST',
'PY_STDMODULE_CFLAGS',
'Py_DEBUG',
'Py_ENABLE_SHARED',
'SHELL',
Expand Down Expand Up @@ -513,6 +529,8 @@ def collect_resource(info_add):
value = resource.getrlimit(key)
info_add('resource.%s' % name, value)

call_func(info_add, 'resource.pagesize', resource, 'getpagesize')


def collect_test_socket(info_add):
try:
Expand Down Expand Up @@ -553,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 @@ -567,6 +592,35 @@ def collect_cc(info_add):
info_add('CC.version', text)


def collect_gdbm(info_add):
try:
from _gdbm import _GDBM_VERSION
except ImportError:
return

info_add('gdbm.GDBM_VERSION', '.'.join(map(str, _GDBM_VERSION)))


def collect_get_config(info_add):
# Dump global configuration variables, _PyCoreConfig
# and _PyMainInterpreterConfig
try:
from _testinternalcapi import get_configs
except ImportError:
return

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]' % (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):
error = False
info_add = info.add
Expand Down Expand Up @@ -594,6 +648,9 @@ def collect_info(info):
collect_testcapi,
collect_resource,
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