kopia lustrzana https://github.com/glidernet/python-ogn-client
Refactoring: use f-string instead of format function
rodzic
3059b43dce
commit
2dd2934dba
|
@ -7,9 +7,9 @@ from ogn.client import settings
|
||||||
|
|
||||||
def create_aprs_login(user_name, pass_code, app_name, app_version, aprs_filter=None):
|
def create_aprs_login(user_name, pass_code, app_name, app_version, aprs_filter=None):
|
||||||
if not aprs_filter:
|
if not aprs_filter:
|
||||||
return "user {} pass {} vers {} {}\n".format(user_name, pass_code, app_name, app_version)
|
return f"user {user_name} pass {pass_code} vers {app_name} {app_version}\n"
|
||||||
else:
|
else:
|
||||||
return "user {} pass {} vers {} {} filter {}\n".format(user_name, pass_code, app_name, app_version, aprs_filter)
|
return f"user {user_name} pass {pass_code} vers {app_name} {app_version} filter {aprs_filter}\n"
|
||||||
|
|
||||||
|
|
||||||
class AprsClient:
|
class AprsClient:
|
||||||
|
@ -46,21 +46,19 @@ class AprsClient:
|
||||||
self.sock_file = self.sock.makefile('rb')
|
self.sock_file = self.sock.makefile('rb')
|
||||||
|
|
||||||
self._kill = False
|
self._kill = False
|
||||||
self.logger.info("Connect to OGN ({}/{}:{}) as {} with filter: {}".
|
self.logger.info(f"Connect to OGN ({self.settings.APRS_SERVER_HOST}/{self._sock_peer_ip}:{port}) as {self.aprs_user} with filter: '{self.aprs_filter}'" if self.aprs_filter else 'none (full-feed)')
|
||||||
format(self.settings.APRS_SERVER_HOST, self._sock_peer_ip, port, self.aprs_user,
|
|
||||||
"'" + self.aprs_filter + "'" if self.aprs_filter else 'none (full-feed)'))
|
|
||||||
break
|
break
|
||||||
except (socket.error, ConnectionError) as e:
|
except (socket.error, ConnectionError) as e:
|
||||||
self.logger.error('Connect error: {}'.format(e))
|
self.logger.error(f'Connect error: {e}')
|
||||||
if retries > 0:
|
if retries > 0:
|
||||||
self.logger.info('Waiting {}s before next connection try ({} attempts left).'.format(wait_period, retries))
|
self.logger.info(f'Waiting {wait_period}s before next connection try ({retries} attempts left).')
|
||||||
sleep(wait_period)
|
sleep(wait_period)
|
||||||
else:
|
else:
|
||||||
self._kill = True
|
self._kill = True
|
||||||
self.logger.critical('Could not connect to OGN.')
|
self.logger.critical('Could not connect to OGN.')
|
||||||
|
|
||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
self.logger.info('Disconnect from {}'.format(self._sock_peer_ip))
|
self.logger.info(f'Disconnect from {self._sock_peer_ip}')
|
||||||
try:
|
try:
|
||||||
# close everything
|
# close everything
|
||||||
self.sock.shutdown(0)
|
self.sock.shutdown(0)
|
||||||
|
@ -77,7 +75,7 @@ class AprsClient:
|
||||||
keepalive_time = time()
|
keepalive_time = time()
|
||||||
while not self._kill:
|
while not self._kill:
|
||||||
if time() - keepalive_time > self.settings.APRS_KEEPALIVE_TIME:
|
if time() - keepalive_time > self.settings.APRS_KEEPALIVE_TIME:
|
||||||
self.logger.info('Send keepalive to {}'.format(self._sock_peer_ip))
|
self.logger.info(f'Send keepalive to {self._sock_peer_ip}')
|
||||||
self.sock.send('#keepalive\n'.encode())
|
self.sock.send('#keepalive\n'.encode())
|
||||||
timed_callback(self)
|
timed_callback(self)
|
||||||
keepalive_time = time()
|
keepalive_time = time()
|
||||||
|
@ -95,7 +93,7 @@ class AprsClient:
|
||||||
|
|
||||||
callback(packet_str, **kwargs)
|
callback(packet_str, **kwargs)
|
||||||
except (socket.error, ConnectionError) as e:
|
except (socket.error, ConnectionError) as e:
|
||||||
self.logger.error('Connect error: {}'.format(e))
|
self.logger.error(f'Connect error: {e}')
|
||||||
except OSError:
|
except OSError:
|
||||||
self.logger.error('OSError')
|
self.logger.error('OSError')
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
|
|
|
@ -8,12 +8,12 @@ class BaseParser():
|
||||||
elif aprs_type.startswith('status'):
|
elif aprs_type.startswith('status'):
|
||||||
data = self.parse_status(aprs_comment)
|
data = self.parse_status(aprs_comment)
|
||||||
else:
|
else:
|
||||||
raise ValueError("aprs_type {} unknown".format(aprs_type))
|
raise ValueError(f"aprs_type '{aprs_type}' unknown")
|
||||||
data.update({'beacon_type': self.beacon_type})
|
data.update({'beacon_type': self.beacon_type})
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def parse_position(self, aprs_comment):
|
def parse_position(self, aprs_comment):
|
||||||
raise NotImplementedError("Position parser for parser '{}' not yet implemented".format(self.beacon_type))
|
raise NotImplementedError(f"Position parser for parser '{self.beacon_type}' not yet implemented")
|
||||||
|
|
||||||
def parse_status(self, aprs_comment):
|
def parse_status(self, aprs_comment):
|
||||||
raise NotImplementedError("Status parser for parser '{}' not yet implemented".format(self.beacon_type))
|
raise NotImplementedError(f"Status parser for parser '{self.beacon_type}' not yet implemented")
|
||||||
|
|
|
@ -12,7 +12,7 @@ class AprsParseError(ParseError):
|
||||||
def __init__(self, aprs_string):
|
def __init__(self, aprs_string):
|
||||||
self.aprs_string = aprs_string
|
self.aprs_string = aprs_string
|
||||||
|
|
||||||
self.message = "This is not a valid APRS packet: {}".format(aprs_string)
|
self.message = f"This is not a valid APRS packet: {aprs_string}"
|
||||||
super(AprsParseError, self).__init__(self.message)
|
super(AprsParseError, self).__init__(self.message)
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,5 +21,5 @@ class OgnParseError(ParseError):
|
||||||
def __init__(self, aprs_comment):
|
def __init__(self, aprs_comment):
|
||||||
self.aprs_comment = aprs_comment
|
self.aprs_comment = aprs_comment
|
||||||
|
|
||||||
self.message = "This is not a valid OGN message: {}".format(aprs_comment)
|
self.message = f"This is not a valid OGN message: {aprs_comment}"
|
||||||
super(OgnParseError, self).__init__(self.message)
|
super(OgnParseError, self).__init__(self.message)
|
||||||
|
|
|
@ -70,7 +70,7 @@ def test_run(mock_socket):
|
||||||
KeyboardInterrupt()]
|
KeyboardInterrupt()]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client.run(callback=lambda msg: print("got: {}".format(msg)), autoreconnect=True)
|
client.run(callback=lambda msg: print(f"got: {msg}"), autoreconnect=True)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
finally:
|
finally:
|
||||||
|
@ -95,7 +95,7 @@ def test_run_keepalive(mock_socket, mock_time):
|
||||||
timed_callback = mock.MagicMock()
|
timed_callback = mock.MagicMock()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client.run(callback=lambda msg: print("got: {}".format(msg)), timed_callback=timed_callback)
|
client.run(callback=lambda msg: print(f"got: {msg}"), timed_callback=timed_callback)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
finally:
|
finally:
|
||||||
|
@ -137,9 +137,9 @@ def test_50_live_messages():
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
message = parse(raw_message)
|
message = parse(raw_message)
|
||||||
print("{}: {}".format(message['aprs_type'], raw_message))
|
print(f"{message['aprs_type']}: {raw_message}")
|
||||||
except NotImplementedError as e:
|
except NotImplementedError as e:
|
||||||
print("{}: {}".format(e, raw_message))
|
print(f"{e}: {raw_message}")
|
||||||
return
|
return
|
||||||
if remaining_messages > 0:
|
if remaining_messages > 0:
|
||||||
remaining_messages -= 1
|
remaining_messages -= 1
|
||||||
|
|
Ładowanie…
Reference in New Issue