Fix handling of `NoneType` for torrents in `count_torrents_in_states` function
Added a check to handle cases where the 'torrents' data is None, avoiding a `TypeError` when attempting to get the length of a `NoneType` object. The function now returns 0 if 'torrents' is None, ensuring robust behavior when no torrent data is available.
* Fix key in strings.json for current_status in QBittorrent
* Add switch on QBittorent to control alternative speed
* Add switch file to .coveragerc
* Fix some typo
* Use coordinator for switch
* Update to mach new lib
* Import annotation
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Remove quoted coordinator
* Revert "Fix key in strings.json for current_status in QBittorrent"
This reverts commit 962fd0474f.
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Change qBittorrent lib to qbittorrentapi
* Fix tests
* Convert qbittorrent service to new lib
* Add missing translation key
* Catch APIConnectionError in service call
* Replace type ignore by Any typing
* Remove last type: ignore
* Use lib type for torrent_filter
* Change import format
* Fix remaining Any type
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Upgrade QBittorrent integration to show torrents
This brings the QBittorrent integration to be more in line with the Transmission integration. It updates how the integration is written, along with adding sensors for Active Torrents, Inactive Torrents, Paused Torrents, Total Torrents, Seeding Torrents, Started Torrents.
* Remove unused stuff
* Correct name in comments
* Make get torrents a service with a response
* Add new sensors
* remove service
* Add service with response to get torrents list
This adds a service with a response to be able to get the list of torrents within qBittorrent
* update
* update from rebase
* Update strings.json
* Update helpers.py
* Update to satisfy lint
* add func comment
* fix lint issues
* another update attempt
* Fix helpers
* Remove unneccesary part in services.yaml and add translations
* Fix return
* Add tests
* Fix test
* Improve tests
* Fix issue from rebase
* Add icon for get_torrents service
* Make get torrents a service with a response
* remove service
* Add service with response to get torrents list
This adds a service with a response to be able to get the list of torrents within qBittorrent
* Update to satisfy lint
* Handle multiple installed integrations
* fix lint issue
* Set return types for helper methods
* Create the service method in async_setup
* Add CONFIG_SCHEMA
* Add get_all_torrents service
* fix lint issues
* Add return types and ServiceValidationError(s)
* Fix naming
* Update translations
* Fix tests
* Upgrade QBittorrent integration to show torrents
This brings the QBittorrent integration to be more in line with the Transmission integration. It updates how the integration is written, along with adding sensors for Active Torrents, Inactive Torrents, Paused Torrents, Total Torrents, Seeding Torrents, Started Torrents.
* Remove unused stuff
* Fix codeowners
* Correct name in comments
* Update __init__.py
* Make get torrents a service with a response
* Update sensor.py
* Update sensor.py
* Update sensor.py
* Add new sensors
* remove service
* more removes
* more
* Address comments
* cleanup
* Update coordinator.py
* Fix most lint issues
* Update sensor.py
* Update sensor.py
* Update manifest.json
* Update sensor class
* Update sensor.py
* Fix lint issue with sensor class
* Adding codeowners
* Update homeassistant/components/qbittorrent/__init__.py
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add deprecated_yaml issue to the homeassistant integration
* Update test
* Update homeassistant/components/homeassistant/strings.json
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Include DOMAIN in issue_id
* Update test
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
catch LoginException directly in QBittorrentSensor init
Since the `exception` arg in QBittorrentSensor `__init__` is always
LoginException, we catch LoginException directly in `__init__` instead
of passing LoginException as an argument.
* Remove unnecessary exception re-wraps
* Preserve exception chains on re-raise
We slap "from cause" to almost all possible cases here. In some cases it
could conceivably be better to do "from None" if we really want to hide
the cause. However those should be in the minority, and "from cause"
should be an improvement over the corresponding raise without a "from"
in all cases anyway.
The only case where we raise from None here is in plex, where the
exception for an original invalid SSL cert is not the root cause for
failure to validate a newly fetched one.
Follow local convention on exception variable names if there is a
consistent one, otherwise `err` to match with majority of codebase.
* Fix mistaken re-wrap in homematicip_cloud/hap.py
Missed the difference between HmipConnectionError and
HmipcConnectionError.
* Do not hide original error on plex new cert validation error
Original is not the cause for the new one, but showing old in the
traceback is useful nevertheless.