From 6244a740c29dd277d66562e9faa8f3c87f2c4113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Sun, 11 Aug 2024 18:00:15 +0000 Subject: [PATCH] Release 0.15.0 --- CHANGES.md | 138 ++++++++++++++++++++++++++++++ docs/api/pyatv.const.html | 59 ++++++++++++- docs/api/pyatv.interface.html | 153 ++++++++++++++++++++++++++-------- pyatv/const.py | 4 +- 4 files changed, 314 insertions(+), 40 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 9ef0c65bc..876b50546 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,143 @@ # CHANGES +## 0.15.0 Ralph (2024-08-10) + +It has been a long time since the last release (christmas!), so a it's really +due for a new one. I have mostly been busy with other (personal) stuff, so I +have not done much more than maintenance. There are a few changes from the +community though. + +Some hightlights: + +* Uplift of various dependencies, e.g, fix breaking change in cryptography +* It is possible to skip forward/backwards (Companion) with custom intervals, + thanks @thiccaxe! +* @bdraco fixed a bug related to changes in chacha20poly1305-reuseable +* Python 3.12 is now (finally) offically supported + +This is a minor update indeed. I hope to see some updates in the near future, +especially related to tvOS 18 compatibility as well as new features. I am very +grateful for any help from the community. So if you want to help out +implementing anything, please send a PR and I'll try my best to find time to +review it! + +**Changes:** + +*Other:* + +``` +7716858a fix styling for 2462 +41b039f9 precise skip in companion, mrp, dmap +618e93a4 companion skip implementation +8331c783 deps: Bump protobuf base version to 4.25.3 +2a8afa68 deps: Sync some versions with base versions +9f2f7cd3 Added touch gesture to companion protocol (#2402) +55f3455e deps: Bump some lowest deps versions +31b57b27 cq: Fix pylint issues +42ff35ab docs: Fix codespell issues +ea9d3339 Fix Chacha20Cipher with companion +a84774c1 test: Improve MRP volume tests +8080aaae test: Improve dispatch test +aad6bcd7 test: Improve aiothttp session closing +ed20bf72 Bump setup-python to v5 +1b780d46 gha: Bump setup-python tp v4 +541ba00d Update tests.yml +ec402a68 gha: Run tests with python 3.12 +1037d5ef dep: Bump chacha20poly1305-reuseable and cryptography +1fc1cb0f cq: Run black to fix errors +5c721409 gha: Remove automerge workflow +90b23cc4 Update index.md +7fdfa28a still need to pad for hap +29ad6fc0 still need to pad for hap +e817af09 still need to pad for hap +0c1f6674 lint +d5a29d7e Simplify ChaCha20 Poly1305 implementation +8d78f516 Fix typo in README. +``` + +**All changes:** + +``` +e7487a8b build(deps): Bump python from 3.11.0-alpine to 3.12.5-alpine +81cd5819 build(deps): Bump aiohttp from 3.10.1 to 3.10.2 in /requirements +7716858a fix styling for 2462 +41b039f9 precise skip in companion, mrp, dmap +618e93a4 companion skip implementation +0d2d3fc9 build(deps): Bump flake8 from 7.1.0 to 7.1.1 in /requirements +1e0d7991 build(deps): Bump black from 24.4.2 to 24.8.0 in /requirements +5f801d4c build(deps): Bump aiohttp from 3.10.0 to 3.10.1 in /requirements +95c43b1c build(deps): Bump mypy-protobuf from 3.5.0 to 3.6.0 in /requirements +8331c783 deps: Bump protobuf base version to 4.25.3 +80fd95e6 build(deps): Bump pylint from 3.2.5 to 3.2.6 in /requirements +0abc130b build(deps): Bump protobuf from 5.27.2 to 5.27.3 in /requirements +1bda482d build(deps): Bump mypy from 1.10.1 to 1.11.1 in /requirements +2a8afa68 deps: Sync some versions with base versions +1b38c96f build(deps): Bump pytest-httpserver in /requirements +961340f8 build(deps): Bump pytest from 8.2.2 to 8.3.2 in /requirements +64cc5847 build(deps): Bump aiohttp from 3.9.5 to 3.10.0 in /requirements (#2463) +18ceacd4 build(deps): Bump miniaudio from 1.60 to 1.61 in /requirements (#2459) +9f2f7cd3 Added touch gesture to companion protocol (#2402) +55f3455e deps: Bump some lowest deps versions +c263ff54 build(deps): Bump pydantic from 2.7.4 to 2.8.2 in /requirements +cba3eb9a build(deps): Bump chacha20poly1305-reuseable in /requirements +6e9cc70d build(deps): Bump miniaudio from 1.59 to 1.60 in /requirements +21becc1e build(deps): Bump pytest-asyncio from 0.23.6 to 0.23.8 in /requirements +98dd3f2d build(deps): Bump protobuf from 5.27.1 to 5.27.2 in /requirements +0e024712 build(deps): Bump requests from 2.32.2 to 2.32.3 in /requirements +31b57b27 cq: Fix pylint issues +8d942aa2 build(deps): Bump pylint from 3.0.3 to 3.2.5 in /requirements +42ff35ab docs: Fix codespell issues +1e256440 build(deps): Bump codespell from 2.2.6 to 2.3.0 in /requirements +bbfb6ec2 build(deps): Bump pytest-httpserver in /requirements +d70a9a47 build(deps): Bump zeroconf from 0.131.0 to 0.132.2 in /requirements +9dbdcae1 build(deps): Bump mypy from 1.8.0 to 1.10.1 in /requirements +e84219bb build(deps): Bump pytest-cov from 4.1.0 to 5.0.0 in /requirements +0eec178c build(deps): Bump types-protobuf in /requirements +b1bd82b5 build(deps): Bump pyfakefs from 5.4.1 to 5.6.0 in /requirements +d789cd08 build(deps): Bump pytest-timeout from 2.2.0 to 2.3.1 in /requirements +80b9c91d build(deps): Bump pydantic from 2.5.3 to 2.7.4 in /requirements +ee725bd7 build(deps): Bump pytest-xdist from 3.5.0 to 3.6.1 in /requirements +1c7f3719 build(deps): Bump black from 24.4.0 to 24.4.2 in /requirements +f2152da3 build(deps): Bump protobuf from 4.25.2 to 5.27.1 in /requirements +30bcb66e build(deps): Bump cryptography from 42.0.5 to 42.0.8 in /requirements +ea9d3339 Fix Chacha20Cipher with companion +fb78faf6 build(deps): Bump flake8 from 7.0.0 to 7.1.0 in /requirements +5e6f1b17 build(deps): Bump deepdiff from 6.7.1 to 7.0.1 in /requirements +c5f182af build(deps): Bump pdoc3 from 0.10.0 to 0.11.0 in /requirements +a84774c1 test: Improve MRP volume tests +8080aaae test: Improve dispatch test +aad6bcd7 test: Improve aiothttp session closing +ed20bf72 Bump setup-python to v5 +1b780d46 gha: Bump setup-python tp v4 +541ba00d Update tests.yml +ec402a68 gha: Run tests with python 3.12 +39a868f9 build(deps): Bump pytest from 7.4.3 to 8.2.2 in /requirements +a0aa0d6e build(deps): Bump flake8 from 6.1.0 to 7.0.0 in /requirements +1037d5ef dep: Bump chacha20poly1305-reuseable and cryptography +1fc1cb0f cq: Run black to fix errors +2b0cc6a0 build(deps): Bump black from 23.12.1 to 24.4.0 in /requirements +62020c36 build(deps): Bump types-protobuf in /requirements +5c721409 gha: Remove automerge workflow +90b23cc4 Update index.md +7589ec8b build(deps): Bump types-tabulate in /requirements +7fdfa28a still need to pad for hap +29ad6fc0 still need to pad for hap +e817af09 still need to pad for hap +0c1f6674 lint +d5a29d7e Simplify ChaCha20 Poly1305 implementation +601e553a build(deps): Bump requests from 2.31.0 to 2.32.2 in /requirements +7bff8b32 build(deps): Bump pytest-asyncio from 0.23.2 to 0.23.6 in /requirements +a2da7611 build(deps): Bump pyfakefs from 5.3.2 to 5.4.1 in /requirements +eaf73bf9 build(deps): Bump aiohttp from 3.9.1 to 3.9.5 in /requirements +8d78f516 Fix typo in README. +4b00261b build(deps): Bump protobuf from 4.25.1 to 4.25.2 in /requirements +2f7e2fd1 build(deps): Bump pytest-asyncio from 0.21.1 to 0.23.2 in /requirements +4cd32600 build(deps): Bump isort from 5.12.0 to 5.13.2 in /requirements +51458f95 build(deps): Bump pyfakefs from 5.3.0 to 5.3.2 in /requirements +9d0e7f4c build(deps): Bump pydantic from 2.4.2 to 2.5.3 in /requirements +6d2762df build(deps): Bump pytest-xdist from 3.3.1 to 3.5.0 in /requirements +``` + ## 0.14.5 Quimby (2023-12-24) Merry christmas everyone, here comes a small present! In this diff --git a/docs/api/pyatv.const.html b/docs/api/pyatv.const.html index 6a7604f95..326d97abf 100644 --- a/docs/api/pyatv.const.html +++ b/docs/api/pyatv.const.html @@ -50,6 +50,7 @@

Dev

FeatureName

+
  • +

    TouchAction

    + +
  • @@ -211,7 +223,7 @@

    Module pyatv.const

    Constants used in the public API.

    - +
    @@ -336,7 +348,7 @@

    Class variables

    All supported features.

    - +

    Ancestors

    • enum.Enum
    • @@ -347,6 +359,10 @@

      Class variables

      List of user accounts.

      +
      var Action = 64
      +
      +

      Touch event to given coordinates.

      +
      var AddOutputDevices = 60

      Add output devices.

      @@ -379,6 +395,10 @@

      Class variables

      Select next channel.

      +
      var Click = 65
      +
      +

      Touch click command.

      +
      var ContentIdentifier = 47

      Identifier for Content

      @@ -527,6 +547,10 @@

      Class variables

      Suspend device (deprecated; use Power.turn_off).

      +
      var Swipe = 63
      +
      +

      Touch swipe from given coordinates and duration.

      +
      var SwitchAccount = 56

      Switch user account.

      @@ -901,6 +925,37 @@

      Class variables

    +
    +class TouchAction +(value, names=None, *, module=None, qualname=None, type=None, start=1) +
    +
    +

    Touch action constants.

    + +

    Ancestors

    +
      +
    • enum.Enum
    • +
    +

    Class variables

    +
    +
    var Click = 5
    +
    +
    +
    +
    var Hold = 3
    +
    +
    +
    +
    var Press = 1
    +
    +
    +
    +
    var Release = 4
    +
    +
    +
    +
    +
    diff --git a/docs/api/pyatv.interface.html b/docs/api/pyatv.interface.html index 1355ee1d5..a216b5cef 100644 --- a/docs/api/pyatv.interface.html +++ b/docs/api/pyatv.interface.html @@ -46,6 +46,7 @@

    App
  • service
  • settings
  • stream
  • +
  • touch
  • user_accounts
  • @@ -311,6 +312,14 @@

    Strea
  • +

    TouchGestures

    + +
  • +
  • UserAccount

    • identifier
    • @@ -336,7 +345,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.

      - +
      @@ -365,7 +374,7 @@

      Classes

      Information about an app.

      Initialize a new App instance.

      - +

      Instance variables

      var identifier -> str
      @@ -386,7 +395,7 @@

      Instance variables

      Base class representing an Apple TV.

      Listener interface: pyatv.interfaces.DeviceListener

      Initialize a new StateProducer instance.

      - +

      Ancestors

      • abc.ABC
      • @@ -447,6 +456,10 @@

        Instance variables

        Return API for streaming media.

        +
        var touch -> TouchGestures
        +
        +

        Return touch gestures interface.

        +
        var user_accounts -> UserAccounts

        Return user accounts interface.

        @@ -478,7 +491,7 @@

        Methods

        Base class for app handling.

        - +

        Subclasses

        • pyatv.core.facade.FacadeApps
        • @@ -518,7 +531,7 @@

          Methods

          Artwork information.

          - +

          Ancestors

          • builtins.tuple
          • @@ -552,7 +565,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
            • @@ -669,7 +682,7 @@

              Methods

              Listener interface for audio updates.

              - +

              Ancestors

              • abc.ABC
              • @@ -708,7 +721,7 @@

                Methods

                several services depending on the protocols it supports, e.g. DMAP or AirPlay.

                Initialize a new BaseConfig instance.

                - +

                Ancestors

                • abc.ABC
                • @@ -810,7 +823,7 @@

                  Methods

                  Base class for protocol services.

                  Initialize a new BaseService.

                  - +

                  Ancestors

                  • abc.ABC
                  • @@ -890,7 +903,7 @@

                    Methods

                    General information about device.

                    Initialize a new DeviceInfo instance.

                    - +

                    Class variables

                    var OUTPUT_DEVICE_ID
                    @@ -943,7 +956,7 @@

                    Instance variables

                    Listener interface for generic device updates.

                    - +

                    Ancestors

                    • abc.ABC
                    • @@ -979,7 +992,7 @@

                      Methods

                      Feature state and options.

                      - +

                      Ancestors

                      • builtins.tuple
                      • @@ -1001,7 +1014,7 @@

                        Instance variables

                        Base class for supported feature functionality.

                        - +

                        Subclasses

                        • pyatv.core.facade.FacadeFeatures
                        • @@ -1051,7 +1064,7 @@

                          Methods

                          Listener interface: pyatv.interfaces.KeyboardListener

                          Initialize a new StateProducer instance.

                          - +

                          Ancestors

                          • abc.ABC
                          • @@ -1127,7 +1140,7 @@

                            Methods

                            Listener interface for keyboard updates.

                            - +

                            Ancestors

                            • abc.ABC
                            • @@ -1154,7 +1167,7 @@

                              Methods

                              Container for media (e.g. audio or video) metadata.

                              - +

                              Class variables

                              var album -> Optional[str]
                              @@ -1184,7 +1197,7 @@

                              Class variables

                              Base class for retrieving metadata from an Apple TV.

                              - +

                              Subclasses

                              • pyatv.core.facade.FacadeMetadata
                              • @@ -1246,7 +1259,7 @@

                                Methods

                                Information about an output device.

                                Initialize a new OutputDevice instance.

                                - +

                                Instance variables

                                var identifier -> str
                                @@ -1266,7 +1279,7 @@

                                Instance variables

                                Base class for API used to pair with an Apple TV.

                                Initialize a new instance of PairingHandler.

                                - +

                                Ancestors

                                • abc.ABC
                                • @@ -1337,7 +1350,7 @@

                                  Methods

                                  Base class for retrieving what is currently playing.

                                  Initialize a new Playing instance.

                                  - +

                                  Ancestors

                                  • abc.ABC
                                  • @@ -1416,7 +1429,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
                                    • @@ -1469,7 +1482,7 @@

                                      Methods

                                      Listener interface for power updates.

                                      - +

                                      Ancestors

                                      • abc.ABC
                                      • @@ -1497,7 +1510,7 @@

                                        Methods

                                        Listener interface for push updates.

                                        - +

                                        Ancestors

                                        • abc.ABC
                                        • @@ -1538,7 +1551,7 @@

                                          Methods

                                          actually changes.

                                          Listener interface: PushListener.

                                          Initialize a new StateProducer instance.

                                          - +

                                          Ancestors

                                          • abc.ABC
                                          • @@ -1587,7 +1600,7 @@

                                            Methods

                                            Base class for API used to control an Apple TV.

                                            - +

                                            Subclasses

                                            • pyatv.core.facade.FacadeRemoteControl
                                            • @@ -1817,29 +1830,31 @@

                                              Methods

                                            -async def skip_backward(self) -> None +async def skip_backward(self, time_interval: float = 0.0) -> None
                                            -

                                            Skip backwards a time interval.

                                            -

                                            Skip interval is typically 15-30s, but is decided by the app.

                                            +

                                            Skip backward a time interval.

                                            +

                                            If time_interval is not positive or not present, a default or app-chosen +time interval is used, which is typically 10, 15, 30, etc. seconds.

                                            -async def skip_forward(self) -> None +async def skip_forward(self, time_interval: float = 0.0) -> None

                                            Skip forward a time interval.

                                            -

                                            Skip interval is typically 15-30s, but is decided by the app.

                                            +

                                            If time_interval is not positive or not present, a default or app-chosen +time interval is used, which is typically 10, 15, 30, etc. seconds.

                                            @@ -1936,7 +1951,7 @@

                                            Methods

                                            Base class for storage modules.

                                            - +

                                            Ancestors

                                            • abc.ABC
                                            • @@ -2009,7 +2024,7 @@

                                              Methods

                                              Base class for stream functionality.

                                              - +

                                              Subclasses

                                              • pyatv.core.facade.FacadeStream
                                              • @@ -2054,6 +2069,72 @@

                                                Methods

                                +
                                +class TouchGestures +
                                +
                                +

                                Base class for touch gestures.

                                + +

                                Ancestors

                                +
                                  +
                                • abc.ABC
                                • +
                                +

                                Subclasses

                                +
                                  +
                                • pyatv.core.facade.FacadeTouchGestures
                                • +
                                • pyatv.protocols.companion.CompanionTouchGestures
                                • +
                                +

                                Methods

                                +
                                +
                                + +async def action(self, x: int, y: int, mode: TouchAction) -> None + +
                                +
                                +
                                +Feature: FeatureName.TouchAction, +Supported by: Protocol.Companion +
                                +

                                Generate a touch event to x,y coordinates (in range [0,1000]).

                                +

                                :param x: x coordinate +:param y: y coordinate +:param mode: touch mode (1: press, 3: hold, 4: release)

                                +
                                +
                                + +async def click(self, action: InputAction) + +
                                +
                                +
                                +Feature: FeatureName.TouchClick, +Supported by: Protocol.Companion +
                                +

                                Send a touch click.

                                +

                                :param action: action mode single tap (0), double tap (1), or hold (2)

                                +
                                +
                                + +async def swipe(self, start_x: int, start_y: int, end_x: int, end_y: int, duration_ms: int) -> None + +
                                +
                                +
                                +Feature: FeatureName.Swipe, +Supported by: Protocol.Companion +
                                +

                                Generate a swipe gesture.

                                +

                                From start to end x,y coordinates (in range [0,1000]) +in a given time (in milliseconds).

                                +

                                :param start_x: Start x coordinate +:param start_y: Start y coordinate +:param end_x: End x coordinate +:param end_y: Endi x coordinate +:param duration_ms: Time in milliseconds to reach the end coordinates

                                +
                                +
                                +
                                class UserAccount (name: str, identifier: str) @@ -2061,7 +2142,7 @@

                                Methods

                                Information about a user account.

                                Initialize a new UserAccount instance.

                                - +

                                Instance variables

                                var identifier -> str
                                @@ -2079,7 +2160,7 @@

                                Instance variables

                                Base class for account handling.

                                - +

                                Subclasses

                                • pyatv.core.facade.FacadeUserAccounts
                                • diff --git a/pyatv/const.py b/pyatv/const.py index 6e2b5d5c6..448da6154 100644 --- a/pyatv/const.py +++ b/pyatv/const.py @@ -5,8 +5,8 @@ from enum import Enum MAJOR_VERSION = "0" -MINOR_VERSION = "14" -PATCH_VERSION = "5" +MINOR_VERSION = "15" +PATCH_VERSION = "0" __short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}" __version__ = f"{__short_version__}.{PATCH_VERSION}"