# Copyright 2024 (c) Anna Schumaker. """Our ListenBrainz operation priority queue.""" class Queue: """A queue for prioritizing ListenBrainz operations.""" def __init__(self): """Initialize the task Queue.""" self._set_token = None self._now_playing = None def clear(self, op: str) -> None: """Clear a pending operation.""" match op: case "clear-token" | "set-token": self._set_token = None case "now-playing": self._now_playing = None def push(self, op: str, *args) -> None: """Push an operation onto the queue.""" match op: case "clear-token" | "set-token": self._set_token = (op, *args) case "now-playing": self._now_playing = (op, *args) def pop(self) -> tuple: """Pop an operation off the queue.""" if (res := self._set_token) is not None: self._set_token = None elif (res := self._now_playing) is not None: self._now_playing = None return res