1(import [contextlib [contextmanager]])2(require [hy.contrib.walk [let]])34(with-decorator contextmanager5 (defn temp-event [conn name callable]6 (let [e (conn.register-event name callable)]7 (try8 (yield)9 (finally10 (conn.unregister-event e))))))1112(with-decorator contextmanager13 (defn same-property [conn property]14 (setv invoked False)15 (let [handler (fn [_] (setv invoked True))16 id (conn.observe-property property handler)]17 (try18 (while True19 (yield)20 (if invoked21 (setv invoked False)22 (break)))23 (finally (conn.unobserve-property id))))))2425(defn same-song [conn]26 (same-property conn "path"))