diff --git a/CHANGES.md b/CHANGES.md index c0a294fb5..78687306d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,68 @@ # CHANGES +## 0.17.0 Velma (2026-01-21) + +Happy new year! This release brings support for Guide and Control Center +buttons (@henrikwidlund), per-device volume control (@albaintor), and modernized +packaging (@cdce8p). There is also official upport for Python 3.14. As a final +housekeeping item, support for pydantic v1 has been dropped—make sure to have +pydantic 2.x installed. + +**Changes:** + +*Other:* + +``` +0b643bec Add support for Guide and Control Center (#2699) +1ce4dbc9 Modernize packaging (#2734) +dfed887f Added ability to set volume per (connected) device (#2673) +a722f9c3 fix link for `c4-pyatv-remote` +67508775 Add Python 3.14 (#2800) +410d415c Use asyncio.timeout for Python 3.11+ (#2735) +504ddf4c Update stringify_model for Python 3.14 +2a6d8ead Drop support for pydantic v1 +``` + +**All changes:** + +``` +d64a63f4 build(deps): Bump types-protobuf in /requirements +0b643bec Add support for Guide and Control Center (#2699) +1ce4dbc9 Modernize packaging (#2734) +dfed887f Added ability to set volume per (connected) device (#2673) +e418960e build(deps): Bump pylint from 3.3.7 to 4.0.4 in /requirements +9dd16dc7 build(deps): Bump types-requests in /requirements +a722f9c3 fix link for `c4-pyatv-remote` +faf313ff build(deps): Bump mypy-protobuf from 3.6.0 to 3.7.0 in /requirements +5432ae37 build(deps): Bump python from 3.15.0a2-alpine to 3.15.0a5-alpine (#2811) +667c6a7f build(deps): Bump aiohttp from 3.13.2 to 3.13.3 in /requirements +2514da5f build(deps): Bump protobuf from 6.33.0 to 6.33.2 in /requirements +6b9a6324 build(deps): Bump requests from 2.32.4 to 2.32.5 in /requirements +487b1136 build(deps): Bump pytest from 8.4.1 to 9.0.2 in /requirements (#2797) +67508775 Add Python 3.14 (#2800) +410d415c Use asyncio.timeout for Python 3.11+ (#2735) +504ddf4c Update stringify_model for Python 3.14 +2a6d8ead Drop support for pydantic v1 +299f2c03 build(deps): Bump mypy from 1.18.2 to 1.19.0 in /requirements +d205d5b7 build(deps): Bump python from 3.14.1-alpine to 3.15.0a2-alpine +ef434437 build(deps): Bump pydantic from 2.11.7 to 2.12.5 in /requirements +9c1f65f4 build(deps): Bump pyfakefs from 5.10.1 to 5.10.2 in /requirements +965fe67a build(deps): Bump zeroconf from 0.147.0 to 0.148.0 in /requirements +40e84e91 build(deps): Bump python from 3.14.0-alpine to 3.14.1-alpine +fda09e0a build(deps): Bump black from 25.1.0 to 25.11.0 in /requirements +ffcf348b build(deps): Bump tinytag from 2.1.1 to 2.1.2 in /requirements +c6a9b363 build(deps): Bump types-protobuf in /requirements +98fd8145 build(deps): Bump pytest-cov from 6.2.1 to 7.0.0 in /requirements +d06069ac build(deps): Bump protobuf from 6.31.1 to 6.33.0 in /requirements +1aec1c07 build(deps): Bump aiohttp from 3.12.13 to 3.13.2 in /requirements +03a5b901 build(deps): Bump pyfakefs from 5.9.1 to 5.10.1 in /requirements +82cee18f build(deps): Bump cryptography from 45.0.5 to 46.0.3 in /requirements +abe575d0 build(deps): Bump python from 3.13.5-alpine to 3.14.0-alpine +3ad82779 build(deps): Bump mypy from 1.16.1 to 1.18.2 in /requirements +9afe19e2 build(deps): Bump types-protobuf in /requirements +dcbb4d57 build(deps): Bump deepdiff from 8.5.0 to 8.6.1 in /requirements +``` + ## 0.16.1 Uter (2025-07-12) Hey-ho, minor release (finally) that should fix: diff --git a/Dockerfile b/Dockerfile index dad62ccef..875bb9c9e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.15.0a5-alpine +FROM python:3.14.2-alpine ARG VERSION WORKDIR . diff --git a/docs/api/pyatv.const.html b/docs/api/pyatv.const.html index 1fca6d199..a824d8dfb 100644 --- a/docs/api/pyatv.const.html +++ b/docs/api/pyatv.const.html @@ -62,9 +62,11 @@
Fea
ChannelUp
Click
ContentIdentifier
+ControlCenter
Down
EpisodeNumber
Genre
+Guide
Home
HomeHold
LaunchApp
@@ -225,7 +227,7 @@ Module pyatv.const
Constants used in the public API.
-
+
@@ -354,7 +356,7 @@ Class variables
All supported features.
Identifier for Content
var ControlCenter = 68Open the Control Center.
var Down = 1Down button on remote.
Genre of playing song.
var Guide = 66Show EPG.
var Home = 14Home/TV button.
Touch action constants.
var Click = 5The type of the None singleton.
var Hold = 3The type of the None singleton.
var Press = 1The type of the None singleton.
var Release = 4The type of the None singleton.
Audio
AudioListener
@@ -197,6 +198,7 @@
identifier
name
+volume
channel_down
channel_up
+control_center
down
+guide
home
home_hold
left
@@ -346,7 +350,7 @@ Module pyatv.interface
Public interface exposed by library.
This module contains all the interfaces that represents a generic Apple TV device and
all its features.
-
+
@@ -376,18 +380,18 @@ Classes
Information about an app.
Initialize a new App instance.
-
+
Instance variables
var identifier -> str
-
Return a unique bundle id for the app.
-
+
var name -> str | None
-
User friendly name of app.
-
+
@@ -399,7 +403,7 @@ Instance variables
Base class representing an Apple TV.
Listener interface: pyatv.interfaces.DeviceListener
Initialize a new StateProducer instance.
-
+
Ancestors
- abc.ABC
@@ -415,72 +419,72 @@ Instance variables
var apps -> Apps
-
Return apps interface.
-
+
var audio -> Audio
-
Return audio interface.
-
+
var device_info -> DeviceInfo
-
Return API for device information.
-
+
var features -> Features
-
Return features interface.
-
+
var keyboard -> Keyboard
-
Return keyboard interface.
-
+
var metadata -> Metadata
-
Return API for retrieving metadata from the Apple TV.
-
+
var power -> Power
-
Return API for power management.
-
+
var push_updater -> PushUpdater
-
Return API for handling push update from the Apple TV.
-
+
var remote_control -> RemoteControl
-
Return API for controlling the Apple TV.
-
+
var service -> BaseService
-
Return service used to connect to the Apple TV.
-
+
var settings -> Settings
-
Return device settings used by pyatv.
-
+
var stream -> Stream
-
Return API for streaming media.
-
+
var touch -> TouchGestures
-
Return touch gestures interface.
-
+
var user_accounts -> UserAccounts
-
Return user accounts interface.
-
+
Methods
@@ -492,7 +496,7 @@ Methods
-
Close connection and release allocated resources.
-
+
-
@@ -502,7 +506,7 @@ Methods
-
Initiate connection to device.
No need to call it yourself, it's done automatically.
-
+
Base class for app handling.
Fetch a list of apps that can be launched.
@@ -543,7 +547,7 @@ Methods
Supported by: Protocol.Companion
Launch an app based on bundle ID or URL.
-
+
@@ -591,7 +595,7 @@ Instance variables
Volume level is managed in percent where 0 is muted and 100 is max volume.
Listener interface: pyatv.interfaces.AudioListener
Initialize a new StateProducer instance.
-
+
Ancestors
- abc.ABC
@@ -611,13 +615,13 @@ Instance variables
var output_devices -> List[OutputDevice]
-
Return current list of output device IDs.
-
+
var volume -> float
-
Return current volume level.
Range is in percent, i.e. [0.0-100.0].
-
+
Methods
@@ -633,7 +637,7 @@ Methods
Supported by: Protocol.MRP
Add output devices.
-
+
-
@@ -646,7 +650,7 @@ Methods
Supported by: Protocol.MRP
Remove output devices.
-
+
-
@@ -659,11 +663,11 @@ Methods
Supported by: Protocol.MRP
Set output devices.
-
+
-
-async def set_volume(self, level: float) -> None
+async def set_volume(self, level: float, output_device: OutputDevice | None = None) -> None
-
@@ -673,7 +677,7 @@
Methods
Change current volume level.
Range is in percent, i.e. [0.0-100.0].
-
+
-
@@ -690,7 +694,7 @@ Methods
range. It is not necessarily linear.
Call will block until volume change has been acknowledged by the device (when
possible and supported).
-
+
-
@@ -707,7 +711,7 @@ Methods
range. It is not necessarily linear.
Call will block until volume change has been acknowledged by the device (when
possible and supported).
-
+
@@ -716,7 +720,7 @@ Methods
-
Listener interface for audio updates.
-
+
Ancestors
- abc.ABC
@@ -734,7 +738,16 @@ Methods
-
Output devices were updated.
-
+
+
+-
+
+def volume_device_update(self, output_device: OutputDevice, old_level: float, new_level: float) -> None
+
+
+-
+
Output device volume was updated.
+
-
@@ -743,7 +756,7 @@ Methods
-
Device volume was updated.
-
+
@@ -757,7 +770,7 @@ Methods
several services depending on the protocols it supports, e.g. DMAP or
AirPlay.
Initialize a new BaseConfig instance.
-
+
Ancestors
- abc.ABC
@@ -771,47 +784,47 @@ Instance variables
var address -> ipaddress.IPv4Address
-
IP address of device.
-
+
var all_identifiers -> List[str]
-
Return all unique identifiers for this device.
-
+
var deep_sleep -> bool
-
If device is in deep sleep.
-
+
var device_info -> DeviceInfo
-
Return general device information.
-
+
var identifier -> str | None
-
Return the main identifier associated with this device.
-
+
var name -> str
-
Name of device.
-
+
var properties -> Mapping[str, Mapping[str, str]]
-
Return Zeroconf properties.
-
+
var ready -> bool
-
Return if configuration is ready, (at least one service with identifier).
-
+
var services -> List[BaseService]
-
Return all supported services.
-
+
Methods
@@ -824,7 +837,7 @@ Methods
-
Add a new service.
If the service already exists, it will be merged.
-
+
-
@@ -833,7 +846,7 @@ Methods
-
Apply settings to configuration.
-
+
-
@@ -844,7 +857,7 @@ Methods
Look up a service based on protocol.
If a service with the specified protocol is not available, None is
returned.
-
+
-
@@ -853,7 +866,7 @@ Methods
-
Return suggested service used to establish connection.
-
+
-
@@ -862,7 +875,7 @@ Methods
-
Set credentials for a protocol if it exists.
-
+
@@ -963,12 +976,12 @@ Methods
-
General information about device.
Initialize a new DeviceInfo instance.
-
+
Class variables
var OUTPUT_DEVICE_ID
-
-
+
The type of the None singleton.
Instance variables
@@ -976,46 +989,46 @@ Instance variables
var build_number -> str | None
-
Operating system build number, e.g. 17K795.
-
+
var mac -> str | None
-
Device MAC address.
-
+
var model -> DeviceModel
-
Hardware model name, e.g. 3, 4 or 4K.
-
+
var model_str -> str
-
Return model name as string.
This property will return the model name as a string and fallback to raw_model
if it is not available.
-
+
var operating_system -> OperatingSystem
-
Operating system running on device.
-
+
var output_device_id -> str | None
-
Output device identifier.
-
+
var raw_model -> str | None
-
Return raw model description.
If DeviceInfo.model returns DeviceModel.Unknown
then this property contains the raw model string (if any is available).
-
+
var version -> str | None
-
Operating system version.
-
+
@@ -1024,7 +1037,7 @@ Instance variables
-
Listener interface for generic device updates.
-
+
Ancestors
- abc.ABC
@@ -1043,7 +1056,7 @@ Methods
-
Device connection was (intentionally) closed.
-
+
-
@@ -1052,7 +1065,7 @@ Methods
-
Device was unexpectedly disconnected.
-
+
@@ -1086,7 +1099,7 @@ Instance variables
-
Base class for supported feature functionality.
-
+
Subclasses
- pyatv.core.facade.FacadeFeatures
@@ -1105,7 +1118,7 @@ Methods
Return state of all features.
@@ -1114,7 +1127,7 @@ Methods
Return current state of a feature.
@@ -1126,7 +1139,7 @@ Methods
This method will return True if all given features are in the state specified
by "states". If "states" is a list of states, it is enough for the feature to be
in one of the listed states.
-
+
@@ -1139,7 +1152,7 @@ Methods
Listener
interface: pyatv.interfaces.KeyboardListener
Initialize a new StateProducer instance.
-
+
Ancestors
- abc.ABC
@@ -1156,7 +1169,7 @@ Instance variables
var text_focus_state -> KeyboardFocusState
-
Return keyboard focus state.
-
+
Methods
@@ -1172,7 +1185,7 @@ Methods
Supported by: Protocol.Companion
Input text into virtual keyboard.
-
+
-
@@ -1185,7 +1198,7 @@ Methods
Supported by: Protocol.Companion
Clear virtual keyboard text.
-
+
-
@@ -1198,7 +1211,7 @@ Methods
Supported by: Protocol.Companion
Get current virtual keyboard text.
-
+
-
@@ -1211,7 +1224,7 @@ Methods
Supported by: Protocol.Companion
Replace text in virtual keyboard.
-
+
@@ -1220,7 +1233,7 @@ Methods
-
Listener interface for keyboard updates.
-
+
Ancestors
- abc.ABC
@@ -1238,7 +1251,7 @@ Methods
-
Keyboard focus state was updated.
-
+
@@ -1253,23 +1266,23 @@ Instance variables
var album -> str | None
-
-
+
The type of the None singleton.
var artist -> str | None
-
-
+
The type of the None singleton.
var artwork -> bytes | None
-
-
+
The type of the None singleton.
var duration -> float | None
-
-
+
The type of the None singleton.
var title -> str | None
-
-
+
The type of the None singleton.
@@ -1278,7 +1291,7 @@ Instance variables
-
Base class for retrieving metadata from an Apple TV.
-
+
Subclasses
- pyatv.core.facade.FacadeMetadata
@@ -1294,17 +1307,17 @@ Instance variables
Do note that this property returns which app is currently playing something and
not which app is currently active. If nothing is playing, the corresponding
feature will be unavailable.
-
+
var artwork_id -> str
-
Return a unique identifier for current artwork.
-
+
var device_id -> str | None
-
Return a unique identifier for current device.
-
+
Methods
@@ -1325,7 +1338,7 @@ Methods
return artwork of a different size. Set both parameters to None to request
default size. Set one of them and let the other one be None to keep original
aspect ratio.
-
+
-
@@ -1334,29 +1347,30 @@ Methods
-
Return what is currently playing.
-
+
class OutputDevice
-(name: str | None, identifier: str)
+(identifier: str, name: str | None = None, volume: float = 0.0)
-
-
Information about an output device.
-Initialize a new OutputDevice instance.
-
+Information about an output device.
+
Instance variables
var identifier -> str
-
-
Return a unique id for the output device.
-
+The type of the None singleton.
var name -> str | None
-
-
User friendly name of output device.
-
+The type of the None singleton.
+
+var volume -> float
+-
+
The type of the None singleton.
@@ -1445,7 +1459,7 @@ Methods
-
Base class for retrieving what is currently playing.
Initialize a new Playing instance.
-
+
Ancestors
- abc.ABC
@@ -1455,84 +1469,84 @@ Instance variables
var album -> str | None
-
Album of the currently playing song.
-
+
var artist -> str | None
-
Artist of the currently playing song.
-
+
var content_identifier -> str | None
-
Content identifier (app specific).
-
+
var device_state -> DeviceState
-
Device state, e.g. playing or paused.
-
+
var episode_number -> int | None
-
Episode number of TV series.
-
+
var genre -> str | None
-
Genre of the currently playing song.
-
+
var hash -> str
-
Create a unique hash for what is currently playing.
The hash is based on title, artist, album and total time. It should
always be the same for the same content, but it is not guaranteed.
-
+
var itunes_store_identifier -> int | None
-
Itunes Store identifier.
-
+
var media_type -> MediaType
-
Type of media is currently playing, e.g. video, music.
-
+
var position -> int | None
-
Position in the playing media (seconds).
-
+
var repeat -> RepeatState | None
-
Repeat mode.
-
+
var season_number -> int | None
-
Season number of TV series.
-
+
var series_name -> str | None
-
Title of TV series.
-
+
var shuffle -> ShuffleState | None
-
If shuffle is enabled or not.
-
+
var title -> str | None
-
Title of the current media, e.g. movie or song name.
-
+
var total_time -> int | None
-
Total play time in seconds.
-
+
@@ -1544,7 +1558,7 @@ Instance variables
Base class for retrieving power state from an Apple TV.
Listener interface: pyatv.interfaces.PowerListener
Initialize a new StateProducer instance.
-
+
Ancestors
- abc.ABC
@@ -1562,7 +1576,7 @@ Instance variables
var power_state -> PowerState
-
Return device power state.
-
+
Methods
@@ -1578,7 +1592,7 @@ Methods
Supported by: Protocol.Companion, Protocol.MRP
Turn device off.
-
+
-
@@ -1591,7 +1605,7 @@ Methods
Supported by: Protocol.Companion, Protocol.MRP
Turn device on.
-
+
@@ -1600,7 +1614,7 @@ Methods
-
Listener interface for power updates.
-
+
Ancestors
- abc.ABC
@@ -1620,7 +1634,7 @@ Methods
Device power state was updated.
Listener interface for push updates.
Inform about an error when updating play status.
@@ -1658,7 +1672,7 @@ Methods
Inform about changes to what is currently playing.
Listener interface: PushListener.
Initialize a new StateProducer instance.
- +var active -> boolReturn if push updater has been started.
Begin to listen to updates.
If an error occurs, start must be called again.
@@ -1715,7 +1729,7 @@ Methods
No longer forward updates to listener.
Base class for API used to control an Apple TV.
Select next channel.
+async def control_center(self) -> None
+
+Open the control center.
async def down(self, action: InputAction = InputAction.SingleTap) -> None
@@ -1775,6 +1802,19 @@ Methods
Press key down.
+-
+
+async def guide(self) -> None
+
+
+-
+
+Feature: FeatureName.Guide,
+Supported by: Protocol.Companion
+
+
Show EPG.
+
+
-
async def home(self, action: InputAction = InputAction.SingleTap) -> None
@@ -2102,7 +2142,7 @@ Methods
-
Base class for storage modules.
-
+
Ancestors
- abc.ABC
@@ -2116,7 +2156,7 @@ Instance variables
var settings -> Sequence[Settings]
-
Return settings for all devices.
-
+
Methods
@@ -2133,7 +2173,7 @@ Methods
If no settings exists for the current configuration, new settings are created
automatically and returned. If the configuration does not contain any valid
identitiers, DeviceIdMissingError will be raised.
-
+
-
@@ -2142,7 +2182,7 @@ Methods
-
Load settings from active storage.
-
+
-
@@ -2152,7 +2192,7 @@ Methods
-
Remove settings from storage.
Returns True if settings were removed, otherwise False.
-
+
-
@@ -2161,7 +2201,7 @@ Methods
-
Save settings to active storage.
-
+
-
@@ -2172,7 +2212,7 @@ Methods
Update settings based on config.
This method extracts settings from a configuration and writes them back to
the storage.
-
+
@@ -2181,7 +2221,7 @@ Methods
-
Base class for stream functionality.
-
+
Subclasses
- pyatv.core.facade.FacadeStream
@@ -2197,7 +2237,7 @@ Methods
-
Close connection and release allocated resources.
-
+
-
@@ -2210,7 +2250,7 @@ Methods
Supported by: Protocol.AirPlay
Play media from an URL on the device.
-
+
-
@@ -2225,7 +2265,7 @@ Methods
Stream local or remote file to device.
Supports either local file paths or a HTTP(s) address.
INCUBATING METHOD - MIGHT CHANGE IN THE FUTURE!
-
+
@@ -2234,7 +2274,7 @@ Methods
-
Base class for touch gestures.
-
+
Ancestors
- abc.ABC
@@ -2260,7 +2300,7 @@ Methods
:param x: x coordinate
:param y: y coordinate
:param mode: touch mode (1: press, 3: hold, 4: release)
-
+
-
@@ -2274,7 +2314,7 @@ Methods
Send a touch click.
:param action: action mode single tap (0), double tap (1), or hold (2)
-
+
-
@@ -2294,7 +2334,7 @@ Methods
:param end_x: End x coordinate
:param end_y: Endi x coordinate
:param duration_ms: Time in milliseconds to reach the end coordinates
-
+
@@ -2305,18 +2345,18 @@ Methods
-
Information about a user account.
Initialize a new UserAccount instance.
-
+
Instance variables
var identifier -> str
-
Return a unique id for the account.
-
+
var name -> str | None
-
User name.
-
+
@@ -2325,7 +2365,7 @@ Instance variables
-
Base class for account handling.
-
+
Subclasses
- pyatv.core.facade.FacadeUserAccounts
@@ -2344,7 +2384,7 @@ Methods
Supported by: Protocol.Companion
Fetch a list of user accounts that can be switched.
-
+
-
@@ -2357,7 +2397,7 @@ Methods
Supported by: Protocol.Companion
Switch user account by account ID.
-
+
diff --git a/docs/api/pyatv.settings.html b/docs/api/pyatv.settings.html
index 63b53fe7a..372a2f244 100644
--- a/docs/api/pyatv.settings.html
+++ b/docs/api/pyatv.settings.html
@@ -136,30 +136,31 @@ Classes
-
Settings related to AirPlay.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
-var credentials -> str | None
+var credentials -> str | None = None
-
-
+
The type of the None singleton.
-var identifier -> str | None
+var identifier -> str | None = None
-
-
+
The type of the None singleton.
-var mrp_tunnel -> MrpTunnel
+var mrp_tunnel -> MrpTunnel = MrpTunnel.Auto
-
-
+
The type of the None singleton.
-var password -> str | None
+var password -> str | None = None
-
-
+
The type of the None singleton.
@@ -198,22 +199,23 @@ Class variables
-
Settings related to Companion.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
-var credentials -> str | None
+var credentials -> str | None = None
-
-
+
The type of the None singleton.
-var identifier -> str | None
+var identifier -> str | None = None
-
-
+
The type of the None singleton.
@@ -224,22 +226,23 @@ Class variables
-
Settings related to DMAP.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
-var credentials -> str | None
+var credentials -> str | None = None
-
-
+
The type of the None singleton.
-var identifier -> str | None
+var identifier -> str | None = None
-
-
+
The type of the None singleton.
@@ -250,46 +253,47 @@ Class variables
-
Information related settings.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
-var device_id -> str
+var device_id -> str = FF:70:79:61:74:76
-
-
+
The type of the None singleton.
-var mac -> str
+var mac -> str = 02:70:79:61:74:76
-
-
+
The type of the None singleton.
-var model -> str
+var model -> str = iPhone10,6
-
-
+
The type of the None singleton.
-var name -> str
+var name -> str = pyatv
-
-
+
The type of the None singleton.
-var os_build -> str
+var os_build -> str = 18G82
-
-
+
The type of the None singleton.
-var os_name -> str
+var os_name -> str = iPhone OS
-
-
+
The type of the None singleton.
-var os_version -> str
+var os_version -> str = 14.7.1
-
-
+
The type of the None singleton.
-var rp_id -> str | None
+var rp_id -> str | None = None
-
-
+
The type of the None singleton.
Static methods
@@ -319,22 +323,23 @@ Static methods
-
Settings related to MRP.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
-var credentials -> str | None
+var credentials -> str | None = None
-
-
+
The type of the None singleton.
-var identifier -> str | None
+var identifier -> str | None = None
-
-
+
The type of the None singleton.
@@ -373,34 +378,35 @@ Class variables
-
Container for protocol specific settings.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
var airplay -> AirPlaySettings
-
-
+
The type of the None singleton.
var companion -> CompanionSettings
-
-
+
The type of the None singleton.
var dmap -> DmapSettings
-
-
+
The type of the None singleton.
var mrp -> MrpSettings
-
-
+
The type of the None singleton.
var raop -> RaopSettings
-
-
+
The type of the None singleton.
@@ -411,39 +417,40 @@ Class variables
-
Settings related to RAOP.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
-var control_port -> int
+var control_port -> int = 0
-
Server side (UDP) port used by control server.
Set to 0 to use random free port.
-var credentials -> str | None
+var credentials -> str | None = None
-
-
+
The type of the None singleton.
-var identifier -> str | None
+var identifier -> str | None = None
-
-
+
The type of the None singleton.
-var password -> str | None
+var password -> str | None = None
-
-
+
The type of the None singleton.
-var protocol_version -> AirPlayVersion
+var protocol_version -> AirPlayVersion = AirPlayVersion.Auto
-
Protocol version used.
In reality this corresponds to the AirPlay version used. Set to 0 for automatic
mode (recommended), or 1 or 2 for AirPlay 1 or 2 respectively.
-var timing_port -> int
+var timing_port -> int = 0
-
Server side (UDP) port used by timing server.
Set to 0 to use random free port.
@@ -457,22 +464,23 @@ Class variables
-
Settings container class.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
var info -> InfoSettings
-
-
+
The type of the None singleton.
var protocols -> ProtocolSettings
-
-
+
The type of the None singleton.
diff --git a/docs/api/pyatv.storage.html b/docs/api/pyatv.storage.html
index cce702653..07e4ece8a 100644
--- a/docs/api/pyatv.storage.html
+++ b/docs/api/pyatv.storage.html
@@ -51,7 +51,7 @@ Module pyatv.storage
Storage module.
-
+
Sub-modules
@@ -81,7 +81,7 @@ Classes
New storage modules should generally inherit from this class and implement save and
load according to the underlying storage mechanism.
Initialize a new AbstractStorage instance.
-
+
Ancestors
- Storage
@@ -97,7 +97,7 @@ Instance variables
var storage_model -> StorageModel
-
Return storage model representation.
-
+
Methods
@@ -116,7 +116,7 @@ Methods
identitiers, DeviceIdMissingError will be raised.
If settings exists for a configuration but mismatch, they will be automatically
updated in the storage. Set ignore_update to False to not update storage.
-
+
-
@@ -127,7 +127,7 @@ Methods
Return if anything has changed in the model since loading.
This method compares a hash of the saved data with the provided data to deduce
if anything has changed.
-
+
-
@@ -136,7 +136,7 @@ Methods
-
Call after saving to indicate settings have been saved.
-
+
Inherited members
@@ -159,22 +159,23 @@ Inherited members
-
Storage model of data that is saved or restored to underlying storage.
Create a new model by parsing and validating input data from keyword arguments.
-Raises ValidationError if the input data cannot be parsed to form a valid model.
-
+Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be
+validated to form a valid model.
+self is explicitly positional-only to allow self as a field name.
+
Ancestors
-- pydantic.v1.main.BaseModel
-- pydantic.v1.utils.Representation
+- pydantic.main.BaseModel
Class variables
-var devices -> List[Settings]
+var devices -> List[Settings] = PydanticUndefined
-
-
+
The type of the None singleton.
-var version -> int
+var version -> int = PydanticUndefined
-
-
+
The type of the None singleton.
diff --git a/pyatv/const.py b/pyatv/const.py
index 3629d0706..20b55e208 100644
--- a/pyatv/const.py
+++ b/pyatv/const.py
@@ -5,8 +5,8 @@
from enum import Enum
MAJOR_VERSION = "0"
-MINOR_VERSION = "16"
-PATCH_VERSION = "1"
+MINOR_VERSION = "17"
+PATCH_VERSION = "0"
__short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}"
__version__ = f"{__short_version__}.{PATCH_VERSION}"