Combine a sequence of locks into a single lock.
(locks: Sequence[Lock])
| 259 | |
| 260 | |
| 261 | def combine_locks(locks: Sequence[Lock]) -> Lock: |
| 262 | """Combine a sequence of locks into a single lock.""" |
| 263 | all_locks: list[Lock] = [] |
| 264 | for lock in locks: |
| 265 | if isinstance(lock, CombinedLock): |
| 266 | all_locks.extend(lock.locks) |
| 267 | elif lock is not None: |
| 268 | all_locks.append(lock) |
| 269 | |
| 270 | num_locks = len(all_locks) |
| 271 | if num_locks > 1: |
| 272 | return CombinedLock(all_locks) |
| 273 | elif num_locks == 1: |
| 274 | return all_locks[0] |
| 275 | else: |
| 276 | return DummyLock() |
| 277 | |
| 278 | |
| 279 | def ensure_lock(lock: Lock | None | Literal[False]) -> Lock: |
no test coverage detected
searching dependent graphs…