1 new commit in py:

https://bitbucket.org/hpk42/py/commits/37f557844498/
Changeset:   37f557844498
User:        hpk42
Date:        2014-07-17 10:51:38
Summary:     refactor class-level registry on ForkedFunc child start/finish
event to become instance based (i.e. passed into the constructor)

bump to 1.4.22 for release
Affected #:  6 files

diff -r 89d472ccb3556f34f2a039c61f8b0090a8e4e9a2 -r 
37f557844498ef4943c1e68c8f40bc3713b0b393 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+1.4.22
+==================================================
+
+- refactor class-level registry on ForkedFunc child start/finish
+  event to become instance based (i.e. passed into the constructor)
+
 1.4.21
 ==================================================
 

diff -r 89d472ccb3556f34f2a039c61f8b0090a8e4e9a2 -r 
37f557844498ef4943c1e68c8f40bc3713b0b393 README.txt
--- a/README.txt
+++ b/README.txt
@@ -13,5 +13,5 @@
 
 Bugs and issues: http://bitbucket.org/hpk42/py/issues/
 
-Authors: Holger Krekel and others, 2004-2013
+Authors: Holger Krekel and others, 2004-2014
 

diff -r 89d472ccb3556f34f2a039c61f8b0090a8e4e9a2 -r 
37f557844498ef4943c1e68c8f40bc3713b0b393 py/__init__.py
--- a/py/__init__.py
+++ b/py/__init__.py
@@ -8,7 +8,7 @@
 
 (c) Holger Krekel and others, 2004-2013
 """
-__version__ = '1.4.21'
+__version__ = '1.4.22'
 
 from py import _apipkg
 

diff -r 89d472ccb3556f34f2a039c61f8b0090a8e4e9a2 -r 
37f557844498ef4943c1e68c8f40bc3713b0b393 py/_process/forkedfunc.py
--- a/py/_process/forkedfunc.py
+++ b/py/_process/forkedfunc.py
@@ -11,31 +11,6 @@
 import marshal
 
 
-class HookMixin(object):
-    _on_start = list()
-    _on_exit = list()
-
-    @classmethod
-    def register_on_start(cls, callback):
-        cls._on_start.append(callback)
-
-    @classmethod
-    def register_on_exit(self, callback):
-        self._on_exit.append(callback)
-
-    def _run_on_start(self):
-        self._run_callbacks(self._on_start)
-
-    def _run_on_exit(self):
-        self._run_callbacks(self._on_exit)
-
-    def _run_callbacks(self, callbacks):
-        for callback in callbacks:
-            callback(self)
-        sys.stdout.flush()
-        sys.stderr.flush()
-
-
 def get_unbuffered_io(fd, filename):
     f = open(str(filename), "w")
     if fd != f.fileno():
@@ -49,11 +24,12 @@
     return AutoFlush()
 
 
-class ForkedFunc(HookMixin):
+class ForkedFunc:
     EXITSTATUS_EXCEPTION = 3
 
 
-    def __init__(self, fun, args=None, kwargs=None, nice_level=0):
+    def __init__(self, fun, args=None, kwargs=None, nice_level=0,
+                 child_on_start=None, child_on_exit=None):
         if args is None:
             args = []
         if kwargs is None:
@@ -71,9 +47,9 @@
             self.pid = pid
         else:  # in child process
             self.pid = None
-            self._child(nice_level)
+            self._child(nice_level, child_on_start, child_on_exit)
 
-    def _child(self, nice_level):
+    def _child(self, nice_level, child_on_start, child_on_exit):
         # right now we need to call a function, but first we need to
         # map all IO that might happen
         sys.stdout = stdout = get_unbuffered_io(1, self.STDOUT)
@@ -84,10 +60,12 @@
             if nice_level:
                 os.nice(nice_level)
             try:
-                self._run_on_start()
+                if child_on_start is not None:
+                    child_on_start()
                 retval = self.fun(*self.args, **self.kwargs)
                 retvalf.write(marshal.dumps(retval))
-                self._run_on_exit()
+                if child_on_exit is not None:
+                    child_on_exit()
             except:
                 excinfo = py.code.ExceptionInfo()
                 stderr.write(str(excinfo._getreprcrash()))

diff -r 89d472ccb3556f34f2a039c61f8b0090a8e4e9a2 -r 
37f557844498ef4943c1e68c8f40bc3713b0b393 setup.py
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@
         name='py',
         description='library with cross-python path, ini-parsing, io, code, 
log facilities',
         long_description = open('README.txt').read(),
-        version='1.4.21',
+        version='1.4.22',
         url='http://pylib.readthedocs.org/',
         license='MIT license',
         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],

diff -r 89d472ccb3556f34f2a039c61f8b0090a8e4e9a2 -r 
37f557844498ef4943c1e68c8f40bc3713b0b393 testing/process/test_forkedfunc.py
--- a/testing/process/test_forkedfunc.py
+++ b/testing/process/test_forkedfunc.py
@@ -3,10 +3,6 @@
 
 pytestmark = py.test.mark.skipif("not hasattr(os, 'fork')")
 
-@pytest.fixture(autouse=True)
-def clear_forkedfunc(monkeypatch):
-    monkeypatch.setattr(py.process.ForkedFunc, "_on_start", [])
-    monkeypatch.setattr(py.process.ForkedFunc, "_on_exit", [])
 
 def test_waitfinish_removes_tempdir():
     ff = py.process.ForkedFunc(boxf1)
@@ -126,20 +122,19 @@
 
 
 def test_hooks(monkeypatch):
-    monkeypatch.setattr(py.process.ForkedFunc, "_on_exit", [])
-    monkeypatch.setattr(py.process.ForkedFunc, "_on_start", [])
     def _boxed():
         return 1
 
-    def _on_start(proc):
+    def _on_start():
         sys.stdout.write("some out\n")
+        sys.stdout.flush()
 
-    def _on_exit(proc):
+    def _on_exit():
         sys.stderr.write("some err\n")
+        sys.stderr.flush()
 
-    py.process.ForkedFunc.register_on_start(_on_start)
-    py.process.ForkedFunc.register_on_exit(_on_exit)
-    result = py.process.ForkedFunc(_boxed).waitfinish()
+    result = py.process.ForkedFunc(_boxed, child_on_start=_on_start,
+                                   child_on_exit=_on_exit).waitfinish()
     assert result.out == "some out\n"
     assert result.err == "some err\n"
     assert result.exitstatus == 0

Repository URL: https://bitbucket.org/hpk42/py/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
pytest-commit mailing list
pytest-commit@python.org
https://mail.python.org/mailman/listinfo/pytest-commit

Reply via email to