Staging
v0.8.1
v0.8.1
https://github.com/python/cpython
Revision a63c61168588937c482435d0432c753de4844c46 authored by Miss Islington (bot) on 11 May 2020, 19:09:10 UTC, committed by GitHub on 11 May 2020, 19:09:10 UTC
Co-authored-by: Brad Solomon <brsolomon@deloitte.com> Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu> (cherry picked from commit ef7973a981ff8f4687ef3fdb85a69fa15aa11fe5) Co-authored-by: Brad Solomon <brad.solomon.1124@gmail.com>
1 parent 546f643
Tip revision: a63c61168588937c482435d0432c753de4844c46 authored by Miss Islington (bot) on 11 May 2020, 19:09:10 UTC
bpo-40561: Add docstrings for webbrowser open functions (GH-19999)
bpo-40561: Add docstrings for webbrowser open functions (GH-19999)
Tip revision: a63c611
threaded_import_hangers.py
# This is a helper module for test_threaded_import. The test imports this
# module, and this module tries to run various Python library functions in
# their own thread, as a side effect of being imported. If the spawned
# thread doesn't complete in TIMEOUT seconds, an "appeared to hang" message
# is appended to the module-global `errors` list. That list remains empty
# if (and only if) all functions tested complete.
TIMEOUT = 10
import threading
import tempfile
import os.path
errors = []
# This class merely runs a function in its own thread T. The thread importing
# this module holds the import lock, so if the function called by T tries
# to do its own imports it will block waiting for this module's import
# to complete.
class Worker(threading.Thread):
def __init__(self, function, args):
threading.Thread.__init__(self)
self.function = function
self.args = args
def run(self):
self.function(*self.args)
for name, func, args in [
# Bug 147376: TemporaryFile hung on Windows, starting in Python 2.4.
("tempfile.TemporaryFile", lambda: tempfile.TemporaryFile().close(), ()),
# The real cause for bug 147376: ntpath.abspath() caused the hang.
("os.path.abspath", os.path.abspath, ('.',)),
]:
try:
t = Worker(func, args)
t.start()
t.join(TIMEOUT)
if t.is_alive():
errors.append("%s appeared to hang" % name)
finally:
del t
Computing file changes ...