From a62041d1226bd1d588e3f698cf22fdc772774d10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Constants used in the public API. All supported features. Identifier for Content Open the Control Center. Down button on remote. Genre of playing song. Show EPG. Home/TV button. Touch action constants. The type of the None singleton. The type of the None singleton. The type of the None singleton. The type of the None singleton. Public interface exposed by library. This module contains all the interfaces that represents a generic Apple TV device and
all its features. Information about an app. Initialize a new App instance. Return a unique bundle id for the app. User friendly name of app. Base class representing an Apple TV. Listener interface: Initialize a new StateProducer instance. Return apps interface. Return audio interface. Return API for device information. Return features interface. Return keyboard interface. Return API for retrieving metadata from the Apple TV. Return API for power management. Return API for handling push update from the Apple TV. Return API for controlling the Apple TV. Return service used to connect to the Apple TV. Return device settings used by pyatv. Return API for streaming media. Return touch gestures interface. Return user accounts interface. Close connection and release allocated resources. 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. Launch an app based on bundle ID or URL. Volume level is managed in percent where 0 is muted and 100 is max volume. Listener interface: Initialize a new StateProducer instance. Return current list of output device IDs. Return current volume level. Range is in percent, i.e. [0.0-100.0]. Add output devices. Remove output devices. Set output devices. Change current volume level. Range is in percent, i.e. [0.0-100.0].Fea
ChannelUpClickContentIdentifierControlCenterDownEpisodeNumberGenreGuideHomeHomeHoldLaunchAppModule
pyatv.constClass variables
Ancestors
Class variables
var ControlCenter = 68var Down = 1Class variables
var Guide = 66var Home = 14Class variables
Ancestors
Class variables
var Click = 5var Hold = 3var Press = 1var Release = 4Audio
@@ -197,6 +198,7 @@ AudioListener
identifiernamevolume
channel_downchannel_upcontrol_centerdownguidehomehome_holdleftModule
pyatv.interfaceClasses
Instance variables
var identifier -> strvar name -> str | NoneInstance variables
pyatv.interfaces.DeviceListenerAncestors
Instance variables
var apps -> Appsvar audio -> Audiovar device_info -> DeviceInfovar features -> Featuresvar keyboard -> Keyboardvar metadata -> Metadatavar power -> Powervar push_updater -> PushUpdatervar remote_control -> RemoteControlvar service -> BaseServicevar settings -> Settingsvar stream -> Streamvar touch -> TouchGesturesvar user_accounts -> UserAccountsMethods
@@ -492,7 +496,7 @@ Methods
@@ -502,7 +506,7 @@ Methods
Methods
Subclasses
Methods
Supported by: Protocol.Companion
@@ -543,7 +547,7 @@ Methods
Supported by: Protocol.Companion
Instance variables
pyatv.interfaces.AudioListenerAncestors
Instance variables
var output_devices -> List[OutputDevice]var volume -> floatMethods
@@ -633,7 +637,7 @@ Methods
Supported by: Protocol.MRP
@@ -646,7 +650,7 @@ Methods
Supported by: Protocol.MRP
@@ -659,11 +663,11 @@ Methods
Supported by: Protocol.MRP
-async def set_volume(self, level: float) -> None
+async def set_volume(self, level: float, output_device: OutputDevice | None = None) -> None
Methods
@@ -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.
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.
Initialize a new BaseConfig instance.
- +var address -> ipaddress.IPv4AddressIP address of device.
var all_identifiers -> List[str]Return all unique identifiers for this device.
var deep_sleep -> boolIf device is in deep sleep.
var device_info -> DeviceInfoReturn general device information.
var identifier -> str | NoneReturn the main identifier associated with this device.
var name -> strName of device.
var properties -> Mapping[str, Mapping[str, str]]Return Zeroconf properties.
var ready -> boolReturn if configuration is ready, (at least one service with identifier).
var services -> List[BaseService]Return all supported services.
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.
Device connection was (intentionally) closed.
@@ -1052,7 +1065,7 @@ Methods
Device was unexpectedly disconnected.
Base class for supported feature functionality.
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.
-
+
Listener
interface: pyatv.interfaces.KeyboardListener
Initialize a new StateProducer instance.
- +var text_focus_state -> KeyboardFocusStateReturn keyboard focus state.
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.
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 -> strReturn a unique identifier for current artwork.
var device_id -> str | NoneReturn a unique identifier for current device.
@@ -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.
var identifier -> strReturn a unique id for the output device.
The type of the None singleton.
var name -> str | NoneUser friendly name of output device.
The type of the None singleton.
var volume -> floatThe type of the None singleton.
Base class for retrieving what is currently playing.
Initialize a new Playing instance.
var album -> str | NoneAlbum of the currently playing song.
var artist -> str | NoneArtist of the currently playing song.
var content_identifier -> str | NoneContent identifier (app specific).
var device_state -> DeviceStateDevice state, e.g. playing or paused.
var episode_number -> int | NoneEpisode number of TV series.
var genre -> str | NoneGenre of the currently playing song.
var hash -> strCreate 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 | NoneItunes Store identifier.
var media_type -> MediaTypeType of media is currently playing, e.g. video, music.
var position -> int | NonePosition in the playing media (seconds).
var repeat -> RepeatState | NoneRepeat mode.
var season_number -> int | NoneSeason number of TV series.
var series_name -> str | NoneTitle of TV series.
var shuffle -> ShuffleState | NoneIf shuffle is enabled or not.
var title -> str | NoneTitle of the current media, e.g. movie or song name.
var total_time -> int | NoneTotal play time in seconds.
Base class for retrieving power state from an Apple TV.
Listener interface: pyatv.interfaces.PowerListener
Initialize a new StateProducer instance.
var power_state -> PowerStateReturn device power state.
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.
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}"
From 916648f14329f90fd4d6d109d80a5e43c49daa67 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pierre=20St=C3=A5hl?=
Date: Wed, 21 Jan 2026 20:09:00 +0100
Subject: [PATCH 2/2] Pin python in docker to 3.14.2
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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 .