Skip to content

Commit 04d1a68

Browse files
add type hints
1 parent 52d17fd commit 04d1a68

File tree

1 file changed

+33
-28
lines changed

1 file changed

+33
-28
lines changed

adafruit_io/adafruit_io.py

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
import json
2323
import re
2424

25+
try:
26+
from typing import List, Tuple, Any
27+
except ImportError:
28+
pass
29+
2530
from adafruit_minimqtt.adafruit_minimqtt import MMQTTException
2631
from adafruit_io.adafruit_io_errors import (
2732
AdafruitIO_RequestError,
@@ -35,7 +40,7 @@
3540
CLIENT_HEADERS = {"User-Agent": "AIO-CircuitPython/{0}".format(__version__)}
3641

3742

38-
def validate_feed_key(feed_key):
43+
def validate_feed_key(feed_key: str):
3944
"""Validates a provided feed key against Adafruit IO's system rules.
4045
https://learn.adafruit.com/naming-things-in-adafruit-io/the-two-feed-identifiers
4146
"""
@@ -143,7 +148,7 @@ def _on_disconnect_mqtt(self, client, userdata, return_code):
143148
self.on_disconnect(self)
144149

145150
# pylint: disable=not-callable
146-
def _on_message_mqtt(self, client, topic, payload):
151+
def _on_message_mqtt(self, client, topic: str, payload: str):
147152
"""Runs when the client calls on_message. Parses and returns
148153
incoming data from Adafruit IO feeds.
149154
@@ -195,7 +200,7 @@ def _on_unsubscribe_mqtt(self, client, user_data, topic, pid):
195200
if self.on_unsubscribe is not None:
196201
self.on_unsubscribe(self, user_data, topic, pid)
197202

198-
def add_feed_callback(self, feed_key, callback_method):
203+
def add_feed_callback(self, feed_key: str, callback_method: str):
199204
"""Attaches a callback_method to an Adafruit IO feed.
200205
The callback_method function is called when a
201206
new value is written to the feed.
@@ -211,7 +216,7 @@ def add_feed_callback(self, feed_key, callback_method):
211216
"{0}/f/{1}".format(self._user, feed_key), callback_method
212217
)
213218

214-
def remove_feed_callback(self, feed_key):
219+
def remove_feed_callback(self, feed_key: str):
215220
"""Removes a previously registered callback method
216221
from executing whenever feed_key receives new data.
217222
@@ -239,7 +244,7 @@ def loop(self, timeout=1):
239244
self._client.loop(timeout)
240245

241246
# Subscriptions
242-
def subscribe(self, feed_key=None, group_key=None, shared_user=None):
247+
def subscribe(self, feed_key: str=None, group_key: str=None, shared_user: str=None):
243248
"""Subscribes to your Adafruit IO feed or group.
244249
Can also subscribe to someone else's feed.
245250
@@ -387,7 +392,7 @@ def publish_multiple(self, feeds_and_data, timeout=3, is_group=False):
387392
time.sleep(timeout)
388393

389394
# pylint: disable=too-many-arguments
390-
def publish(self, feed_key, data, metadata=None, shared_user=None, is_group=False):
395+
def publish(self, feed_key: str, data: Any, metadata: str=None, shared_use: str=None, is_group: bool=False):
391396
"""Publishes to an An Adafruit IO Feed.
392397
393398
:param str feed_key: Adafruit IO Feed key.
@@ -453,7 +458,7 @@ def publish(self, feed_key, data, metadata=None, shared_user=None, is_group=Fals
453458
else:
454459
self._client.publish("{0}/f/{1}".format(self._user, feed_key), data)
455460

456-
def get(self, feed_key):
461+
def get(self, feed_key: str):
457462
"""Calling this method will make Adafruit IO publish the most recent
458463
value on feed_key.
459464
https://io.adafruit.com/api/docs/mqtt.html#retained-values
@@ -498,7 +503,7 @@ def _create_headers(io_headers):
498503
return headers
499504

500505
@staticmethod
501-
def _create_data(data, metadata):
506+
def _create_data(data, metadata: dict):
502507
"""Returns a data payload as expected by the Adafruit IO HTTP API
503508
504509
:param data: Payload value.
@@ -522,15 +527,15 @@ def _handle_error(response):
522527
if response.status_code >= 400:
523528
raise AdafruitIO_RequestError(response)
524529

525-
def _compose_path(self, path):
530+
def _compose_path(self, path: str):
526531
"""Composes a valid API request path.
527532
528533
:param str path: Adafruit IO API URL path.
529534
"""
530535
return "https://io.adafruit.com/api/v2/{0}/{1}".format(self.username, path)
531536

532537
# HTTP Requests
533-
def _post(self, path, payload):
538+
def _post(self, path: str, payload: json):
534539
"""
535540
POST data to Adafruit IO
536541
@@ -545,7 +550,7 @@ def _post(self, path, payload):
545550
response.close()
546551
return json_data
547552

548-
def _get(self, path):
553+
def _get(self, path: str):
549554
"""
550555
GET data from Adafruit IO
551556
@@ -559,7 +564,7 @@ def _get(self, path):
559564
response.close()
560565
return json_data
561566

562-
def _delete(self, path):
567+
def _delete(self, path: str):
563568
"""
564569
DELETE data from Adafruit IO.
565570
@@ -574,7 +579,7 @@ def _delete(self, path):
574579
return json_data
575580

576581
# Data
577-
def send_data(self, feed_key, data, metadata=None, precision=None):
582+
def send_data(self, feed_key: str, data: str, metadata: dict=None, precision: int=None):
578583
"""
579584
Sends value data to a specified Adafruit IO feed.
580585
@@ -595,7 +600,7 @@ def send_data(self, feed_key, data, metadata=None, precision=None):
595600
payload = self._create_data(data, metadata)
596601
self._post(path, payload)
597602

598-
def send_batch_data(self, feed_key, data_list):
603+
def send_batch_data(self, feed_key: str, data_list: list):
599604
"""
600605
Sends a batch array of data to a specified Adafruit IO feed
601606
@@ -607,7 +612,7 @@ def send_batch_data(self, feed_key, data_list):
607612
data_dict = type(data_list)((data._asdict() for data in data_list))
608613
self._post(path, {"data": data_dict})
609614

610-
def receive_all_data(self, feed_key):
615+
def receive_all_data(self, feed_key: str):
611616
"""
612617
Get all data values from a specified Adafruit IO feed. Data is
613618
returned in reverse order.
@@ -618,7 +623,7 @@ def receive_all_data(self, feed_key):
618623
path = self._compose_path("feeds/{0}/data".format(feed_key))
619624
return self._get(path)
620625

621-
def receive_data(self, feed_key):
626+
def receive_data(self, feed_key: str):
622627
"""
623628
Return the most recent value for the specified feed.
624629
@@ -628,7 +633,7 @@ def receive_data(self, feed_key):
628633
path = self._compose_path("feeds/{0}/data/last".format(feed_key))
629634
return self._get(path)
630635

631-
def delete_data(self, feed_key, data_id):
636+
def delete_data(self, feed_key: str, data_id: str):
632637
"""
633638
Deletes an existing Data point from a feed.
634639
@@ -640,7 +645,7 @@ def delete_data(self, feed_key, data_id):
640645
return self._delete(path)
641646

642647
# Groups
643-
def create_new_group(self, group_key, group_description):
648+
def create_new_group(self, group_key:str , group_description: str):
644649
"""
645650
Creates a new Adafruit IO Group.
646651
@@ -651,7 +656,7 @@ def create_new_group(self, group_key, group_description):
651656
payload = {"name": group_key, "description": group_description}
652657
return self._post(path, payload)
653658

654-
def delete_group(self, group_key):
659+
def delete_group(self, group_key: str):
655660
"""
656661
Deletes an existing group.
657662
@@ -660,7 +665,7 @@ def delete_group(self, group_key):
660665
path = self._compose_path("groups/{0}".format(group_key))
661666
return self._delete(path)
662667

663-
def get_group(self, group_key):
668+
def get_group(self, group_key: str):
664669
"""
665670
Returns Group based on Group Key
666671
@@ -669,7 +674,7 @@ def get_group(self, group_key):
669674
path = self._compose_path("groups/{0}".format(group_key))
670675
return self._get(path)
671676

672-
def create_feed_in_group(self, group_key, feed_name):
677+
def create_feed_in_group(self, group_key: str, feed_name: str):
673678
"""Creates a new feed in an existing group.
674679
675680
:param str group_key: Group name.
@@ -679,7 +684,7 @@ def create_feed_in_group(self, group_key, feed_name):
679684
payload = {"feed": {"name": feed_name}}
680685
return self._post(path, payload)
681686

682-
def add_feed_to_group(self, group_key, feed_key):
687+
def add_feed_to_group(self, group_key: str, feed_key: str):
683688
"""
684689
Adds an existing feed to a group
685690
@@ -692,7 +697,7 @@ def add_feed_to_group(self, group_key, feed_key):
692697
return self._post(path, payload)
693698

694699
# Feeds
695-
def get_feed(self, feed_key, detailed=False):
700+
def get_feed(self, feed_key: str, detailed: bool=False):
696701
"""
697702
Returns an Adafruit IO feed based on the feed key
698703
@@ -706,7 +711,7 @@ def get_feed(self, feed_key, detailed=False):
706711
path = self._compose_path("feeds/{0}".format(feed_key))
707712
return self._get(path)
708713

709-
def create_new_feed(self, feed_key, feed_desc=None, feed_license=None):
714+
def create_new_feed(self, feed_key: str, feed_desc: str=None, feed_license: str=None):
710715
"""
711716
Creates a new Adafruit IO feed.
712717
@@ -720,7 +725,7 @@ def create_new_feed(self, feed_key, feed_desc=None, feed_license=None):
720725
return self._post(path, payload)
721726

722727
def create_and_get_feed(
723-
self, feed_key, detailed=False, feed_desc=None, feed_license=None
728+
self, feed_key: str, detailed: bool=False, feed_desc: str=None, feed_license: str=None
724729
):
725730
"""
726731
Attempts to return a feed; if the feed does not exist, it is created, and then returned.
@@ -738,7 +743,7 @@ def create_and_get_feed(
738743
)
739744
return self.get_feed(feed_key, detailed=detailed)
740745

741-
def delete_feed(self, feed_key):
746+
def delete_feed(self, feed_key: str):
742747
"""
743748
Deletes an existing feed.
744749
@@ -749,7 +754,7 @@ def delete_feed(self, feed_key):
749754
return self._delete(path)
750755

751756
# Adafruit IO Connected Services
752-
def receive_weather(self, weather_id):
757+
def receive_weather(self, weather_id: int):
753758
"""
754759
Get data from the Adafruit IO Weather Forecast Service
755760
NOTE: This service is avaliable to Adafruit IO Plus subscribers only.
@@ -759,7 +764,7 @@ def receive_weather(self, weather_id):
759764
path = self._compose_path("integrations/weather/{0}".format(weather_id))
760765
return self._get(path)
761766

762-
def receive_random_data(self, generator_id):
767+
def receive_random_data(self, generator_id: int):
763768
"""
764769
Get data from the Adafruit IO Random Data Stream Service
765770

0 commit comments

Comments
 (0)