artemis-model 0.1.88__py3-none-any.whl → 0.1.89__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ """Redis models."""
2
+
3
+ from .zone_state import ZoneState, NowPlaying, SessionId, BucketId
4
+
5
+ __all__ = ["ZoneState", "NowPlaying", "SessionId", "BucketId"]
@@ -0,0 +1,61 @@
1
+ """Zone state schema."""
2
+
3
+
4
+ from dataclasses import Field
5
+ from typing import Annotated, Literal
6
+
7
+ from pydantic import BaseModel, field_validator
8
+
9
+
10
+ class NowPlaying(BaseModel):
11
+ """Now playing schema."""
12
+
13
+ name: str = Field(description="The name of the track", default="UNKNOWN")
14
+ artist_name: str = Field(description="The artist name of the track", default="UNKNOWN")
15
+ album_name: str = Field(description="The album name of the track", default="UNKNOWN")
16
+
17
+
18
+ SessionId = Annotated[
19
+ int,
20
+ Field(
21
+ description="The session id of the pushed playlist. It's generated as a timestamp value of the current time."
22
+ ),
23
+ ]
24
+ BucketId = Annotated[
25
+ int | None,
26
+ Field(
27
+ description="The bucket id of the pushed playlist. It's calculated in set_bucket_track as the timestamp value of the timeslot."
28
+ ),
29
+ ]
30
+
31
+
32
+
33
+ class ZoneState(BaseModel):
34
+ """Zone state schema."""
35
+
36
+ player_mode: Literal["scheduled", "pushplaylist"] = Field(
37
+ default="scheduled",
38
+ description="The mode of the player",
39
+ )
40
+ player_state: Literal["playing", "paused", "stopped", "ready"] = Field(
41
+ default="ready",
42
+ description="The state of the player",
43
+ )
44
+ now_playing: NowPlaying | None = Field(
45
+ default=None,
46
+ description="The currently playing track",
47
+ )
48
+ push_playlist_details: dict[SessionId, BucketId] | None = Field(
49
+ default_factory=dict,
50
+ description="The details of the pushed playlist",
51
+ )
52
+
53
+ @field_validator("push_playlist_details", mode="before")
54
+ @classmethod
55
+ def default_empty_dict_if_none(cls, v):
56
+ """Override none value to empty dict."""
57
+ return v or {}
58
+
59
+
60
+
61
+ __all__ = ["ZoneState", "NowPlaying", "SessionId", "BucketId"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: artemis-model
3
- Version: 0.1.88
3
+ Version: 0.1.89
4
4
  Summary:
5
5
  Author: Jukeboxy
6
6
  Requires-Python: >=3.10.6,<4.0.0
@@ -12,11 +12,13 @@ artemis_model/organization.py,sha256=hu9jKB2qu57BwN0sUUK13p3tC-Hqw9EghFMqjFP9Pr4
12
12
  artemis_model/otp.py,sha256=TjZ_EHeIedjsLIqyZTtzd0s6Uc-1dleMEV8DhzsW44o,1046
13
13
  artemis_model/permission.py,sha256=sEBRN-bQJl2TNtRJ5LRuySoEbW1lY4DCoyRk0nOM-kY,1503
14
14
  artemis_model/playlist.py,sha256=1mR1FbjeG5ZKzILLd7Mo_fuMplEwN3gPCO-jHvkE1WM,6550
15
+ artemis_model/redis/__init__.py,sha256=EHuVa0Bn3AJ9g__8hm39K8MklmBXBr7HKOMpgno1z8w,152
16
+ artemis_model/redis/zone_state.py,sha256=2Kyzco0SdiFmHrIOg8upeDgNe1M3wk1Nrh4uu4md7NY,1746
15
17
  artemis_model/schedule.py,sha256=pnoKDMlUh28o61I7kZddNYn6z-uqOt_ml1nbWxKVeRM,1722
16
18
  artemis_model/setting.py,sha256=McWbeDZP45km3VSSwP1BgAmmjO4qCL0pTnOmJVAz0WI,1265
17
19
  artemis_model/track.py,sha256=x8BHKDZl9uQmQH6DWpzH-SEsfecLghOBdBT7qXgN3d0,3865
18
20
  artemis_model/user.py,sha256=ZtZVwavSPoQmYM1_MarMULy-DJa2pH482G_G8su0b6c,2211
19
21
  artemis_model/zone.py,sha256=iGRUtzUwKh9LHT3MOfzzg1DnkPBts_ZBzZVTi2EmIgs,2282
20
- artemis_model-0.1.88.dist-info/METADATA,sha256=CtcMNf3EcqwtHKmzSnknrhTUSjlm7fGD12b4iDZVTtQ,3402
21
- artemis_model-0.1.88.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
22
- artemis_model-0.1.88.dist-info/RECORD,,
22
+ artemis_model-0.1.89.dist-info/METADATA,sha256=mkzW6n0T0TuOW03pJc2mD6pQ8ZXNT72NOkHbpSosKQc,3402
23
+ artemis_model-0.1.89.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
24
+ artemis_model-0.1.89.dist-info/RECORD,,