Parrot-Developers/olympe

Eventlistener: cannot subscribe/unsubscribe twice

Closed this issue · 1 comments

Hello,

I'm facing an issue with one of my olympe.Eventlistener derived class.
I'm able to subscribe to events, then unsubscribe, subscribe again but when I call the unsubscribe function for the second time, an exception occurs:

File "...../.pyenv/versions/dr0n3_3.6.9/lib/python3.6/site-packages/olympe/arsdkng/expectations.py", line 305, in unsubscribe
self._attr.default.subscribers.remove(subscriber)
ValueError: list.remove(x): x not in list

I've edited the "main" function of the sample code from src/olympe/doc/examples/listener.py in order to reproduce the bug:

if __name__ == "__main__":
    drone = olympe.Drone(DRONE_IP)
    # Explicit subscription to every event
    every_event_listener = EveryEventListener(drone)
    every_event_listener.subscribe()
    drone.connect()
    every_event_listener.unsubscribe()
    time.sleep(3)
    every_event_listener.subscribe()
    time.sleep(3)
    every_event_listener.unsubscribe() # The exception occurs here
    drone.disconnect()

This has been fixed in the 7.X release series.