TL;DR
Access to params and properties have changed in this release due to the main class being split up. All AVR updates are now scheduled via the command queue. The order of queries sent during AVR zone refresh have changed order. Some unused methods have been removed. The `Zones` enum and the `param` module have been renamed to `Zone` and `params` respectively.
Breaking Changes
* To enable params to be accessible from AVR response parsers and also to reduce the size of the main class, the `PioneerAVR` class has been split out to the classes listed below. References to parameter and properties methods and attributes will need to be updated to be accessed via the `params` and `properties` attributes of the `PioneerAVR` object. All other public attributes have moved to the new classes.
* `PioneerAVRParams` contains the user and run-time parameter get/set methods. Some method names have changed, please consult the updated documentation for details
* `PioneerAVRProperties` contains the cache of AVR properties collected from its responses
* `PioneerAVRConnection` contains the connection related methods, although `PioneerAVR` inherits from the new class so the connection methods are still accessible via the `PioneerAVR` class
* Commands that are sent to the AVR to perform full updates are now executed via the command queue. This eliminates the previous interaction between the updater and command queue threads, as the updater now simply schedules updates via the command queue
* The order of queries during a full update has been modified so that amp, DSP and tone queries are executed before video queries
* The `Zones` enum has been renamed `Zone` for improved consistency
* The `param` module has been renamed `params` for improved consistency
* Exception handling within the AVR interface methods has been made more robust. The AVR listener and responders will now only trigger disconnection from the AVR (and reconnection if requested) if the AVR connection drops. Notably, parser exceptions and timeouts to power, volume and mute queries will no longer cause the AVR connection to disconnect and reconnect. This should fully resolve issues such as crowbarz/ha-pioneer_async54
* Not detecting Zone 1 on the AVR on module startup has been demoted from an error to a warning and Zone 1 is assumed to exist. Despite this change, most AVR commands will still not work when the AVR is in this state. It is now up to the client to check that Zone 1 has been discovered and handle the case when it is not
* The `source` AVR zone property has been renamed `source_id`, and an additional `source_name` property has been introduced that contains the mapped name for the source for each zone
* The `query_device_model` method has been introduced to query the device model and set default model parameters. Previously, the `query_device_info` queried all device information including the device model regardless of whether the AVR main zone was powered on. Clients that previously called `query_device_info` at module startup should now call `query_device_model`. `query_device_info` will be automatically called when the main zone is powered on for the first time after connecting, and no longer needs to be called by the client
* If Zone 1 is not powered on at integration startup, queries for AVR device info is deferred until Zone 1 is first powered on.
* The `query_audio_information` and `query_video_information` commands have been renamed `query_basic_audio_information` and `query_basic_video_information`. These basic query commands, in addition to `query_listening_mode`, are executed with a delay after all zone power and source operations whenever any zone is powered on
* The `system_query_source_name` has been renamed to `query_source_name` to avoid being sent during AVR device info queries
* The `query_sources` method has been removed. `PioneerAVRParams.get_runtime_param(PARAM_QUERY_SOURCES)` should be used instead
* The `update_zones` method has been removed. Change the AVR zones by recreating the `PioneerAVR` object with the new zones
* The `PioneerAVR.initial_update` property has moved to run-time param `PARAM_ZONES_INITIAL_REFRESH` and is now a set of `Zone`. The `PioneerAVRParams.zones_initial_refresh` property is provided as a convenience to access this run-time parameter
* System parameters have been re-termed as run-time parameters to better reflect their function
* The `PioneerAVRProperties.zones` property now has typing `set[Zone]`
Major Changes
* Split connection, params and properties into separate classes by crowbarz in https://github.com/crowbarz/aiopioneer/pull/42
* Rename command system_query_source_name to query_source_name by crowbarz in https://github.com/crowbarz/aiopioneer/pull/43
* Simplify device info query by crowbarz in https://github.com/crowbarz/aiopioneer/pull/44
* Optimise AVR query command order by crowbarz in https://github.com/crowbarz/aiopioneer/pull/45
* Separate params and AVR properties into separate instantiated classes by crowbarz in https://github.com/crowbarz/aiopioneer/pull/46
* Update via command queue by crowbarz in https://github.com/crowbarz/aiopioneer/pull/47
* Rename zones class by crowbarz in https://github.com/crowbarz/aiopioneer/pull/48
* Rename module param to params by crowbarz in https://github.com/crowbarz/aiopioneer/pull/49
All Changes
* Update Makefile to use modern packaging 4f06af055abb890f1ffaa0da4a3564470374727c
* Split connection, params and properties into separate classes crowbarz/aiopioneer42
* Split out connection, properties, param classes
* Complete docstring
* Black
* Yield to cancelled tasks on disconnect
* Add more debug logs to _connection_listener
* Rename command system_query_source_name to query_source_name 67a99b01a0b3930e8a8efcfadaa34fda5fa0b34c crowbarz/aiopioneer43
* Correct CLI module path in pyproject.toml 872352f122c7c5972726f6da600c791f228c9c15
* Simplify device info query crowbarz/aiopioneer44
* Separate initial AVR model query to query_device_model method
* Update CLI to use query_device_model on initial connect
* Always execute query_device_info on initial zone refresh
* Consolidate AVR methods fb6c529e5bf5abb85dcce84a155fb5a245522518
* set_channel_levels optimisations 2bd26b9071239adeb6a965ef3c3c768cbb1e4460
* Consolidate param operations in param module 2c7bc3f19c703440f37314e31e97e0a7829e343e
* Convert param retrieval functions to property 2c7bc3f19c703440f37314e31e97e0a7829e343e
* Catch exceptions in command queue 0bf50c303f86386fb21bf337fade5dc30b9ac63f
* Defer updates after command queue flushed 0bf50c303f86386fb21bf337fade5dc30b9ac63f
* Optimise AVR query command order crowbarz/aiopioneer45
* Group audio/video information queries to new function `basic` (`audio` is now empty)
* Modify query order to proritise audio over video, and move `tuner`, `system` and `display` to end
* Refresh zone before querying device info
* Don't queue basic query after each update
* Add names to asyncio tasks 191edaf8f3a1c1e6b5cc11c7caa663e38bb02e3e
* Check for exceptions whenever checking that a task is done 266e040e60f85c054fecf991278969db620f126b
* Move model property to PioneerAVRProperties 981f55b01f0b65b838fffced3c06ca86e1103359
* Break up long string f02e2477bc6b5501428a3553d7a0ec55f3b252e9
* Separate params and AVR properties into separate instantiated classes crowbarz/aiopioneer46
* Update via command queue crowbarz/aiopioneer47
* Execute zone refreshes via command queue https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Refactor update method and updater task to queue full refresh via command queue https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Schedule command queue task when queueing commands https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Query device info from refresh_zones after initial update, instead of queuing local command in parse_response https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Don't refresh zones after querying zones https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Rely on task.result() to re-raise exceptions in safe_wait_for https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Removed unused update_zones https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Add command queue debug param https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Overhauled and simplified debug https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Use repr to show exception name and details https://github.com/crowbarz/aiopioneer/commit/b69bdcbcdcc84298b1299ff43b3685f3104013e0
* Fix source name/ID property mapping https://github.com/crowbarz/aiopioneer/commit/ddb8265d9ac312a402f9db531132d5982bf23442
* Fix IP control port base property name https://github.com/crowbarz/aiopioneer/commit/4e7c0c4988ae93d6a7ac50cb10ed4fcc7f64235b
* Document IP control port base property https://github.com/crowbarz/aiopioneer/commit/98bac5cdcb636d09baf4ff3590086ad0b3ec7e14
* Fix set_system_param proto https://github.com/crowbarz/aiopioneer/commit/b400b5ce310af9e09a28a63713c90dbaaf58bcbf
* Move response parsing to parsers module https://github.com/crowbarz/aiopioneer/commit/b55210f701cb10e520ed6cd744f8aed49251b6f7
* Migrate response overrides for initial full refresh, query basic and volume bounce to parsers and local commands https://github.com/crowbarz/aiopioneer/commit/b55210f701cb10e520ed6cd744f8aed49251b6f7
* Pass full PioneerAVRParams object to parsers (allows setting of parameters) https://github.com/crowbarz/aiopioneer/commit/b55210f701cb10e520ed6cd744f8aed49251b6f7
* Move command_queue command parameters to list https://github.com/crowbarz/aiopioneer/commit/b55210f701cb10e520ed6cd744f8aed49251b6f7
* Rename "_query_basic_information" local command (and corresponding "_delayed_query_basic_information") to "_query_basic" https://github.com/crowbarz/aiopioneer/commit/b55210f701cb10e520ed6cd744f8aed49251b6f7
* Add _oob pseudo command to conditionally queue commands when not updating (response is out of band) https://github.com/crowbarz/aiopioneer/commit/b55210f701cb10e520ed6cd744f8aed49251b6f7
* Add return value typing for parser functions https://github.com/crowbarz/aiopioneer/commit/b55210f701cb10e520ed6cd744f8aed49251b6f7
* Move ip_control_port to base_property system https://github.com/crowbarz/aiopioneer/commit/5326c0d0c745c744bd784669bbd7797f8e6b859b
* Convert get_ipod_control_commands and get_tuner_control_commands to properties https://github.com/crowbarz/aiopioneer/commit/012fbe5293618956f3e08c7914699ebe7dc7aac3
* Fix _delayed_query_basic command https://github.com/crowbarz/aiopioneer/commit/ed83c5d6fa59e9761cd1c8a8f841fecb6f01a981
* Implement base_property command _clear_source_id to replace lambda function to call parent object method https://github.com/crowbarz/aiopioneer/commit/becef8826bf0126ed87e725c1620b0b894f4942c
* Query basic on zone power off https://github.com/crowbarz/aiopioneer/commit/65541cc83d0c919fb4d3b667db2811be15a694ea
* Correct prototype for parse_response https://github.com/crowbarz/aiopioneer/commit/034ad863bc9259b5eb09a57c9661b5657efc79d2
* Move initial_refresh public property to system param PARAM_ZONES_INITIAL_REFRESH https://github.com/crowbarz/aiopioneer/commit/0747afcfd664ab5ca716c2712f373e18fa60798a
* Move zones_initial_refresh property to PioneerAVRParams https://github.com/crowbarz/aiopioneer/commit/24ca4515afc44d404adb40444c3751206905cc13
* Simplify _read_response exception handling, defer to _connection_listener https://github.com/crowbarz/aiopioneer/commit/7273b5c1e348c1bcbd437e96eb03c0297935902e
* Terminate listener only if cancelled or EOF detected https://github.com/crowbarz/aiopioneer/commit/7273b5c1e348c1bcbd437e96eb03c0297935902e
* Suppress exception error logging on disconnect https://github.com/crowbarz/aiopioneer/commit/545575307c50b68c172b614345de26f2e7584dab
* Fix command queue exception logging https://github.com/crowbarz/aiopioneer/commit/205bc133c4c18609e2d8f4beb628da28c8065d27
* Yield to start command queue before waiting https://github.com/crowbarz/aiopioneer/commit/fd2231ecff9fb744f9d86bceba4d6b749b3824c6
* Add param PARAM_ALWAYS_POLL to ignore out of band responses as state refresh and instead always poll AVR state https://github.com/crowbarz/aiopioneer/commit/493b10522809f4b042f20edfa5b48529fc435705)
* Add debug_command_queue documentation https://github.com/crowbarz/aiopioneer/commit/3d5d3de0eef9fb457b85a933a4d90dd4545af06d
* Fix missing await https://github.com/crowbarz/aiopioneer/commit/ae016c0fbc4f64819e123b6e7598e27315999f7f
* Cache source_name in PioneerAVRProperties https://github.com/crowbarz/aiopioneer/commit/dd6bade8329aae0dfd08c1f91700c4f9628e493f
* Get task name directly from task in cancel_task https://github.com/crowbarz/aiopioneer/commit/a7326d8d2afb86c74de58015bb8767bf9864e017
* Make reconnect_avr method private https://github.com/crowbarz/aiopioneer/commit/edd57aa3f42d817b618bc59c720d9bd6267efe84
* Return after warning if disconnect called when already disconnected https://github.com/crowbarz/aiopioneer/commit/edd57aa3f42d817b618bc59c720d9bd6267efe84
* Show delay as float in connect retry message https://github.com/crowbarz/aiopioneer/commit/edd57aa3f42d817b618bc59c720d9bd6267efe84
* Rename PioneerAVRProperties.source -> source_id https://github.com/crowbarz/aiopioneer/commit/ed283f0f9b7399bb2d228fe62d03e82530ecc66d
* Fix source_id base_property in source parser ce62cbaa03e0173a38b8ba202b46e4e799970c80
* Cancel reconnect task on shutdown during reconnect c73608285170dec1645b54a2b0232c935c8f82f9
* Rename zones class crowbarz/aiopioneer48
* Rename Zones class to Zone
* Add Zone.full_name staticmethod
* Rename module param to params crowbarz/aiopioneer49
* Fix set_system_param docstring 64085e17a5cb3c2cf26f1b69a3311a72477abd54
* Make command_queue_schedule method private 1a23f17e329a9caf5cbd51b3ff7a3e0154277afe
* Correct debug method argument order 10b7df8d222a3ec74b304f445fa0371d98205833
* Tighten typing for AVR property groups 37e18008d9c2b5e0fe3b53be788478e1aebe226f
* Disconnect and raise AVRUnavailableError if reader or writer return failure beba91aaeaad44b1336b782b2cc9efa3cd7471a0
* Update typing for scan_interval to float 8d490758b997b8af472440deb93eb88c8662f020
* Rename (get|set)_system_param to (get|set)_runtime_param 05e45f1cc95292b48fe04981720525dca9a08157
* Documentation update for 0.8 56c9afe359d0529c258f35aae4d10dec282453a8
* Change Zone.full_name to property f937d1263d9e967e1c63c63199fc391a2f833ff7
* Update errors to use Zone.full_name f937d1263d9e967e1c63c63199fc391a2f833ff7
* Change PioneerAVRProperties.zones to set[Zone] f937d1263d9e967e1c63c63199fc391a2f833ff7
* Change default for PARAM_IGNORE_VOLUME_CHECK to True for all AVRs 50
* Further documentation updates f1cb42f1bfc632278826bef5feeecab918ec85d6
* Update typing d69b252cc20114c9a3c1963d2313f187c53751d2
**Full Changelog**: https://github.com/crowbarz/aiopioneer/compare/0.7.1...0.8.0