aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-03-07 16:59:15 +0100
committerMattias Andrée <maandree@operamail.com>2014-03-07 16:59:15 +0100
commit8826d3adde62a482ba310606d302bfe3ada68ffa (patch)
tree4d67f52cfb6ead1ef5fac391c775b5abdd4cab63
parenttest concurrently (diff)
downloadjoin-python-8826d3adde62a482ba310606d302bfe3ada68ffa.tar.gz
join-python-8826d3adde62a482ba310606d302bfe3ada68ffa.tar.bz2
join-python-8826d3adde62a482ba310606d302bfe3ada68ffa.tar.xz
add fsignal
Signed-off-by: Mattias Andrée <maandree@operamail.com>
-rw-r--r--src/join.py14
-rwxr-xr-xsrc/test.py32
2 files changed, 45 insertions, 1 deletions
diff --git a/src/join.py b/src/join.py
index 8c6440a..a873bf4 100644
--- a/src/join.py
+++ b/src/join.py
@@ -104,6 +104,20 @@ class fragment:
+class fsignal(fragment):
+ '''
+ Shorthand for @fragment @signal
+ '''
+ def __init__(self, f):
+ '''
+ Constructor
+
+ @param f:(...)→¿R? The decorated function
+ '''
+ fragment.__init__(self, signal(f))
+
+
+
def join(*fs):
'''
Join with fragments
diff --git a/src/test.py b/src/test.py
index 0dd65dc..0279f2d 100755
--- a/src/test.py
+++ b/src/test.py
@@ -96,7 +96,6 @@ def fsig2(value):
def fsig3(value):
pass
-
def unjoining(index):
if index == 0: fsig1(1)
if index == 1: fsig2(2)
@@ -122,4 +121,35 @@ def c(value):
print('Testing connurrently')
concurrently(lambda : c(0), lambda : c(1), lambda : c(2), lambda : c(3))
print(' Last (delayed c:a 1 s)')
+print()
+
+
+@fsignal
+def fsig1(value):
+ pass
+
+@fsignal
+def fsig2(value):
+ pass
+
+@fsignal
+def fsig3(value):
+ pass
+
+def unjoining(index):
+ if index == 0: fsig1(1)
+ if index == 1: fsig2(2)
+ if index == 2: fsig3(3)
+ (case, (jargs, jkwargs, jrc)) = ordered_join((fsig1,), (fsig2,), (fsig3,))
+ if index != 0: fsig1(1)
+ if index != 1: fsig2(2)
+ if index != 2: fsig3(3)
+ print(' ', *jargs)
+ time.sleep(0.25)
+
+print('Testing @fsignal, expecting 1,2,1')
+unjoining(0)
+unjoining(1)
+unjoining(2)
+print()