Modified: trunk/Tools/Scripts/libraries/webkitcorepy/setup.py (276840 => 276841)
--- trunk/Tools/Scripts/libraries/webkitcorepy/setup.py 2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/setup.py 2021-04-30 16:26:15 UTC (rev 276841)
@@ -30,7 +30,7 @@
setup(
name='webkitcorepy',
- version='0.5.10',
+ version='0.5.11',
description='Library containing various Python support classes and functions.',
long_description=readme(),
classifiers=[
Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py (276840 => 276841)
--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py 2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py 2021-04-30 16:26:15 UTC (rev 276841)
@@ -37,7 +37,7 @@
from webkitcorepy.task_pool import TaskPool
from webkitcorepy.credentials import credentials
-version = Version(0, 5, 10)
+version = Version(0, 5, 11)
from webkitcorepy.autoinstall import Package, AutoInstall
if sys.version_info > (3, 0):
Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py (276840 => 276841)
--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py 2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/task_pool.py 2021-04-30 16:26:15 UTC (rev 276841)
@@ -231,12 +231,18 @@
cls.working = False
@classmethod
- def main(cls, name, setup, queue, teardown):
+ def main(cls, name, setup, setupargs, setupkwargs, queue, teardown, teardownargs, teardownkwargs):
from tblib import pickling_support
cls.name = name
cls.working = True
+ setupargs = setupargs or []
+ setupkwargs = setupkwargs or {}
+
+ teardownargs = teardownargs or []
+ teardownkwargs = teardownkwargs or {}
+
if getattr(signal, 'SIGTERM'):
signal.signal(signal.SIGTERM, cls.handler)
@@ -251,7 +257,7 @@
try:
pickling_support.install()
if setup:
- setup()
+ setup(*setupargs, **setupkwargs)
while cls.working:
task = queue.receive()
@@ -267,7 +273,7 @@
finally:
if teardown:
- teardown()
+ teardown(*teardownargs, **teardownkwargs)
sys.stdout.flush()
sys.stderr.flush()
queue.send(State(State.STOPPING))
@@ -278,7 +284,11 @@
class Exception(RuntimeError):
pass
- def __init__(self, workers=1, name=None, setup=None, teardown=None, grace_period=5, block_size=1000):
+ def __init__(
+ self, workers=1, name=None, setup=None, teardown=None, grace_period=5, block_size=1000,
+ setupargs=None, setupkwargs=None,
+ teardownargs=None, teardownkwargs=None,
+ ):
# Ensure tblib is installed before creating child processes
import tblib
@@ -293,10 +303,12 @@
self.workers = [multiprocessing.Process(
target=Process.main,
- args=('{}/{}'.format(name, count), setup, BiDirectionalQueue(
- outgoing=self.queue.incoming,
- incoming=self.queue.outgoing,
- ), teardown),
+ args=(
+ '{}/{}'.format(name, count),
+ setup, setupargs, setupkwargs,
+ BiDirectionalQueue(outgoing=self.queue.incoming, incoming=self.queue.outgoing),
+ teardown, teardownargs, teardownkwargs,
+ ),
) for count in range(workers)]
self._started = 0
Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py (276840 => 276841)
--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py 2021-04-30 16:02:52 UTC (rev 276840)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/task_pool_unittest.py 2021-04-30 16:26:15 UTC (rev 276841)
@@ -27,12 +27,12 @@
from webkitcorepy import OutputCapture, TaskPool, log as logger
-def setup():
- logger.warning('Setting up')
+def setup(arg='Setting up'):
+ logger.warning(arg)
-def teardown():
- logger.warning('Tearing down')
+def teardown(arg='Tearing down'):
+ logger.warning(arg)
def action(argument):
@@ -118,6 +118,17 @@
['worker/{} Setting up'.format(x) for x in range(4)],
)
+ def test_setup_arguments(self):
+ with OutputCapture() as captured:
+ with TaskPool(workers=4, setup=setup, setupargs=['Setup argument']) as pool:
+ for character in self.alphabet:
+ pool.do(action, character)
+ pool.wait()
+ self.assertEqual(
+ sorted(captured.webkitcorepy.log.getvalue().splitlines()),
+ ['worker/{} Setup argument'.format(x) for x in range(4)],
+ )
+
def test_teardown(self):
with OutputCapture() as captured:
with TaskPool(workers=4, teardown=teardown) as pool:
@@ -129,6 +140,17 @@
['worker/{} Tearing down'.format(x) for x in range(4)],
)
+ def test_teardown_arguments(self):
+ with OutputCapture() as captured:
+ with TaskPool(workers=4, teardown=teardown, teardownargs=['Teardown argument']) as pool:
+ for character in self.alphabet:
+ pool.do(action, character)
+ pool.wait()
+ self.assertEqual(
+ sorted(captured.webkitcorepy.log.getvalue().splitlines()),
+ ['worker/{} Teardown argument'.format(x) for x in range(4)],
+ )
+
def test_invalid_shutdown(self):
with OutputCapture():
with self.assertRaises(TaskPool.Exception):