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.

    - +

    Ancestors

  • @@ -266,7 +268,9 @@

  • 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

  • @@ -511,7 +515,7 @@

    Methods

    Base class for app handling.

    - +

    Subclasses

    @@ -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

        @@ -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

        @@ -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

          @@ -1629,7 +1643,7 @@

          Methods

          Listener interface for push updates.

          - +

          Ancestors

          • abc.ABC
          • @@ -1649,7 +1663,7 @@

            Methods

            Inform about an error when updating play status.

            - +
            @@ -1658,7 +1672,7 @@

            Methods

            Inform about changes to what is currently playing.

            - +
          @@ -1672,7 +1686,7 @@

          Methods

          actually changes.

          Listener interface: PushListener.

          Initialize a new StateProducer instance.

          - +

          Ancestors

          • abc.ABC
          • @@ -1689,7 +1703,7 @@

            Instance variables

            var active -> bool

            Return if push updater has been started.

            - +

            Methods

            @@ -1706,7 +1720,7 @@

            Methods

            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.

            - +
            @@ -1724,7 +1738,7 @@

            Methods

            Base class for API used to control an Apple TV.

            - +

            Subclasses

            • pyatv.core.facade.FacadeRemoteControl
            • @@ -1762,6 +1776,19 @@

              Methods

              Select next channel.

            +
            + +async def control_center(self) -> None + +
            +
            +
            +Feature: FeatureName.ControlCenter, +Supported by: Protocol.Companion +
            +

            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

            @@ -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

            @@ -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

            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}"