Merge branch 'master' into snyk-upgrade-2f9bcb05344a53203d1db8700a74298c

This commit is contained in:
Fabio Manganiello 2024-06-06 22:32:04 +02:00 committed by GitHub
commit 3f2832a077
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 184 additions and 179 deletions

View file

@ -1,8 +1,22 @@
# Changelog # Changelog
## [Unreleased]
- [[#281](https://git.platypush.tech/platypush/platypush/issues/281)]
replaced `warnings.warn` with `logging.warning`, as there is no easy and
reliable way of routing `warnings.warn` to `logging`.
## [1.1.0] - 2024-06-06
- [[#405](https://git.platypush.tech/platypush/platypush/issues/405)] Fixed
timezone/timestamp rendering issues for `calendar.ical` events.
- [[#403]((https://git.platypush.tech/platypush/platypush/issues/403))]
Included inherited actions in plugins docs.
## [1.0.7] - 2024-06-02 ## [1.0.7] - 2024-06-02
- [#384] Added `assistant.openai` and `tts.openai` plugins. - [[#384]((https://git.platypush.tech/platypush/platypush/issues/384))] Added
`assistant.openai` and `tts.openai` plugins.
## [1.0.6] - 2024-06-01 ## [1.0.6] - 2024-06-01

View file

@ -21,7 +21,7 @@ sys.path.insert(0, os.path.abspath("./_ext"))
# -- Project information ----------------------------------------------------- # -- Project information -----------------------------------------------------
project = 'Platypush' project = 'Platypush'
copyright = '2017-2023, Fabio Manganiello' copyright = '2017-2024, Fabio Manganiello'
author = 'Fabio Manganiello <fabio@manganiello.tech>' author = 'Fabio Manganiello <fabio@manganiello.tech>'
# The short X.Y version # The short X.Y version
@ -199,6 +199,7 @@ intersphinx_mapping = {'python': ('https://docs.python.org/3', None)}
autodoc_default_options = { autodoc_default_options = {
'members': True, 'members': True,
'show-inheritance': True, 'show-inheritance': True,
'inherited-members': True,
} }
sys.path.insert(0, os.path.abspath('../..')) sys.path.insert(0, os.path.abspath('../..'))

View file

@ -23,7 +23,7 @@ when = hook
__author__ = 'Fabio Manganiello <fabio@manganiello.tech>' __author__ = 'Fabio Manganiello <fabio@manganiello.tech>'
__version__ = '1.0.7' __version__ = '1.1.0'
__all__ = [ __all__ = [
'Application', 'Application',
'Variable', 'Variable',

View file

@ -11,14 +11,14 @@
"@fortawesome/fontawesome-free": "^6.5.2", "@fortawesome/fontawesome-free": "^6.5.2",
"axios": "^1.6.8", "axios": "^1.6.8",
"core-js": "^3.37.1", "core-js": "^3.37.1",
"cronstrue": "^2.49.0", "cronstrue": "^2.50.0",
"highlight.js": "^11.9.0", "highlight.js": "^11.9.0",
"lato-font": "^3.0.0", "lato-font": "^3.0.0",
"mitt": "^2.1.0", "mitt": "^2.1.0",
"register-service-worker": "^1.7.2", "register-service-worker": "^1.7.2",
"sass": "^1.75.0", "sass": "^1.76.0",
"sass-loader": "^10.5.2", "sass-loader": "^10.5.2",
"vue": "^3.4.23", "vue": "^3.4.24",
"vue-router": "^4.3.2", "vue-router": "^4.3.2",
"vue-skycons": "^4.3.4", "vue-skycons": "^4.3.4",
"w3css": "^2.7.0" "w3css": "^2.7.0"
@ -3080,12 +3080,12 @@
"dev": true "dev": true
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.24.tgz",
"integrity": "sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==", "integrity": "sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.24.1", "@babel/parser": "^7.24.4",
"@vue/shared": "3.4.23", "@vue/shared": "3.4.24",
"entities": "^4.5.0", "entities": "^4.5.0",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map-js": "^1.2.0" "source-map-js": "^1.2.0"
@ -3103,37 +3103,37 @@
} }
}, },
"node_modules/@vue/compiler-dom": { "node_modules/@vue/compiler-dom": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.24.tgz",
"integrity": "sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==", "integrity": "sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.4.23", "@vue/compiler-core": "3.4.24",
"@vue/shared": "3.4.23" "@vue/shared": "3.4.24"
} }
}, },
"node_modules/@vue/compiler-sfc": { "node_modules/@vue/compiler-sfc": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.24.tgz",
"integrity": "sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==", "integrity": "sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.24.1", "@babel/parser": "^7.24.4",
"@vue/compiler-core": "3.4.23", "@vue/compiler-core": "3.4.24",
"@vue/compiler-dom": "3.4.23", "@vue/compiler-dom": "3.4.24",
"@vue/compiler-ssr": "3.4.23", "@vue/compiler-ssr": "3.4.24",
"@vue/shared": "3.4.23", "@vue/shared": "3.4.24",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.30.8", "magic-string": "^0.30.10",
"postcss": "^8.4.38", "postcss": "^8.4.38",
"source-map-js": "^1.2.0" "source-map-js": "^1.2.0"
} }
}, },
"node_modules/@vue/compiler-ssr": { "node_modules/@vue/compiler-ssr": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.24.tgz",
"integrity": "sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==", "integrity": "sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.4.23", "@vue/compiler-dom": "3.4.24",
"@vue/shared": "3.4.23" "@vue/shared": "3.4.24"
} }
}, },
"node_modules/@vue/component-compiler-utils": { "node_modules/@vue/component-compiler-utils": {
@ -3206,48 +3206,48 @@
"integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA=="
}, },
"node_modules/@vue/reactivity": { "node_modules/@vue/reactivity": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.24.tgz",
"integrity": "sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==", "integrity": "sha512-nup3fSYg4i4LtNvu9slF/HF/0dkMQYfepUdORBcMSsankzRPzE7ypAFurpwyRBfU1i7Dn1kcwpYsE1wETSh91g==",
"dependencies": { "dependencies": {
"@vue/shared": "3.4.23" "@vue/shared": "3.4.24"
} }
}, },
"node_modules/@vue/runtime-core": { "node_modules/@vue/runtime-core": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.24.tgz",
"integrity": "sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==", "integrity": "sha512-c7iMfj6cJMeAG3s5yOn9Rc5D9e2/wIuaozmGf/ICGCY3KV5H7mbTVdvEkd4ZshTq7RUZqj2k7LMJWVx+EBiY1g==",
"dependencies": { "dependencies": {
"@vue/reactivity": "3.4.23", "@vue/reactivity": "3.4.24",
"@vue/shared": "3.4.23" "@vue/shared": "3.4.24"
} }
}, },
"node_modules/@vue/runtime-dom": { "node_modules/@vue/runtime-dom": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.24.tgz",
"integrity": "sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==", "integrity": "sha512-uXKzuh/Emfad2Y7Qm0ABsLZZV6H3mAJ5ZVqmAOlrNQRf+T5mxpPGZBfec1hkP41t6h6FwF6RSGCs/gd8WbuySQ==",
"dependencies": { "dependencies": {
"@vue/runtime-core": "3.4.23", "@vue/runtime-core": "3.4.24",
"@vue/shared": "3.4.23", "@vue/shared": "3.4.24",
"csstype": "^3.1.3" "csstype": "^3.1.3"
} }
}, },
"node_modules/@vue/server-renderer": { "node_modules/@vue/server-renderer": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.24.tgz",
"integrity": "sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==", "integrity": "sha512-H+DLK4sQF6sRgzKyofmlEVBIV/9KrQU6HIV7nt6yIwSGGKvSwlV8pqJlebUKLpbXaNHugdSfAbP6YmXF69lxow==",
"dependencies": { "dependencies": {
"@vue/compiler-ssr": "3.4.23", "@vue/compiler-ssr": "3.4.24",
"@vue/shared": "3.4.23" "@vue/shared": "3.4.24"
}, },
"peerDependencies": { "peerDependencies": {
"vue": "3.4.23" "vue": "3.4.24"
} }
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.23.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.24.tgz",
"integrity": "sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg==" "integrity": "sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw=="
}, },
"node_modules/@vue/vue-loader-v15": { "node_modules/@vue/vue-loader-v15": {
"name": "vue-loader", "name": "vue-loader",
@ -4701,9 +4701,10 @@
} }
}, },
"node_modules/cronstrue": { "node_modules/cronstrue": {
"version": "2.49.0", "version": "2.50.0",
"resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.49.0.tgz", "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.50.0.tgz",
"integrity": "sha512-FWZBqdStQaPR8ZTBQGALh1EK9Hl1HcG70dyGvD1rKLPafFO3H73o38dz/e8YkIlbLn3JxmBI/f6Doe3Nh+DcEQ==", "integrity": "sha512-ULYhWIonJzlScCCQrPUG5uMXzXxSixty4djud9SS37DoNxDdkeRocxzHuAo4ImRBUK+mAuU5X9TSwEDccnnuPg==",
"license": "MIT",
"bin": { "bin": {
"cronstrue": "bin/cli.js" "cronstrue": "bin/cli.js"
} }
@ -10552,9 +10553,9 @@
"dev": true "dev": true
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.75.0", "version": "1.76.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.75.0.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.76.0.tgz",
"integrity": "sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==", "integrity": "sha512-nc3LeqvF2FNW5xGF1zxZifdW3ffIz5aBb7I7tSvOoNu7z1RQ6pFt9MBuiPtjgaI62YWrM/txjWlOCFiGtf2xpw==",
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0", "immutable": "^4.0.0",
@ -11977,15 +11978,15 @@
} }
}, },
"node_modules/vue": { "node_modules/vue": {
"version": "3.4.23", "version": "3.4.24",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.23.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.24.tgz",
"integrity": "sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==", "integrity": "sha512-NPdx7dLGyHmKHGRRU5bMRYVE+rechR+KDU5R2tSTNG36PuMwbfAJ+amEvOAw7BPfZp5sQulNELSLm5YUkau+Sg==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.4.23", "@vue/compiler-dom": "3.4.24",
"@vue/compiler-sfc": "3.4.23", "@vue/compiler-sfc": "3.4.24",
"@vue/runtime-dom": "3.4.23", "@vue/runtime-dom": "3.4.24",
"@vue/server-renderer": "3.4.23", "@vue/server-renderer": "3.4.24",
"@vue/shared": "3.4.23" "@vue/shared": "3.4.24"
}, },
"peerDependencies": { "peerDependencies": {
"typescript": "*" "typescript": "*"

View file

@ -11,14 +11,14 @@
"@fortawesome/fontawesome-free": "^6.5.2", "@fortawesome/fontawesome-free": "^6.5.2",
"axios": "^1.6.8", "axios": "^1.6.8",
"core-js": "^3.37.1", "core-js": "^3.37.1",
"cronstrue": "^2.49.0", "cronstrue": "^2.50.0",
"highlight.js": "^11.9.0", "highlight.js": "^11.9.0",
"lato-font": "^3.0.0", "lato-font": "^3.0.0",
"mitt": "^2.1.0", "mitt": "^2.1.0",
"register-service-worker": "^1.7.2", "register-service-worker": "^1.7.2",
"sass": "^1.75.0", "sass": "^1.76.0",
"sass-loader": "^10.5.2", "sass-loader": "^10.5.2",
"vue": "^3.4.23", "vue": "^3.4.24",
"vue-router": "^4.3.2", "vue-router": "^4.3.2",
"vue-skycons": "^4.3.4", "vue-skycons": "^4.3.4",
"w3css": "^2.7.0" "w3css": "^2.7.0"

Binary file not shown.

View file

@ -1,7 +1,6 @@
import asyncio import asyncio
import logging import logging
import threading import threading
import warnings
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from functools import wraps from functools import wraps
@ -168,11 +167,7 @@ class RunnablePlugin(Plugin):
self._thread: Optional[threading.Thread] = None self._thread: Optional[threading.Thread] = None
if kwargs.get('poll_seconds') is not None: if kwargs.get('poll_seconds') is not None:
warnings.warn( self.logger.warning('poll_seconds is deprecated, use poll_interval instead')
'poll_seconds is deprecated, use poll_interval instead',
DeprecationWarning,
stacklevel=2,
)
if self.poll_interval is None: if self.poll_interval is None:
self.poll_interval = kwargs['poll_seconds'] self.poll_interval = kwargs['poll_seconds']

View file

@ -1,7 +1,9 @@
import datetime import datetime
import requests
from typing import Optional from typing import Optional
import requests
from dateutil.tz import gettz
from platypush.plugins import Plugin, action from platypush.plugins import Plugin, action
from platypush.plugins.calendar import CalendarInterface from platypush.plugins.calendar import CalendarInterface
from platypush.utils import utcnow from platypush.utils import utcnow
@ -21,19 +23,20 @@ class CalendarIcalPlugin(Plugin, CalendarInterface):
self.url = url self.url = url
@staticmethod @staticmethod
def _convert_timestamp(event, attribute: str) -> Optional[str]: def _convert_timestamp(event: dict, attribute: str) -> Optional[str]:
t = event.get(attribute) t = event.get(attribute)
if not t: if not t:
return return None
if isinstance(t.dt, datetime.date): if isinstance(t.dt, datetime.date) and not isinstance(t.dt, datetime.datetime):
return datetime.datetime( return datetime.datetime(
t.dt.year, t.dt.month, t.dt.day, tzinfo=datetime.timezone.utc t.dt.year, t.dt.month, t.dt.day, tzinfo=gettz()
).isoformat() ).isoformat()
return ( return (
datetime.datetime.utcfromtimestamp(t.dt.timestamp()) datetime.datetime.fromtimestamp(t.dt.timestamp())
.replace(tzinfo=datetime.timezone.utc) .replace(tzinfo=t.dt.tzinfo or gettz())
.astimezone(datetime.timezone.utc)
.isoformat() .isoformat()
) )
@ -82,10 +85,10 @@ class CalendarIcalPlugin(Plugin, CalendarInterface):
from icalendar import Calendar from icalendar import Calendar
events = [] events = []
response = requests.get(self.url) response = requests.get(self.url, timeout=20)
assert response.ok, "HTTP error while getting events from {}: {}".format( assert (
self.url, response.text response.ok
) ), f"HTTP error while getting events from {self.url}: {response.text}"
calendar = Calendar.from_ical(response.text) calendar = Calendar.from_ical(response.text)
for event in calendar.walk(): for event in calendar.walk():
@ -97,7 +100,8 @@ class CalendarIcalPlugin(Plugin, CalendarInterface):
if ( if (
event['status'] != 'cancelled' event['status'] != 'cancelled'
and event['end'].get('dateTime') and event['end'].get('dateTime')
and event['end']['dateTime'] >= utcnow().isoformat() and datetime.datetime.fromisoformat(event['end']['dateTime'])
>= utcnow()
and ( and (
( (
only_participating only_participating

View file

@ -17,8 +17,6 @@ from typing import (
Set, Set,
Union, Union,
) )
import warnings
from platypush.config import Config from platypush.config import Config
from platypush.context import get_bus from platypush.context import get_bus
from platypush.entities import Entity, LightEntityManager from platypush.entities import Entity, LightEntityManager
@ -86,11 +84,7 @@ class LightHuePlugin(RunnablePlugin, LightEntityManager):
poll_seconds = kwargs.pop('poll_seconds', None) poll_seconds = kwargs.pop('poll_seconds', None)
if poll_seconds is not None: if poll_seconds is not None:
warnings.warn( self.logger.warning('poll_seconds is deprecated, use poll_interval instead')
'poll_seconds is deprecated, use poll_interval instead',
DeprecationWarning,
stacklevel=2,
)
if poll_interval is None: if poll_interval is None:
poll_interval = poll_seconds poll_interval = poll_seconds
@ -1156,12 +1150,16 @@ class LightHuePlugin(RunnablePlugin, LightEntityManager):
temperature=entity.get('state', {}).get('ct'), temperature=entity.get('state', {}).get('ct'),
colormode=entity.get('colormode'), colormode=entity.get('colormode'),
reachable=entity.get('state', {}).get('reachable'), reachable=entity.get('state', {}).get('reachable'),
x=entity['state']['xy'][0] x=(
if entity.get('state', {}).get('xy') entity['state']['xy'][0]
else None, if entity.get('state', {}).get('xy')
y=entity['state']['xy'][1] else None
if entity.get('state', {}).get('xy') ),
else None, y=(
entity['state']['xy'][1]
if entity.get('state', {}).get('xy')
else None
),
effect=entity.get('state', {}).get('effect'), effect=entity.get('state', {}).get('effect'),
**( **(
{ {

View file

@ -1,7 +1,6 @@
from collections.abc import Collection from collections.abc import Collection
import time import time
from typing import List, Optional, Union from typing import List, Optional, Union
import warnings
from platypush.context import get_bus from platypush.context import get_bus
from platypush.entities.distance import DistanceSensor from platypush.entities.distance import DistanceSensor
@ -45,10 +44,8 @@ class SensorHcsr04Plugin(GpioPlugin, SensorPlugin):
measurement_interval = kwargs.pop('measurement_interval', None) measurement_interval = kwargs.pop('measurement_interval', None)
if measurement_interval is not None: if measurement_interval is not None:
warnings.warn( self.logger.warning(
'measurement_interval is deprecated, use poll_interval instead', 'measurement_interval is deprecated, use poll_interval instead',
DeprecationWarning,
stacklevel=2,
) )
poll_interval = measurement_interval poll_interval = measurement_interval

View file

@ -1,5 +1,4 @@
from dataclasses import asdict from dataclasses import asdict
import warnings
from typing import Iterable, List, Optional, Union from typing import Iterable, List, Optional, Union
from platypush.plugins import RunnablePlugin, action from platypush.plugins import RunnablePlugin, action
@ -184,10 +183,8 @@ class SoundPlugin(RunnablePlugin):
blocksize = blocksize or self.output_blocksize blocksize = blocksize or self.output_blocksize
if file: if file:
warnings.warn( self.logger.warning(
'file is deprecated, use resource instead', 'file is deprecated, use resource instead',
DeprecationWarning,
stacklevel=1,
) )
if not resource: if not resource:
resource = file resource = file
@ -232,10 +229,8 @@ class SoundPlugin(RunnablePlugin):
""" """
Deprecated alias for :meth:`.record`. Deprecated alias for :meth:`.record`.
""" """
warnings.warn( self.logger.warning(
'sound.stream_recording is deprecated, use sound.record instead', 'sound.stream_recording is deprecated, use sound.record instead',
DeprecationWarning,
stacklevel=1,
) )
return self.record(*args, **kwargs) return self.record(*args, **kwargs)
@ -319,10 +314,8 @@ class SoundPlugin(RunnablePlugin):
""" """
Deprecated alias for :meth:`.record`. Deprecated alias for :meth:`.record`.
""" """
warnings.warn( self.logger.warning(
'sound.recordplay is deprecated, use sound.record with `play_audio=True` instead', 'sound.recordplay is deprecated, use sound.record with `play_audio=True` instead',
DeprecationWarning,
stacklevel=1,
) )
kwargs['play_audio'] = True kwargs['play_audio'] = True
@ -398,10 +391,8 @@ class SoundPlugin(RunnablePlugin):
Deprecated alias for :meth:`.status`. Deprecated alias for :meth:`.status`.
""" """
warnings.warn( self.logger.warning(
'sound.query_streams is deprecated, use sound.status instead', 'sound.query_streams is deprecated, use sound.status instead',
DeprecationWarning,
stacklevel=1,
) )
return self.status() return self.status()

View file

@ -377,9 +377,11 @@ class ZwaveMqttPlugin(
'device_id': device_id.replace('0x', ''), 'device_id': device_id.replace('0x', ''),
'name': node.get('name'), 'name': node.get('name'),
'capabilities': capabilities, 'capabilities': capabilities,
'manufacturer_id': f'0x{node["manufacturerId"]:04x}' 'manufacturer_id': (
if node.get('manufacturerId') f'0x{node["manufacturerId"]:04x}'
else None, if node.get('manufacturerId')
else None
),
'manufacturer_name': node.get('manufacturer'), 'manufacturer_name': node.get('manufacturer'),
'location': node.get('loc'), 'location': node.get('loc'),
'status': node.get('status'), 'status': node.get('status'),
@ -397,12 +399,12 @@ class ZwaveMqttPlugin(
'is_security_device': node.get('supportsSecurity'), 'is_security_device': node.get('supportsSecurity'),
'is_sleeping': node.get('ready') and node.get('status') == 'Asleep', 'is_sleeping': node.get('ready') and node.get('status') == 'Asleep',
'last_update': cls._convert_timestamp(node.get('lastActive')), 'last_update': cls._convert_timestamp(node.get('lastActive')),
'product_id': f'0x{node["productId"]:04x}' 'product_id': (
if node.get('productId') f'0x{node["productId"]:04x}' if node.get('productId') else None
else None, ),
'product_type': f'0x{node["productType"]:04x}' 'product_type': (
if node.get('productType') f'0x{node["productType"]:04x}' if node.get('productType') else None
else None, ),
'product_name': ' '.join( 'product_name': ' '.join(
[node.get('productLabel', ''), node.get('productDescription', '')] [node.get('productLabel', ''), node.get('productDescription', '')]
), ),
@ -1048,7 +1050,7 @@ class ZwaveMqttPlugin(
""" """
Get the current status of the Z-Wave values. Get the current status of the Z-Wave values.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values(**kwargs) return self._filter_values(**kwargs)
@ -1058,7 +1060,7 @@ class ZwaveMqttPlugin(
""" """
Get the status of the controller. Get the status of the controller.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
msg_queue: queue.Queue = queue.Queue() msg_queue: queue.Queue = queue.Queue()
@ -1105,7 +1107,7 @@ class ZwaveMqttPlugin(
:param do_security: Whether to initialize the Network Key on the device if it supports the Security CC :param do_security: Whether to initialize the Network Key on the device if it supports the Security CC
:param timeout: How long the inclusion process should last, in seconds (default: 30). Specify zero or null :param timeout: How long the inclusion process should last, in seconds (default: 30). Specify zero or null
for no timeout. for no timeout.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self._api_request( self._api_request(
@ -1128,7 +1130,7 @@ class ZwaveMqttPlugin(
Remove a node from the network (or, better, start the exclusion process). Remove a node from the network (or, better, start the exclusion process).
:param timeout: How long the exclusion process should last, in seconds (default: 30). :param timeout: How long the exclusion process should last, in seconds (default: 30).
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self._api_request('startExclusion', **kwargs) self._api_request('startExclusion', **kwargs)
@ -1144,7 +1146,7 @@ class ZwaveMqttPlugin(
:param node_id: Filter by node_id. :param node_id: Filter by node_id.
:param node_name: Filter by node name. :param node_name: Filter by node name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
if node_name: if node_name:
@ -1162,7 +1164,7 @@ class ZwaveMqttPlugin(
:param node_id: Filter by node_id. :param node_id: Filter by node_id.
:param node_name: Filter by node name. :param node_name: Filter by node name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
if node_name: if node_name:
@ -1180,7 +1182,7 @@ class ZwaveMqttPlugin(
:param node_id: Filter by node_id. :param node_id: Filter by node_id.
:param node_name: Filter by node name. :param node_name: Filter by node name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
if node_name: if node_name:
@ -1194,7 +1196,7 @@ class ZwaveMqttPlugin(
""" """
Request a neighbours list update. Request a neighbours list update.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self._api_request('refreshNeighbors', **kwargs) self._api_request('refreshNeighbors', **kwargs)
@ -1208,7 +1210,7 @@ class ZwaveMqttPlugin(
:param node_id: Filter by node_id. :param node_id: Filter by node_id.
:param node_name: Filter by node name. :param node_name: Filter by node name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
:return: List of paired devices. Example output: :return: List of paired devices. Example output:
@ -1362,7 +1364,7 @@ class ZwaveMqttPlugin(
} }
} }
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
if node_id or node_name: if node_id or node_name:
@ -1386,7 +1388,7 @@ class ZwaveMqttPlugin(
:param new_name: New name for the node. :param new_name: New name for the node.
:param node_id: Filter by node_id. :param node_id: Filter by node_id.
:param node_name: Filter by current node name. :param node_name: Filter by current node name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
if node_name: if node_name:
@ -1417,7 +1419,7 @@ class ZwaveMqttPlugin(
:param location: Node location. :param location: Node location.
:param node_id: Filter by node_id. :param node_id: Filter by node_id.
:param node_name: Filter by current node name. :param node_name: Filter by current node name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
if node_name: if node_name:
@ -1442,7 +1444,7 @@ class ZwaveMqttPlugin(
Heal network by requesting nodes rediscover their neighbours. Heal network by requesting nodes rediscover their neighbours.
:param timeout: Duration of the healing process in seconds (default: 60). Set to zero or null for no timeout. :param timeout: Duration of the healing process in seconds (default: 60). Set to zero or null for no timeout.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self._api_request('beginHealingNetwork', **kwargs) self._api_request('beginHealingNetwork', **kwargs)
@ -1469,7 +1471,7 @@ class ZwaveMqttPlugin(
:param value_label: Select value by [node_id/node_name, value_label] :param value_label: Select value by [node_id/node_name, value_label]
:param node_id: Select value by [node_id/node_name, value_label] :param node_id: Select value by [node_id/node_name, value_label]
:param node_name: Select value by [node_id/node_name, value_label] :param node_name: Select value by [node_id/node_name, value_label]
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._get_value( return self._get_value(
@ -1503,7 +1505,7 @@ class ZwaveMqttPlugin(
:param value_label: Select value by [node_id/node_name, value_label] :param value_label: Select value by [node_id/node_name, value_label]
:param node_id: Select value by [node_id/node_name, value_label] :param node_id: Select value by [node_id/node_name, value_label]
:param node_name: Select value by [node_id/node_name, value_label] :param node_name: Select value by [node_id/node_name, value_label]
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
# Compatibility layer with the .set_value format used by # Compatibility layer with the .set_value format used by
@ -1558,7 +1560,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by label. :param node_name: Select node by label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
if node_name: if node_name:
@ -1575,7 +1577,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by label. :param node_name: Select node by label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self.node_heal(node_id=node_id, node_name=node_name, **kwargs) self.node_heal(node_id=node_id, node_name=node_name, **kwargs)
@ -1590,7 +1592,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by label. :param node_name: Select node by label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self.node_heal(node_id=node_id, node_name=node_name, **kwargs) self.node_heal(node_id=node_id, node_name=node_name, **kwargs)
@ -1604,7 +1606,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by label. :param node_name: Select node by label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
if node_name: if node_name:
@ -1620,7 +1622,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by label. :param node_name: Select node by label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1639,7 +1641,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by label. :param node_name: Select node by label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1663,7 +1665,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1679,7 +1681,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1695,7 +1697,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1715,7 +1717,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1735,7 +1737,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1755,7 +1757,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1771,7 +1773,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1787,7 +1789,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1803,7 +1805,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1830,7 +1832,7 @@ class ZwaveMqttPlugin(
:param node_id: Select node by node_id. :param node_id: Select node by node_id.
:param node_name: Select node by name. :param node_name: Select node by name.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
return self._filter_values( return self._filter_values(
@ -1842,7 +1844,7 @@ class ZwaveMqttPlugin(
""" """
Get the groups on the network. Get the groups on the network.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
:return: A list of the available groups. Example: :return: A list of the available groups. Example:
@ -1885,7 +1887,7 @@ class ZwaveMqttPlugin(
""" """
Get the scenes configured on the network. Get the scenes configured on the network.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
:return: dict with the following format: :return: dict with the following format:
@ -1919,7 +1921,7 @@ class ZwaveMqttPlugin(
Create a new scene. Create a new scene.
:param label: Scene label. :param label: Scene label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self._api_request('_createScene', label, **kwargs) self._api_request('_createScene', label, **kwargs)
@ -1936,7 +1938,7 @@ class ZwaveMqttPlugin(
:param scene_id: Select by scene_id. :param scene_id: Select by scene_id.
:param scene_label: Select by scene label. :param scene_label: Select by scene label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
scene = self._get_scene(scene_id=scene_id, scene_label=scene_label, **kwargs) scene = self._get_scene(scene_id=scene_id, scene_label=scene_label, **kwargs)
@ -1954,7 +1956,7 @@ class ZwaveMqttPlugin(
:param scene_id: Select by scene_id. :param scene_id: Select by scene_id.
:param scene_label: Select by scene label. :param scene_label: Select by scene label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
scene = self._get_scene(scene_id=scene_id, scene_label=scene_label, **kwargs) scene = self._get_scene(scene_id=scene_id, scene_label=scene_label, **kwargs)
@ -1984,7 +1986,7 @@ class ZwaveMqttPlugin(
:param node_name: Select value by [node_id/node_name, value_label] :param node_name: Select value by [node_id/node_name, value_label]
:param scene_id: Select scene by scene_id. :param scene_id: Select scene by scene_id.
:param scene_label: Select scene by scene label. :param scene_label: Select scene by scene label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
value = self._get_value( value = self._get_value(
@ -2032,7 +2034,7 @@ class ZwaveMqttPlugin(
:param node_name: Select value by [node_id/node_name, value_label] :param node_name: Select value by [node_id/node_name, value_label]
:param scene_id: Select scene by scene_id. :param scene_id: Select scene by scene_id.
:param scene_label: Select scene by scene label. :param scene_label: Select scene by scene label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
value = self._get_value( value = self._get_value(
@ -2058,7 +2060,7 @@ class ZwaveMqttPlugin(
:param scene_id: Select by scene_id. :param scene_id: Select by scene_id.
:param scene_label: Select by scene label. :param scene_label: Select by scene label.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
scene = self._get_scene(scene_id=scene_id, scene_label=scene_label, **kwargs) scene = self._get_scene(scene_id=scene_id, scene_label=scene_label, **kwargs)
@ -2078,7 +2080,7 @@ class ZwaveMqttPlugin(
:param group_id: Group ID. :param group_id: Group ID.
:param node_id: Node ID to be added. :param node_id: Node ID to be added.
:param endpoint: Add a specific endpoint of the node to the group (default: add a node association). :param endpoint: Add a specific endpoint of the node to the group (default: add a node association).
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
group = self._get_group(group_id, **kwargs) group = self._get_group(group_id, **kwargs)
@ -2102,7 +2104,7 @@ class ZwaveMqttPlugin(
:param group_id: Group ID. :param group_id: Group ID.
:param node_id: Node ID to be added. :param node_id: Node ID to be added.
:param endpoint: Node endpoint to remove (default: remove node association). :param endpoint: Node endpoint to remove (default: remove node association).
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
group = self._get_group(group_id, **kwargs) group = self._get_group(group_id, **kwargs)
@ -2128,7 +2130,7 @@ class ZwaveMqttPlugin(
Turn on a switch on a device. Turn on a switch on a device.
:param device: ``id_on_network`` of the value to be switched on. :param device: ``id_on_network`` of the value to be switched on.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self.set_value(data=True, id_on_network=device, **kwargs) self.set_value(data=True, id_on_network=device, **kwargs)
@ -2139,7 +2141,7 @@ class ZwaveMqttPlugin(
Turn off a switch on a device. Turn off a switch on a device.
:param device: ``id_on_network`` of the value to be switched off. :param device: ``id_on_network`` of the value to be switched off.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
self.set_value(data=False, id_on_network=device, **kwargs) self.set_value(data=False, id_on_network=device, **kwargs)
@ -2152,7 +2154,7 @@ class ZwaveMqttPlugin(
Toggle a switch on a device. Toggle a switch on a device.
:param device: ``id_on_network`` of the value to be toggled. :param device: ``id_on_network`` of the value to be toggled.
:param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`` :param kwargs: Extra arguments to be passed to :meth:`platypush.plugins.mqtt.MqttPlugin.publish`
(default: query the default configured device). (default: query the default configured device).
""" """
value = self._get_value(id_on_network=device, use_cache=False, **kwargs) value = self._get_value(id_on_network=device, use_cache=False, **kwargs)

View file

@ -1,4 +1,4 @@
import warnings import logging
from marshmallow import Schema, fields, pre_dump, post_dump from marshmallow import Schema, fields, pre_dump, post_dump
@ -6,6 +6,8 @@ from platypush.context import get_plugin
from . import MediaArtistSchema, MediaCollectionSchema, MediaVideoSchema from . import MediaArtistSchema, MediaCollectionSchema, MediaVideoSchema
logger = logging.getLogger(__name__)
class JellyfinSchema(Schema): class JellyfinSchema(Schema):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -20,9 +22,10 @@ class JellyfinSchema(Schema):
@post_dump @post_dump
def gen_img_url(self, data: dict, **_) -> dict: def gen_img_url(self, data: dict, **_) -> dict:
if 'image' in self.fields: if 'image' in self.fields:
plugin = get_plugin('media.jellyfin')
assert plugin, 'The media.jellyfin plugin is not configured'
data['image'] = ( data['image'] = (
get_plugin('media.jellyfin').server plugin.server + f'/Items/{data["id"]}' # type: ignore
+ f'/Items/{data["id"]}' # type: ignore
'/Images/Primary?fillHeight=333&fillWidth=222&quality=96' '/Images/Primary?fillHeight=333&fillWidth=222&quality=96'
) )
@ -43,9 +46,8 @@ class JellyfinSchema(Schema):
if not video_format: if not video_format:
if not available_containers: if not available_containers:
warnings.warn( logger.warning(
f'The media ID {data["Id"]} has no available video containers', 'The media ID %s has no available video containers', data["Id"]
stacklevel=2,
) )
return data return data

View file

@ -1,5 +1,5 @@
[bumpversion] [bumpversion]
current_version = 1.0.7 current_version = 1.1.0
commit = True commit = True
tag = True tag = True

View file

@ -66,7 +66,7 @@ backend = pkg_files('platypush/backend')
setup( setup(
name="platypush", name="platypush",
version="1.0.7", version="1.1.0",
author="Fabio Manganiello", author="Fabio Manganiello",
author_email="fabio@manganiello.tech", author_email="fabio@manganiello.tech",
description="Platypush service", description="Platypush service",