blueair-api 1.33.1__py3-none-any.whl → 1.34.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
blueair_api/__init__.py CHANGED
@@ -4,4 +4,4 @@ from .http_aws_blueair import HttpAwsBlueair
4
4
  from .util_bootstrap import get_devices, get_aws_devices
5
5
  from .device import Device
6
6
  from .device_aws import DeviceAws
7
- from .model_enum import ModelEnum, FeatureEnum
7
+ from .model_enum import ModelEnum
blueair_api/device.py CHANGED
@@ -1,3 +1,5 @@
1
+ from typing import Any
2
+
1
3
  from .callbacks import CallbacksMixin
2
4
  from .http_blueair import HttpBlueair
3
5
  from .util import transform_data_points, safely_get_json_value, convert_none_to_not_implemented
@@ -32,7 +34,7 @@ class Device(CallbacksMixin):
32
34
  return device
33
35
 
34
36
  api: HttpBlueair = field(repr=False)
35
- raw_info : dict[str: any] = field(repr=False, init=False)
37
+ raw_info: dict[str, Any] = field(repr=False, init=False)
36
38
 
37
39
  uuid: str | None = None
38
40
  name: str | None = None
blueair_api/device_aws.py CHANGED
@@ -1,4 +1,6 @@
1
- import logging
1
+ from typing import Any
2
+
3
+ from logging import getLogger
2
4
  from json import dumps
3
5
 
4
6
  from .callbacks import CallbacksMixin
@@ -7,7 +9,7 @@ from .model_enum import ModelEnum
7
9
  from . import intermediate_representation_aws as ir
8
10
  from dataclasses import dataclass, field
9
11
 
10
- _LOGGER = logging.getLogger(__name__)
12
+ _LOGGER = getLogger(__name__)
11
13
 
12
14
  type AttributeType[T] = T | None
13
15
 
@@ -29,7 +31,7 @@ class DeviceAws(CallbacksMixin):
29
31
  return device_aws
30
32
 
31
33
  api: HttpAwsBlueair = field(repr=False)
32
- raw_info : dict[str: any] = field(repr=False, init=False)
34
+ raw_info : dict[str, Any] = field(repr=False, init=False)
33
35
 
34
36
  uuid : str | None = None
35
37
  name : str | None = None
@@ -247,4 +249,6 @@ class DeviceAws(CallbacksMixin):
247
249
  return ModelEnum.MAX_411I
248
250
  if self.sku == "112124":
249
251
  return ModelEnum.T10I
252
+ if self.sku == "109539":
253
+ return ModelEnum.MAX_311I_PLUS
250
254
  return ModelEnum.UNKNOWN
@@ -1,14 +1,14 @@
1
- from typing import Any
2
1
  import functools
3
- import logging
4
2
 
3
+ from logging import getLogger
4
+ from typing import Any
5
5
  from aiohttp import ClientSession, ClientResponse, FormData
6
- from .const import AWS_APIKEYS
7
6
 
7
+ from .const import AWS_APIKEYS
8
8
  from .util_http import request_with_logging
9
9
  from .errors import SessionError, LoginError
10
10
 
11
- _LOGGER = logging.getLogger(__name__)
11
+ _LOGGER = getLogger(__name__)
12
12
 
13
13
 
14
14
  def request_with_active_session(func):
blueair_api/model_enum.py CHANGED
@@ -1,90 +1,13 @@
1
- from enum import Enum, StrEnum
2
-
3
-
4
- class FeatureEnum(StrEnum):
5
- TEMPERATURE = "Temperature"
6
- HUMIDITY = "Humidity"
7
- VOC = "VOC"
8
- PM1 = "PM1"
9
- PM10 = "PM10"
10
- PM25 = "PM25"
11
- WATER_SHORTAGE = "Water Shortage"
12
- FILTER_EXPIRED = "Filter Expired"
13
- CHILD_LOCK = "Child Lock"
14
-
15
-
16
- class ModelEnum(Enum):
17
- def __new__(cls, *args, **kwds):
18
- value = len(cls.__members__) + 1
19
- obj = object.__new__(cls)
20
- obj._value_ = value
21
- return obj
22
-
23
- def __init__(self,
24
- name,
25
- supported_features):
26
- self.model_name = name
27
- self.supported_features = supported_features
28
-
29
- def supports_feature(self, supported_features) -> bool:
30
- return supported_features in self.supported_features
31
-
32
- UNKNOWN = "Unknown", [
33
- FeatureEnum.TEMPERATURE,
34
- FeatureEnum.HUMIDITY,
35
- FeatureEnum.WATER_SHORTAGE,
36
- FeatureEnum.VOC,
37
- FeatureEnum.PM1,
38
- FeatureEnum.PM10,
39
- FeatureEnum.PM25,
40
- FeatureEnum.FILTER_EXPIRED,
41
- FeatureEnum.CHILD_LOCK,
42
- ]
43
- HUMIDIFIER_H35I = "Blueair Humidifier H35i", [
44
- FeatureEnum.TEMPERATURE,
45
- FeatureEnum.HUMIDITY,
46
- FeatureEnum.WATER_SHORTAGE,
47
- ]
48
- PROTECT_7440I = "Blueair Protect 7440i", [
49
- FeatureEnum.TEMPERATURE,
50
- FeatureEnum.HUMIDITY,
51
- FeatureEnum.VOC,
52
- FeatureEnum.PM1,
53
- FeatureEnum.PM10,
54
- FeatureEnum.PM25,
55
- FeatureEnum.FILTER_EXPIRED,
56
- FeatureEnum.CHILD_LOCK,
57
- ]
58
- PROTECT_7470I = "Blueair Protect 7470i", [
59
- FeatureEnum.TEMPERATURE,
60
- FeatureEnum.HUMIDITY,
61
- FeatureEnum.VOC,
62
- FeatureEnum.PM1,
63
- FeatureEnum.PM10,
64
- FeatureEnum.PM25,
65
- FeatureEnum.FILTER_EXPIRED,
66
- FeatureEnum.CHILD_LOCK,
67
- ]
68
- MAX_211I = "Blueair Blue Pure 211i Max", [
69
- FeatureEnum.PM1,
70
- FeatureEnum.PM10,
71
- FeatureEnum.PM25,
72
- FeatureEnum.FILTER_EXPIRED,
73
- FeatureEnum.CHILD_LOCK,
74
- ]
75
- MAX_311I = "Blueair Blue Pure 311i Max", [
76
- FeatureEnum.PM25,
77
- FeatureEnum.FILTER_EXPIRED,
78
- FeatureEnum.CHILD_LOCK,
79
- ]
80
- MAX_411I = "Blueair Blue Pure 411i Max", [
81
- FeatureEnum.PM25,
82
- FeatureEnum.FILTER_EXPIRED,
83
- FeatureEnum.CHILD_LOCK,
84
- ]
85
- T10I = "T10i ComfortPure 3-in-1 Filter/Heater/Fan", [
86
- FeatureEnum.TEMPERATURE,
87
- FeatureEnum.HUMIDITY,
88
- FeatureEnum.PM25,
89
- FeatureEnum.FILTER_EXPIRED,
90
- ]
1
+ from enum import StrEnum
2
+
3
+
4
+ class ModelEnum(StrEnum):
5
+ UNKNOWN = "Unknown"
6
+ HUMIDIFIER_H35I = "Blueair Humidifier H35i"
7
+ PROTECT_7440I = "Blueair Protect 7440i"
8
+ PROTECT_7470I = "Blueair Protect 7470i"
9
+ MAX_211I = "Blueair Blue Pure 211i Max"
10
+ MAX_311I = "Blueair Blue Pure 311i Max"
11
+ MAX_311I_PLUS = "Blueair Blue Pure 311i+ Max"
12
+ MAX_411I = "Blueair Blue Pure 411i Max"
13
+ T10I = "T10i ComfortPure 3-in-1 Filter/Heater/Fan"
blueair_api/util.py CHANGED
@@ -45,6 +45,8 @@ def safely_get_json_value(json, key, callable_to_cast=None):
45
45
  def convert_none_to_not_implemented(value):
46
46
  if value is None:
47
47
  return NotImplemented
48
+ else:
49
+ return value
48
50
 
49
51
  def transform_data_points(data):
50
52
  """Transform a measurement list response from the Blueair API to a more pythonic data structure."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: blueair_api
3
- Version: 1.33.1
3
+ Version: 1.34.0
4
4
  Summary: Blueair Api Wrapper
5
5
  Author-email: Brendan Dahl <dahl.brendan@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/dahlb/blueair_api
@@ -0,0 +1,19 @@
1
+ blueair_api/__init__.py,sha256=gk2CZWEnEo4FlP7VcJsDs1kujZ_ryXF5H9n3Kd-4WWo,313
2
+ blueair_api/callbacks.py,sha256=fvrJsqH5eDRxWOGWiZkF2uLU4n2ve0zzU17ERqWbHP8,756
3
+ blueair_api/const.py,sha256=q1smSEhwyYvuQiR867lToFm-mGV-d3dNJvN0NJgscbU,1037
4
+ blueair_api/device.py,sha256=0tLlQIEKRfii_5i38tLFfhru7wgHSMlyVt7tAsRDkdg,5497
5
+ blueair_api/device_aws.py,sha256=-BESQ9p8lOkoDPi9qfqXgdzYk0K1t3QxVpyU7jf5MEg,10115
6
+ blueair_api/errors.py,sha256=lJ_iFU_W6zQfGRi_wsMhWDw-fAVPFeCkCbT1erIlYQQ,233
7
+ blueair_api/http_aws_blueair.py,sha256=f5HhjaYiBS8RMPjYgVJLOkk4Yqas2euh6hAkHr6H6Uc,8543
8
+ blueair_api/http_blueair.py,sha256=IMnKXs9S0Z-t1GVshSItjNr9tTdtXjh7-T-tHpsbzhE,11752
9
+ blueair_api/intermediate_representation_aws.py,sha256=DJWxHFP9yVll0O6kxHWjKscIlu-7genc3f7ZvwV5YdA,6137
10
+ blueair_api/model_enum.py,sha256=L2FpcxwkicwFXoSxknoAtD_unE-1W0Vfx2ypQRr0Nds,450
11
+ blueair_api/stub.py,sha256=tWJJLIhKf39P1gRAXfJk6L8cBJI9fVK3Uk9pj2_Teaw,1187
12
+ blueair_api/util.py,sha256=uWO_rSSXWO-SDzIUHrQP4JR0PlARVV2IlQAJyWiGAlE,2089
13
+ blueair_api/util_bootstrap.py,sha256=oo6qqEYUxWb4wLLivk7ofB0YFrKsTZo5tW0U2wc3-D0,1757
14
+ blueair_api/util_http.py,sha256=45AJG3Vb6LMVzI0WV22AoSyt64f_Jj3KpOAwF5M6EFE,1327
15
+ blueair_api-1.34.0.dist-info/LICENSE,sha256=W6UV41yCe1R_Avet8VtsxwdJar18n40b3MRnbEMHZmI,1066
16
+ blueair_api-1.34.0.dist-info/METADATA,sha256=9GZDw6VHOP_PzCuMp1Zw6AC-hxWbHSGDb-NxtUuhXf0,1995
17
+ blueair_api-1.34.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
18
+ blueair_api-1.34.0.dist-info/top_level.txt,sha256=-gn0jNtmE83qEu70uMW5F4JrXnHGRfuFup1EPWF70oc,12
19
+ blueair_api-1.34.0.dist-info/RECORD,,
@@ -1,19 +0,0 @@
1
- blueair_api/__init__.py,sha256=GucsIENhTF4AVxPn4Xyr4imUxJJ8RO8RYt1opHCF2hQ,326
2
- blueair_api/callbacks.py,sha256=fvrJsqH5eDRxWOGWiZkF2uLU4n2ve0zzU17ERqWbHP8,756
3
- blueair_api/const.py,sha256=q1smSEhwyYvuQiR867lToFm-mGV-d3dNJvN0NJgscbU,1037
4
- blueair_api/device.py,sha256=qD4kiYjhJdRsY9d6CZSDKqJLO_dSum3sumYLgZW8v2s,5474
5
- blueair_api/device_aws.py,sha256=cWpMrMzWH9hI-gkZb_Tvp2DMJPFZm3p5kt01ZHTUtGc,10008
6
- blueair_api/errors.py,sha256=lJ_iFU_W6zQfGRi_wsMhWDw-fAVPFeCkCbT1erIlYQQ,233
7
- blueair_api/http_aws_blueair.py,sha256=jztGyoH0iC7aCJ2oGf9hnEeHFOie3YikFvwtWo3W2w4,8536
8
- blueair_api/http_blueair.py,sha256=IMnKXs9S0Z-t1GVshSItjNr9tTdtXjh7-T-tHpsbzhE,11752
9
- blueair_api/intermediate_representation_aws.py,sha256=DJWxHFP9yVll0O6kxHWjKscIlu-7genc3f7ZvwV5YdA,6137
10
- blueair_api/model_enum.py,sha256=Z9Ne4icNEjbGNwdHJZSDibcKJKwv-W1BRpZx01RGFuY,2480
11
- blueair_api/stub.py,sha256=tWJJLIhKf39P1gRAXfJk6L8cBJI9fVK3Uk9pj2_Teaw,1187
12
- blueair_api/util.py,sha256=vwOSs8SxUKlO1g5XfK3WI1hgo1dUIVY-9XX13N-6y-8,2058
13
- blueair_api/util_bootstrap.py,sha256=oo6qqEYUxWb4wLLivk7ofB0YFrKsTZo5tW0U2wc3-D0,1757
14
- blueair_api/util_http.py,sha256=45AJG3Vb6LMVzI0WV22AoSyt64f_Jj3KpOAwF5M6EFE,1327
15
- blueair_api-1.33.1.dist-info/LICENSE,sha256=W6UV41yCe1R_Avet8VtsxwdJar18n40b3MRnbEMHZmI,1066
16
- blueair_api-1.33.1.dist-info/METADATA,sha256=0RB4yt3iupoxdlYc28H8wfhaoL3kUnQkAaGMS6aV_o0,1995
17
- blueair_api-1.33.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
18
- blueair_api-1.33.1.dist-info/top_level.txt,sha256=-gn0jNtmE83qEu70uMW5F4JrXnHGRfuFup1EPWF70oc,12
19
- blueair_api-1.33.1.dist-info/RECORD,,