mirror of
https://github.com/esphome/esphome.git
synced 2025-09-06 05:12:21 +01:00
Drop Python 2 Support (#793)
* Remove Python 2 support * Remove u-strings * Remove docker symlinks * Remove from travis * Update requirements * Upgrade flake8/pylint * Fixes * Manual * Run pyupgrade * Lint * Remove base_int * Fix * Update platformio_api.py * Update component.cpp
This commit is contained in:
@@ -1,9 +1,6 @@
|
||||
from __future__ import print_function
|
||||
|
||||
from datetime import datetime
|
||||
import hashlib
|
||||
import logging
|
||||
import socket
|
||||
import ssl
|
||||
import sys
|
||||
import time
|
||||
@@ -15,7 +12,6 @@ from esphome.const import CONF_BROKER, CONF_DISCOVERY_PREFIX, CONF_ESPHOME, \
|
||||
CONF_TOPIC, CONF_TOPIC_PREFIX, CONF_USERNAME
|
||||
from esphome.core import CORE, EsphomeError
|
||||
from esphome.helpers import color
|
||||
from esphome.py_compat import decode_text
|
||||
from esphome.util import safe_print
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@@ -37,7 +33,7 @@ def initialize(config, subscriptions, on_message, username, password, client_id)
|
||||
if client.reconnect() == 0:
|
||||
_LOGGER.info("Successfully reconnected to the MQTT server")
|
||||
break
|
||||
except socket.error:
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
wait_time = min(2**tries, 300)
|
||||
@@ -47,7 +43,7 @@ def initialize(config, subscriptions, on_message, username, password, client_id)
|
||||
time.sleep(wait_time)
|
||||
tries += 1
|
||||
|
||||
client = mqtt.Client(client_id or u'')
|
||||
client = mqtt.Client(client_id or '')
|
||||
client.on_connect = on_connect
|
||||
client.on_message = on_message
|
||||
client.on_disconnect = on_disconnect
|
||||
@@ -70,8 +66,8 @@ def initialize(config, subscriptions, on_message, username, password, client_id)
|
||||
host = str(config[CONF_MQTT][CONF_BROKER])
|
||||
port = int(config[CONF_MQTT][CONF_PORT])
|
||||
client.connect(host, port)
|
||||
except socket.error as err:
|
||||
raise EsphomeError("Cannot connect to MQTT broker: {}".format(err))
|
||||
except OSError as err:
|
||||
raise EsphomeError(f"Cannot connect to MQTT broker: {err}")
|
||||
|
||||
try:
|
||||
client.loop_forever()
|
||||
@@ -88,17 +84,17 @@ def show_logs(config, topic=None, username=None, password=None, client_id=None):
|
||||
if CONF_LOG_TOPIC in conf:
|
||||
topic = config[CONF_MQTT][CONF_LOG_TOPIC][CONF_TOPIC]
|
||||
elif CONF_TOPIC_PREFIX in config[CONF_MQTT]:
|
||||
topic = config[CONF_MQTT][CONF_TOPIC_PREFIX] + u'/debug'
|
||||
topic = config[CONF_MQTT][CONF_TOPIC_PREFIX] + '/debug'
|
||||
else:
|
||||
topic = config[CONF_ESPHOME][CONF_NAME] + u'/debug'
|
||||
topic = config[CONF_ESPHOME][CONF_NAME] + '/debug'
|
||||
else:
|
||||
_LOGGER.error(u"MQTT isn't setup, can't start MQTT logs")
|
||||
_LOGGER.error("MQTT isn't setup, can't start MQTT logs")
|
||||
return 1
|
||||
_LOGGER.info(u"Starting log output from %s", topic)
|
||||
_LOGGER.info("Starting log output from %s", topic)
|
||||
|
||||
def on_message(client, userdata, msg):
|
||||
time_ = datetime.now().time().strftime(u'[%H:%M:%S]')
|
||||
payload = decode_text(msg.payload)
|
||||
time_ = datetime.now().time().strftime('[%H:%M:%S]')
|
||||
payload = msg.payload.decode(errors='backslashreplace')
|
||||
message = time_ + payload
|
||||
safe_print(message)
|
||||
|
||||
@@ -107,20 +103,20 @@ def show_logs(config, topic=None, username=None, password=None, client_id=None):
|
||||
|
||||
def clear_topic(config, topic, username=None, password=None, client_id=None):
|
||||
if topic is None:
|
||||
discovery_prefix = config[CONF_MQTT].get(CONF_DISCOVERY_PREFIX, u'homeassistant')
|
||||
discovery_prefix = config[CONF_MQTT].get(CONF_DISCOVERY_PREFIX, 'homeassistant')
|
||||
name = config[CONF_ESPHOME][CONF_NAME]
|
||||
topic = u'{}/+/{}/#'.format(discovery_prefix, name)
|
||||
_LOGGER.info(u"Clearing messages from '%s'", topic)
|
||||
_LOGGER.info(u"Please close this window when no more messages appear and the "
|
||||
u"MQTT topic has been cleared of retained messages.")
|
||||
topic = f'{discovery_prefix}/+/{name}/#'
|
||||
_LOGGER.info("Clearing messages from '%s'", topic)
|
||||
_LOGGER.info("Please close this window when no more messages appear and the "
|
||||
"MQTT topic has been cleared of retained messages.")
|
||||
|
||||
def on_message(client, userdata, msg):
|
||||
if not msg.payload or not msg.retain:
|
||||
return
|
||||
try:
|
||||
print(u"Clearing topic {}".format(msg.topic))
|
||||
print(f"Clearing topic {msg.topic}")
|
||||
except UnicodeDecodeError:
|
||||
print(u"Skipping non-UTF-8 topic (prohibited by MQTT standard)")
|
||||
print("Skipping non-UTF-8 topic (prohibited by MQTT standard)")
|
||||
return
|
||||
client.publish(msg.topic, None, retain=True)
|
||||
|
||||
@@ -133,14 +129,14 @@ def get_fingerprint(config):
|
||||
_LOGGER.info("Getting fingerprint from %s:%s", addr[0], addr[1])
|
||||
try:
|
||||
cert_pem = ssl.get_server_certificate(addr)
|
||||
except IOError as err:
|
||||
except OSError as err:
|
||||
_LOGGER.error("Unable to connect to server: %s", err)
|
||||
return 1
|
||||
cert_der = ssl.PEM_cert_to_DER_cert(cert_pem)
|
||||
|
||||
sha1 = hashlib.sha1(cert_der).hexdigest()
|
||||
|
||||
safe_print(u"SHA1 Fingerprint: " + color('cyan', sha1))
|
||||
safe_print(u"Copy the string above into mqtt.ssl_fingerprints section of {}"
|
||||
u"".format(CORE.config_path))
|
||||
safe_print("SHA1 Fingerprint: " + color('cyan', sha1))
|
||||
safe_print("Copy the string above into mqtt.ssl_fingerprints section of {}"
|
||||
"".format(CORE.config_path))
|
||||
return 0
|
||||
|
Reference in New Issue
Block a user