Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Provides the constants needed for component."""
2 
3 from enum import IntFlag, StrEnum
4 from functools import partial
5 
7  DeprecatedConstantEnum,
8  all_with_deprecated_constants,
9  check_if_deprecated_constant,
10  dir_with_deprecated_constants,
11 )
12 
13 # How long our auth signature on the content should be valid for
14 CONTENT_AUTH_EXPIRY_TIME = 3600 * 24
15 
16 ATTR_APP_ID = "app_id"
17 ATTR_APP_NAME = "app_name"
18 ATTR_ENTITY_PICTURE_LOCAL = "entity_picture_local"
19 ATTR_GROUP_MEMBERS = "group_members"
20 ATTR_INPUT_SOURCE = "source"
21 ATTR_INPUT_SOURCE_LIST = "source_list"
22 ATTR_MEDIA_ANNOUNCE = "announce"
23 ATTR_MEDIA_ALBUM_ARTIST = "media_album_artist"
24 ATTR_MEDIA_ALBUM_NAME = "media_album_name"
25 ATTR_MEDIA_ARTIST = "media_artist"
26 ATTR_MEDIA_CHANNEL = "media_channel"
27 ATTR_MEDIA_CONTENT_ID = "media_content_id"
28 ATTR_MEDIA_CONTENT_TYPE = "media_content_type"
29 ATTR_MEDIA_DURATION = "media_duration"
30 ATTR_MEDIA_ENQUEUE = "enqueue"
31 ATTR_MEDIA_EXTRA = "extra"
32 ATTR_MEDIA_EPISODE = "media_episode"
33 ATTR_MEDIA_PLAYLIST = "media_playlist"
34 ATTR_MEDIA_POSITION = "media_position"
35 ATTR_MEDIA_POSITION_UPDATED_AT = "media_position_updated_at"
36 ATTR_MEDIA_REPEAT = "repeat"
37 ATTR_MEDIA_SEASON = "media_season"
38 ATTR_MEDIA_SEEK_POSITION = "seek_position"
39 ATTR_MEDIA_SERIES_TITLE = "media_series_title"
40 ATTR_MEDIA_SHUFFLE = "shuffle"
41 ATTR_MEDIA_TITLE = "media_title"
42 ATTR_MEDIA_TRACK = "media_track"
43 ATTR_MEDIA_VOLUME_LEVEL = "volume_level"
44 ATTR_MEDIA_VOLUME_MUTED = "is_volume_muted"
45 ATTR_SOUND_MODE = "sound_mode"
46 ATTR_SOUND_MODE_LIST = "sound_mode_list"
47 
48 DOMAIN = "media_player"
49 
50 
51 class MediaPlayerState(StrEnum):
52  """State of media player entities."""
53 
54  OFF = "off"
55  ON = "on"
56  IDLE = "idle"
57  PLAYING = "playing"
58  PAUSED = "paused"
59  STANDBY = "standby"
60  BUFFERING = "buffering"
61 
62 
63 class MediaClass(StrEnum):
64  """Media class for media player entities."""
65 
66  ALBUM = "album"
67  APP = "app"
68  ARTIST = "artist"
69  CHANNEL = "channel"
70  COMPOSER = "composer"
71  CONTRIBUTING_ARTIST = "contributing_artist"
72  DIRECTORY = "directory"
73  EPISODE = "episode"
74  GAME = "game"
75  GENRE = "genre"
76  IMAGE = "image"
77  MOVIE = "movie"
78  MUSIC = "music"
79  PLAYLIST = "playlist"
80  PODCAST = "podcast"
81  SEASON = "season"
82  TRACK = "track"
83  TV_SHOW = "tv_show"
84  URL = "url"
85  VIDEO = "video"
86 
87 
88 # These MEDIA_CLASS_* constants are deprecated as of Home Assistant 2022.10.
89 # Please use the MediaClass enum instead.
90 _DEPRECATED_MEDIA_CLASS_ALBUM = DeprecatedConstantEnum(MediaClass.ALBUM, "2025.10")
91 _DEPRECATED_MEDIA_CLASS_APP = DeprecatedConstantEnum(MediaClass.APP, "2025.10")
92 _DEPRECATED_MEDIA_CLASS_ARTIST = DeprecatedConstantEnum(MediaClass.ARTIST, "2025.10")
93 _DEPRECATED_MEDIA_CLASS_CHANNEL = DeprecatedConstantEnum(MediaClass.CHANNEL, "2025.10")
94 _DEPRECATED_MEDIA_CLASS_COMPOSER = DeprecatedConstantEnum(
95  MediaClass.COMPOSER, "2025.10"
96 )
97 _DEPRECATED_MEDIA_CLASS_CONTRIBUTING_ARTIST = DeprecatedConstantEnum(
98  MediaClass.CONTRIBUTING_ARTIST, "2025.10"
99 )
100 _DEPRECATED_MEDIA_CLASS_DIRECTORY = DeprecatedConstantEnum(
101  MediaClass.DIRECTORY, "2025.10"
102 )
103 _DEPRECATED_MEDIA_CLASS_EPISODE = DeprecatedConstantEnum(MediaClass.EPISODE, "2025.10")
104 _DEPRECATED_MEDIA_CLASS_GAME = DeprecatedConstantEnum(MediaClass.GAME, "2025.10")
105 _DEPRECATED_MEDIA_CLASS_GENRE = DeprecatedConstantEnum(MediaClass.GENRE, "2025.10")
106 _DEPRECATED_MEDIA_CLASS_IMAGE = DeprecatedConstantEnum(MediaClass.IMAGE, "2025.10")
107 _DEPRECATED_MEDIA_CLASS_MOVIE = DeprecatedConstantEnum(MediaClass.MOVIE, "2025.10")
108 _DEPRECATED_MEDIA_CLASS_MUSIC = DeprecatedConstantEnum(MediaClass.MUSIC, "2025.10")
109 _DEPRECATED_MEDIA_CLASS_PLAYLIST = DeprecatedConstantEnum(
110  MediaClass.PLAYLIST, "2025.10"
111 )
112 _DEPRECATED_MEDIA_CLASS_PODCAST = DeprecatedConstantEnum(MediaClass.PODCAST, "2025.10")
113 _DEPRECATED_MEDIA_CLASS_SEASON = DeprecatedConstantEnum(MediaClass.SEASON, "2025.10")
114 _DEPRECATED_MEDIA_CLASS_TRACK = DeprecatedConstantEnum(MediaClass.TRACK, "2025.10")
115 _DEPRECATED_MEDIA_CLASS_TV_SHOW = DeprecatedConstantEnum(MediaClass.TV_SHOW, "2025.10")
116 _DEPRECATED_MEDIA_CLASS_URL = DeprecatedConstantEnum(MediaClass.URL, "2025.10")
117 _DEPRECATED_MEDIA_CLASS_VIDEO = DeprecatedConstantEnum(MediaClass.VIDEO, "2025.10")
118 
119 
120 class MediaType(StrEnum):
121  """Media type for media player entities."""
122 
123  ALBUM = "album"
124  APP = "app"
125  APPS = "apps"
126  ARTIST = "artist"
127  CHANNEL = "channel"
128  CHANNELS = "channels"
129  COMPOSER = "composer"
130  CONTRIBUTING_ARTIST = "contributing_artist"
131  EPISODE = "episode"
132  GAME = "game"
133  GENRE = "genre"
134  IMAGE = "image"
135  MOVIE = "movie"
136  MUSIC = "music"
137  PLAYLIST = "playlist"
138  PODCAST = "podcast"
139  SEASON = "season"
140  TRACK = "track"
141  TVSHOW = "tvshow"
142  URL = "url"
143  VIDEO = "video"
144 
145 
146 # These MEDIA_TYPE_* constants are deprecated as of Home Assistant 2022.10.
147 # Please use the MediaType enum instead.
148 _DEPRECATED_MEDIA_TYPE_ALBUM = DeprecatedConstantEnum(MediaType.ALBUM, "2025.10")
149 _DEPRECATED_MEDIA_TYPE_APP = DeprecatedConstantEnum(MediaType.APP, "2025.10")
150 _DEPRECATED_MEDIA_TYPE_APPS = DeprecatedConstantEnum(MediaType.APPS, "2025.10")
151 _DEPRECATED_MEDIA_TYPE_ARTIST = DeprecatedConstantEnum(MediaType.ARTIST, "2025.10")
152 _DEPRECATED_MEDIA_TYPE_CHANNEL = DeprecatedConstantEnum(MediaType.CHANNEL, "2025.10")
153 _DEPRECATED_MEDIA_TYPE_CHANNELS = DeprecatedConstantEnum(MediaType.CHANNELS, "2025.10")
154 _DEPRECATED_MEDIA_TYPE_COMPOSER = DeprecatedConstantEnum(MediaType.COMPOSER, "2025.10")
155 _DEPRECATED_MEDIA_TYPE_CONTRIBUTING_ARTIST = DeprecatedConstantEnum(
156  MediaType.CONTRIBUTING_ARTIST, "2025.10"
157 )
158 _DEPRECATED_MEDIA_TYPE_EPISODE = DeprecatedConstantEnum(MediaType.EPISODE, "2025.10")
159 _DEPRECATED_MEDIA_TYPE_GAME = DeprecatedConstantEnum(MediaType.GAME, "2025.10")
160 _DEPRECATED_MEDIA_TYPE_GENRE = DeprecatedConstantEnum(MediaType.GENRE, "2025.10")
161 _DEPRECATED_MEDIA_TYPE_IMAGE = DeprecatedConstantEnum(MediaType.IMAGE, "2025.10")
162 _DEPRECATED_MEDIA_TYPE_MOVIE = DeprecatedConstantEnum(MediaType.MOVIE, "2025.10")
163 _DEPRECATED_MEDIA_TYPE_MUSIC = DeprecatedConstantEnum(MediaType.MUSIC, "2025.10")
164 _DEPRECATED_MEDIA_TYPE_PLAYLIST = DeprecatedConstantEnum(MediaType.PLAYLIST, "2025.10")
165 _DEPRECATED_MEDIA_TYPE_PODCAST = DeprecatedConstantEnum(MediaType.PODCAST, "2025.10")
166 _DEPRECATED_MEDIA_TYPE_SEASON = DeprecatedConstantEnum(MediaType.SEASON, "2025.10")
167 _DEPRECATED_MEDIA_TYPE_TRACK = DeprecatedConstantEnum(MediaType.TRACK, "2025.10")
168 _DEPRECATED_MEDIA_TYPE_TVSHOW = DeprecatedConstantEnum(MediaType.TVSHOW, "2025.10")
169 _DEPRECATED_MEDIA_TYPE_URL = DeprecatedConstantEnum(MediaType.URL, "2025.10")
170 _DEPRECATED_MEDIA_TYPE_VIDEO = DeprecatedConstantEnum(MediaType.VIDEO, "2025.10")
171 
172 
173 SERVICE_CLEAR_PLAYLIST = "clear_playlist"
174 SERVICE_JOIN = "join"
175 SERVICE_PLAY_MEDIA = "play_media"
176 SERVICE_SELECT_SOUND_MODE = "select_sound_mode"
177 SERVICE_SELECT_SOURCE = "select_source"
178 SERVICE_UNJOIN = "unjoin"
179 
180 
181 class RepeatMode(StrEnum):
182  """Repeat mode for media player entities."""
183 
184  ALL = "all"
185  OFF = "off"
186  ONE = "one"
187 
188 
189 # These REPEAT_MODE_* constants are deprecated as of Home Assistant 2022.10.
190 # Please use the RepeatMode enum instead.
191 _DEPRECATED_REPEAT_MODE_ALL = DeprecatedConstantEnum(RepeatMode.ALL, "2025.10")
192 _DEPRECATED_REPEAT_MODE_OFF = DeprecatedConstantEnum(RepeatMode.OFF, "2025.10")
193 _DEPRECATED_REPEAT_MODE_ONE = DeprecatedConstantEnum(RepeatMode.ONE, "2025.10")
194 REPEAT_MODES = [cls.value for cls in RepeatMode]
195 
196 
198  """Supported features of the media player entity."""
199 
200  PAUSE = 1
201  SEEK = 2
202  VOLUME_SET = 4
203  VOLUME_MUTE = 8
204  PREVIOUS_TRACK = 16
205  NEXT_TRACK = 32
206 
207  TURN_ON = 128
208  TURN_OFF = 256
209  PLAY_MEDIA = 512
210  VOLUME_STEP = 1024
211  SELECT_SOURCE = 2048
212  STOP = 4096
213  CLEAR_PLAYLIST = 8192
214  PLAY = 16384
215  SHUFFLE_SET = 32768
216  SELECT_SOUND_MODE = 65536
217  BROWSE_MEDIA = 131072
218  REPEAT_SET = 262144
219  GROUPING = 524288
220  MEDIA_ANNOUNCE = 1048576
221  MEDIA_ENQUEUE = 2097152
222 
223 
224 # These SUPPORT_* constants are deprecated as of Home Assistant 2022.5.
225 # Please use the MediaPlayerEntityFeature enum instead.
226 _DEPRECATED_SUPPORT_PAUSE = DeprecatedConstantEnum(
227  MediaPlayerEntityFeature.PAUSE, "2025.10"
228 )
229 _DEPRECATED_SUPPORT_SEEK = DeprecatedConstantEnum(
230  MediaPlayerEntityFeature.SEEK, "2025.10"
231 )
232 _DEPRECATED_SUPPORT_VOLUME_SET = DeprecatedConstantEnum(
233  MediaPlayerEntityFeature.VOLUME_SET, "2025.10"
234 )
235 _DEPRECATED_SUPPORT_VOLUME_MUTE = DeprecatedConstantEnum(
236  MediaPlayerEntityFeature.VOLUME_MUTE, "2025.10"
237 )
238 _DEPRECATED_SUPPORT_PREVIOUS_TRACK = DeprecatedConstantEnum(
239  MediaPlayerEntityFeature.PREVIOUS_TRACK, "2025.10"
240 )
241 _DEPRECATED_SUPPORT_NEXT_TRACK = DeprecatedConstantEnum(
242  MediaPlayerEntityFeature.NEXT_TRACK, "2025.10"
243 )
244 _DEPRECATED_SUPPORT_TURN_ON = DeprecatedConstantEnum(
245  MediaPlayerEntityFeature.TURN_ON, "2025.10"
246 )
247 _DEPRECATED_SUPPORT_TURN_OFF = DeprecatedConstantEnum(
248  MediaPlayerEntityFeature.TURN_OFF, "2025.10"
249 )
250 _DEPRECATED_SUPPORT_PLAY_MEDIA = DeprecatedConstantEnum(
251  MediaPlayerEntityFeature.PLAY_MEDIA, "2025.10"
252 )
253 _DEPRECATED_SUPPORT_VOLUME_STEP = DeprecatedConstantEnum(
254  MediaPlayerEntityFeature.VOLUME_STEP, "2025.10"
255 )
256 _DEPRECATED_SUPPORT_SELECT_SOURCE = DeprecatedConstantEnum(
257  MediaPlayerEntityFeature.SELECT_SOURCE, "2025.10"
258 )
259 _DEPRECATED_SUPPORT_STOP = DeprecatedConstantEnum(
260  MediaPlayerEntityFeature.STOP, "2025.10"
261 )
262 _DEPRECATED_SUPPORT_CLEAR_PLAYLIST = DeprecatedConstantEnum(
263  MediaPlayerEntityFeature.CLEAR_PLAYLIST, "2025.10"
264 )
265 _DEPRECATED_SUPPORT_PLAY = DeprecatedConstantEnum(
266  MediaPlayerEntityFeature.PLAY, "2025.10"
267 )
268 _DEPRECATED_SUPPORT_SHUFFLE_SET = DeprecatedConstantEnum(
269  MediaPlayerEntityFeature.SHUFFLE_SET, "2025.10"
270 )
271 _DEPRECATED_SUPPORT_SELECT_SOUND_MODE = DeprecatedConstantEnum(
272  MediaPlayerEntityFeature.SELECT_SOUND_MODE, "2025.10"
273 )
274 _DEPRECATED_SUPPORT_BROWSE_MEDIA = DeprecatedConstantEnum(
275  MediaPlayerEntityFeature.BROWSE_MEDIA, "2025.10"
276 )
277 _DEPRECATED_SUPPORT_REPEAT_SET = DeprecatedConstantEnum(
278  MediaPlayerEntityFeature.REPEAT_SET, "2025.10"
279 )
280 _DEPRECATED_SUPPORT_GROUPING = DeprecatedConstantEnum(
281  MediaPlayerEntityFeature.GROUPING, "2025.10"
282 )
283 
284 # These can be removed if no deprecated constant are in this module anymore
285 __getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
286 __dir__ = partial(
287  dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
288 )
289 __all__ = all_with_deprecated_constants(globals())
list[str] all_with_deprecated_constants(dict[str, Any] module_globals)
Definition: deprecation.py:356