Files
mopidy-radionet/venv/lib/python3.7/site-packages/mopidy/internal/deprecation.py
2020-01-18 20:01:00 +01:00

53 lines
1.6 KiB
Python

import contextlib
import re
import warnings
# Messages used in deprecation warnings are collected here so we can target
# them easily when ignoring warnings.
_MESSAGES = {
# Deprecated features in core playback:
"core.playback.play:tl_track_kwargs": (
'playback.play() with "tl_track" argument is pending deprecation use '
'"tlid" instead'
),
# Deprecated features in core tracklist:
"core.tracklist.add:tracks_arg": (
'tracklist.add() "tracks" argument is deprecated'
),
"core.tracklist.eot_track": (
"tracklist.eot_track() is pending deprecation, use "
"tracklist.get_eot_tlid()"
),
"core.tracklist.next_track": (
"tracklist.next_track() is pending deprecation, use "
"tracklist.get_next_tlid()"
),
"core.tracklist.previous_track": (
"tracklist.previous_track() is pending deprecation, use "
"tracklist.get_previous_tlid()"
),
}
def warn(msg_id, pending=False):
if pending:
category = PendingDeprecationWarning
else:
category = DeprecationWarning
warnings.warn(_MESSAGES.get(msg_id, msg_id), category)
@contextlib.contextmanager
def ignore(ids=None):
with warnings.catch_warnings():
if isinstance(ids, str):
ids = [ids]
if ids:
for msg_id in ids:
msg = re.escape(_MESSAGES.get(msg_id, msg_id))
warnings.filterwarnings("ignore", msg, DeprecationWarning)
else:
warnings.filterwarnings("ignore", category=DeprecationWarning)
yield