Sun, 04 Feb 2018 00:22:20 +0000
macOS "sleep" signals / status are complete bollocks:
at least when plugged in, the system is actually sometimes running all
night with the lid closed and sleepNotification delivered. Therefore,
we need our timers to work in a sane manner when we should be sleeping!
This patch is a first stage of this fix, implementing stopped dreamtime.
It also has improved comparisons of different types of time, based on
snapshotting.
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
1 | # |
89
51cc2e25af38
Added author information headers and content information to source files
Tuomo Valkonen <tuomov@iki.fi>
parents:
86
diff
changeset
|
2 | # Borgend by Tuomo Valkonen, 2018 |
51cc2e25af38
Added author information headers and content information to source files
Tuomo Valkonen <tuomov@iki.fi>
parents:
86
diff
changeset
|
3 | # |
51cc2e25af38
Added author information headers and content information to source files
Tuomo Valkonen <tuomov@iki.fi>
parents:
86
diff
changeset
|
4 | # This file implements system wake/sleep detection for scheduling adjustments. |
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
5 | # |
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
6 | |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
7 | import platform |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
8 | import time |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
9 | import threading |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
10 | import weakref |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
11 | import datetime |
86
2fe66644c50d
Can use logging.getLogger directly now after proper packageisation
Tuomo Valkonen <tuomov@iki.fi>
parents:
80
diff
changeset
|
12 | import logging |
80
a409242121d5
Better package-like organisation
Tuomo Valkonen <tuomov@iki.fi>
parents:
79
diff
changeset
|
13 | |
86
2fe66644c50d
Can use logging.getLogger directly now after proper packageisation
Tuomo Valkonen <tuomov@iki.fi>
parents:
80
diff
changeset
|
14 | logger=logging.getLogger(__name__) |
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
15 | |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
16 | _dreamtime_monitor=None |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
17 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
18 | # |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
19 | # Support classes for dealing with different times |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
20 | # |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
21 | |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
22 | # Time snapshotting to helps to create stable comparisons of different |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
23 | # subclasses of Time. |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
24 | class Snapshot: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
25 | def __init__(self): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
26 | self._monotonic=None |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
27 | self._realtime=None |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
28 | self._dreamtime=None |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
29 | |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
30 | def monotonic(self): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
31 | if self._monotonic is None: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
32 | self._monotonic=time.monotonic() |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
33 | return self._monotonic |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
34 | |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
35 | def realtime(self): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
36 | if self._realtime is None: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
37 | self._realtime=time.time() |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
38 | return self._realtime |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
39 | |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
40 | def dreamtime(self): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
41 | if self._dreamtime is None: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
42 | if _dreamtime_monitor: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
43 | self._dreamtime=_dreamtime_monitor.dreamtime(snapshot=self) |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
44 | else: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
45 | self._dreamtime=self.monotonic() |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
46 | return self._dreamtime |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
47 | |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
48 | # The main Time class, for time advancing in various paces |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
49 | class Time: |
97 | 50 | def __init__(self, when): |
51 | self._value=when | |
52 | ||
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
53 | def _monotonic(self, snapshot): |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
54 | raise NotImplementedError |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
55 | |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
56 | def _realtime(self, snapshot): |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
57 | raise NotImplementedError |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
58 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
59 | @staticmethod |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
60 | def _now(snapshot): |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
61 | raise NotImplementedError |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
62 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
63 | @classmethod |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
64 | def now(cls): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
65 | return cls(cls._now(Snapshot())) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
66 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
67 | @classmethod |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
68 | def from_realtime(cls, realtime, snapshot=Snapshot()): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
69 | return cls(realtime-snapshot.realtime()+cls._now(snapshot)) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
70 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
71 | @classmethod |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
72 | def from_monotonic(cls, monotonic, snapshot=Snapshot()): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
73 | return cls(monotonic-snapshot.monotonic()+cls._now(snapshot)) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
74 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
75 | @classmethod |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
76 | def after(cls, seconds, snapshot=Snapshot()): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
77 | return cls(cls._now(snapshot)+seconds) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
78 | |
97 | 79 | @classmethod |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
80 | def after_other(cls, other, seconds, snapshot=Snapshot()): |
97 | 81 | if isinstance(other, cls): |
82 | return cls(other._value+seconds) | |
83 | else: | |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
84 | return cls.from_monotonic(other._monotonic(snapshot)+seconds, |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
85 | snapshot) |
97 | 86 | |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
87 | def datetime(self): |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
88 | return datetime.datetime.fromtimestamp(self.realtime()) |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
89 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
90 | def seconds_to(self): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
91 | return self._value-self._now(Snapshot()) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
92 | |
97 | 93 | def isoformat(self): |
94 | return self.datetime().isoformat() | |
95 | ||
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
96 | def realtime(self): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
97 | return self._realtime(Snapshot()) |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
98 | |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
99 | def monotonic(self): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
100 | return self._monotonic(Snapshot()) |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
101 | |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
102 | def __compare(self, other, fn): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
103 | if isinstance(other, self.__class__): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
104 | return fn(self._value, other._value) |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
105 | else: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
106 | snapshot=Snapshot() |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
107 | return fn(self._monotonic(snapshot), other._monotonic(snapshot)) |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
108 | |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
109 | def __lt__(self, other): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
110 | return self.__compare(other, lambda x, y: x < y) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
111 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
112 | def __gt__(self, other): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
113 | return self.__compare(other, lambda x, y: x > y) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
114 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
115 | def __le__(self, other): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
116 | return self.__compare(other, lambda x, y: x <= y) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
117 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
118 | def __ge__(self, other): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
119 | return self.__compare(other, lambda x, y: x >= y) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
120 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
121 | def __eq__(self, other): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
122 | return self.__compare(other, lambda x, y: x == y) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
123 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
124 | class RealTime(Time): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
125 | def _realtime(self, snapshot): |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
126 | return self._value |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
127 | |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
128 | def _monotonic(self, snapshot): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
129 | return self._value+(snapshot.monotonic()-snapshot.realtime()) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
130 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
131 | @staticmethod |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
132 | def _now(snapshot): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
133 | return snapshot.realtime() |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
134 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
135 | class MonotonicTime(Time): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
136 | def _realtime(self, snapshot): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
137 | return self._value+(snapshot.realtime()-snapshot.monotonic()) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
138 | |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
139 | def _monotonic(self, snapshot): |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
140 | return self._value |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
141 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
142 | @staticmethod |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
143 | def _now(snapshot): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
144 | return snapshot.monotonic() |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
145 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
146 | class DreamTime(Time): |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
147 | def _realtime(self, snapshot): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
148 | return self._value+(snapshot.realtime()-snapshot.dreamtime()) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
149 | |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
150 | # Important: monotonic is "static" within a wakeup period |
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
151 | # and does not need to call time.monotonic(), as it gets compared |
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
152 | # to a specific time.monotonic() realisation |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
153 | def _monotonic(self, snapshot): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
154 | return self._value+(snapshot.monotonic()-snapshot.dreamtime()) |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
155 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
156 | @staticmethod |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
157 | def _now(snapshot): |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
158 | return snapshot.dreamtime() |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
159 | |
97 | 160 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
161 | if platform.system()=='Darwin': |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
162 | |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
163 | import Foundation |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
164 | import AppKit |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
165 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
166 | # |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
167 | # Wake up / sleep handling |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
168 | # |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
169 | |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
170 | class SleepHandler(Foundation.NSObject): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
171 | """ Handle wake/sleep notifications """ |
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
172 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
173 | def init(self): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
174 | self.__sleeptime=None |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
175 | self.__slept=0 |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
176 | self.__epoch=time.monotonic() |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
177 | self.__lock=threading.Lock() |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
178 | self.__callbacks=weakref.WeakKeyDictionary() |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
179 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
180 | return self |
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
181 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
182 | def handleSleepNotification_(self, aNotification): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
183 | logger.info("System going to sleep") |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
184 | now=time.monotonic() |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
185 | with self.__lock: |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
186 | self.__sleeptime=now |
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
187 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
188 | def handleWakeNotification_(self, aNotification): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
189 | logger.info("System waking up from sleep") |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
190 | try: |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
191 | now=time.monotonic() |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
192 | with self.__lock: |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
193 | if self.__sleeptime: |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
194 | slept=max(0, now-self.__sleeptime) |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
195 | logger.info("Slept %f seconds" % slept) |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
196 | self.__slept=self.__slept+slept |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
197 | self.__sleeptime=None |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
198 | callbacks=self.__callbacks.copy() |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
199 | except: |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
200 | logger.exception("Bug in wakeup handler") |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
201 | |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
202 | for callback in callbacks.values(): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
203 | try: |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
204 | callback() |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
205 | except Exception: |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
206 | logger.exception("Error in wake notification callback") |
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
207 | |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
208 | # Return dreamtime |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
209 | def dreamtime(self, snapshot=Snapshot()): |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
210 | with self.__lock: |
100
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
211 | # macOS "sleep" signals / status are complete bollocks: at least |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
212 | # when plugged in, the system is actually sometimes running all |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
213 | # night with the lid closed and sleepNotification delivered. |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
214 | # Therefore, we need our timers to work in a sane manner when |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
215 | # we should be sleeping! |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
216 | if self.__sleeptime is not None: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
217 | now_monotonic=self.__sleeptime |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
218 | else: |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
219 | now_monotonic=snapshot.monotonic() |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
220 | now_dreamtime=max(0, now_monotonic-self.__epoch-self.__slept) |
b141bed9e718
macOS "sleep" signals / status are complete bollocks:
Tuomo Valkonen <tuomov@iki.fi>
parents:
97
diff
changeset
|
221 | return now_dreamtime |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
222 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
223 | # Weirdo (Py)ObjC naming to stop it form choking up |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
224 | def addForObj_aCallback_(self, obj, callback): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
225 | with self.__lock: |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
226 | self.__callbacks[obj]=callback |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
227 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
228 | # obj is to use a a key in a weak key dictionary |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
229 | def add_callback(obj, callback): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
230 | global _dreamtime_monitor |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
231 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
232 | monitor=_dreamtime_monitor |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
233 | if not monitor: |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
234 | raise Exception("Dreamtime monitor not started") |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
235 | else: |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
236 | monitor.addForObj_aCallback_(obj, callback) |
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
237 | |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
238 | def start_monitoring(): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
239 | global _dreamtime_monitor |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
240 | |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
241 | logger.debug("Starting to monitor system sleep") |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
242 | workspace = AppKit.NSWorkspace.sharedWorkspace() |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
243 | notification_center = workspace.notificationCenter() |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
244 | _dreamtime_monitor = SleepHandler.new() |
68
72f821e17123
Added basic sleep/wake detection code for MacOS
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff
changeset
|
245 | |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
246 | notification_center.addObserver_selector_name_object_( |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
247 | _dreamtime_monitor, |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
248 | "handleSleepNotification:", |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
249 | AppKit.NSWorkspaceWillSleepNotification, |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
250 | None) |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
251 | |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
252 | notification_center.addObserver_selector_name_object_( |
77
e8773133bf79
DreamTime.monotonic() no longer needs to call time.monotonic()
Tuomo Valkonen <tuomov@iki.fi>
parents:
76
diff
changeset
|
253 | _dreamtime_monitor, |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
254 | "handleWakeNotification:", |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
255 | AppKit.NSWorkspaceDidWakeNotification, |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
256 | None) |
94
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
257 | |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
258 | else: # Not on macOS |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
259 | |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
260 | def add_callback(obj, callback): |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
261 | pass |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
262 | |
2a11fd29c192
Make dreamtime module not throw up on non-macOS systems
Tuomo Valkonen <tuomov@iki.fi>
parents:
89
diff
changeset
|
263 | def start_monitoring(): |
76
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
264 | logger.warning(("No system sleep monitor implemented for '%s'" |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
265 | % platform.system())) |
4b08fca3ce34
Dreamtime scheduling: discount system sleep periods
Tuomo Valkonen <tuomov@iki.fi>
parents:
69
diff
changeset
|
266 |