Быстрый обзор проекта: я пытаюсь создать контроллер для моих светильников Philips Hue, используя LoPy. Чтобы получить информацию от Hue API, мне нужно установить соединение (которое работает) и отправить информацию в API, проблема в этой части.
Поскольку LoPy не может использовать библиотеку «запросов», я использую библиотеку «urequests», функции, используемые для отправки запросов, выглядят следующим образом
urequests.py
def head(url, **kwargs):
return request("HEAD", url, **kwargs)
def get(url, **kwargs):
return request("GET", url, **kwargs)
def post(url, **kwargs):
return request("POST", url, **kwargs)
def put(url, **kwargs):
return request("PUT", url, **kwargs)
def patch(url, **kwargs):
return request("PATCH", url, **kwargs)
def delete(url, **kwargs):
return request("DELETE", url, **kwargs)
Используя эту библиотеку, я использую библиотеку 'qhue' для получения информации о моих источниках света, это работает с использованием следующей функции:
qhue.py
def __call__(self, *args, **kwargs):
url = self.url
for a in args:
url += "/" + str(a)
http_method = kwargs.pop('http_method',
'get' if not kwargs else 'put').lower()
if http_method == 'put':
r = requests.put(url, data=json.dumps(kwargs, default=list), timeout=self.timeout)
elif http_method == 'post':
r = requests.post(url, data=json.dumps(kwargs, default=list), timeout=self.timeout)
elif http_method == 'delete':
r = requests.delete(url, timeout=self.timeout)
else:
r = requests.get(url, timeout=self.timeout)
if r.status_code != 200:
raise QhueException("Received response {c} from {u}".format(c=r.status_code, u=url))
resp = r.json()
if type(resp) == list:
errors = [m['error']['description'] for m in resp if 'error' in m]
if errors:
raise QhueException("\n".join(errors))
return resp
Поэтому, когда я запрашиваю информацию о моих источниках света, в qhue.py вызывается else, вызывая, таким образом, функцию get () в urequests.py, но по какой-то причине я продолжаю получать эту ошибку:
Traceback (последний вызов был последним):
Файл "main.py", строка 279, в
Файл "qhue.py", строка 39, в вызов
Ошибка типа: функция не принимает аргументы ключевого слова
main.py код для получения всех источников света (b = функция в qhue.py)
lights = b.lights # Creates a new Resource with its own URL
Как возникает эта ошибка и как ее исправить? Мне кажется, что использование ** kwargs позволило бы функции определять свои собственные аргументы (например, timeout = и data =)