Notification config
The dataclasses that represent a Notification configuration. The first one is for the main process, the second one is for the actual creation & waiting for callback process.
NotificationConfig
dataclass
The standard representation of a Notifications. This is used inside the main process.
Source code in mac_notifications/notification_config.py
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 51 52 53 54 |
|
JSONNotificationConfig
dataclass
This notification configuration class that only contains serializable parts.
This class is required because waiting for user interaction with a notification is a blocking operation. Because it is a blocking operation, if we want to be able to receive any user interaction from the notification, without completely halting/freezing our main process, we need to open it in a background process. However, to be able to transfer the data from the notification to the other process, all the arguments should be serializable. As callbacks/functions are not serializable, we replaced them by booleans on whether it contained a callback or not. Once a callback should be triggered, we send a message over a multiprocessing Queue and trigger the callback in the main process.
Source code in mac_notifications/notification_config.py
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
|