Replaced warnings.warn with logging.warnings.

I couldn't find an easy and reliable way of routing `warnings.warn` to
`logging`.

Closes: #281
This commit is contained in:
Fabio Manganiello 2024-06-06 22:24:36 +02:00
parent 87a902bfa3
commit 17b6b02986
6 changed files with 37 additions and 45 deletions

View file

@ -1,13 +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 ## [1.1.0] - 2024-06-06
- [#405] Fixed timezone/timestamp rendering issues for `calendar.ical` events. - [[#405](https://git.platypush.tech/platypush/platypush/issues/405)] Fixed
- [#403] Included inherited actions in plugins docs. 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

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

@ -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=(
entity['state']['xy'][0]
if entity.get('state', {}).get('xy') if entity.get('state', {}).get('xy')
else None, else None
y=entity['state']['xy'][1] ),
y=(
entity['state']['xy'][1]
if entity.get('state', {}).get('xy') if entity.get('state', {}).get('xy')
else None, 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

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