register.py 967 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import os

task_registry = {}
group_registry = {}
task2func_index = {}
func2task_index = {}

def register_task(name):
    def wrapper(func):

        task_registry[name] = func
        func2task_index[func.__name__] = name
        task2func_index[name] = func.__name__
        return func

    return wrapper

def register_group(name):
    def wrapper(func):

        func_name = func2task_index[func.__name__]

        if name in group_registry:
            group_registry[name].append(
                func_name
                )
        else:
            group_registry[name] = [func_name]
        return func
    return wrapper


# @register_group('group_a')
# @register_task('a')
# def foo():
#     pass

# @register_group('group_a')
# @register_task('b')
# def fii():
#     pass

# @register_group('group_b')
# @register_task('c')
# def bar():
#     pass

# name = 'A'  # or args.type
# func_to_call = REGISTER[name]
# func_to_call()  # actual call is done here