Pyupgrade 3.6: Update syntax with Python 3.6+ features (#23305)
Updated Python code with Python 3.6+ features: - utf-8 encoding is now the default (PEP 3120) - Replace list comprehensions by Generator Expressions (PEP 289) - Replace yield loop by yield from (PEP 380) - Remove the (object) subclass when defining a class - Replace the IOError alias by OSError (PEP 3151) - Define sets with curly braces {} instead of set() - Remove "r" parameter from open function, which is default Co-Authored-By: Adeeb Shihadeh <8762862+adeebshihadeh@users.noreply.github.com> Co-Authored-By: GregorKikelj <96022003+GregorKikelj@users.noreply.github.com> Co-authored-by: Adeeb Shihadeh <8762862+adeebshihadeh@users.noreply.github.com> Co-authored-by: GregorKikelj <96022003+GregorKikelj@users.noreply.github.com>pull/23309/head
parent
6fd3d50d79
commit
332f568a82
|
@ -34,7 +34,7 @@ from selfdrive.version import get_version, get_origin, get_short_branch, get_com
|
|||
|
||||
ATHENA_HOST = os.getenv('ATHENA_HOST', 'wss://athena.comma.ai')
|
||||
HANDLER_THREADS = int(os.getenv('HANDLER_THREADS', "4"))
|
||||
LOCAL_PORT_WHITELIST = set([8022])
|
||||
LOCAL_PORT_WHITELIST = {8022}
|
||||
|
||||
LOG_ATTR_NAME = 'user.upload'
|
||||
LOG_ATTR_VALUE_MAX_UNIX_TIME = int.to_bytes(2147483647, 4, sys.byteorder)
|
||||
|
@ -287,7 +287,7 @@ def listUploadQueue():
|
|||
|
||||
@dispatcher.add_method
|
||||
def cancelUpload(upload_id):
|
||||
upload_ids = set(item.id for item in list(upload_queue.queue))
|
||||
upload_ids = {item.id for item in list(upload_queue.queue)}
|
||||
if upload_id not in upload_ids:
|
||||
return 404
|
||||
|
||||
|
@ -338,7 +338,7 @@ def getPublicKey():
|
|||
if not os.path.isfile(PERSIST + '/comma/id_rsa.pub'):
|
||||
return None
|
||||
|
||||
with open(PERSIST + '/comma/id_rsa.pub', 'r') as f:
|
||||
with open(PERSIST + '/comma/id_rsa.pub') as f:
|
||||
return f.read()
|
||||
|
||||
|
||||
|
@ -419,7 +419,7 @@ def log_handler(end_event):
|
|||
curr_time = int(time.time())
|
||||
log_path = os.path.join(SWAGLOG_DIR, log_entry)
|
||||
setxattr(log_path, LOG_ATTR_NAME, int.to_bytes(curr_time, 4, sys.byteorder))
|
||||
with open(log_path, "r") as f:
|
||||
with open(log_path) as f:
|
||||
jsonrpc = {
|
||||
"method": "forwardLogs",
|
||||
"params": {
|
||||
|
|
|
@ -30,7 +30,7 @@ class TestAthenadMethods(unittest.TestCase):
|
|||
athenad.ROOT = tempfile.mkdtemp()
|
||||
athenad.SWAGLOG_DIR = swaglog.SWAGLOG_DIR = tempfile.mkdtemp()
|
||||
athenad.Api = MockApi
|
||||
athenad.LOCAL_PORT_WHITELIST = set([cls.SOCKET_PORT])
|
||||
athenad.LOCAL_PORT_WHITELIST = {cls.SOCKET_PORT}
|
||||
|
||||
def setUp(self):
|
||||
MockParams.restore_defaults()
|
||||
|
|
|
@ -69,7 +69,7 @@ class TestBoardd(unittest.TestCase):
|
|||
for __ in range(random.randrange(100)):
|
||||
bus = random.choice([b for b in range(3*num_pandas) if b % 4 != 3])
|
||||
addr = random.randrange(1, 1<<29)
|
||||
dat = bytes([random.getrandbits(8) for _ in range(random.randrange(1, 9))])
|
||||
dat = bytes(random.getrandbits(8) for _ in range(random.randrange(1, 9)))
|
||||
sent_msgs[bus].add((addr, dat))
|
||||
to_send.append(make_can_msg(addr, dat, bus))
|
||||
sendcan.send(can_list_to_can_capnp(to_send, msgtype='sendcan'))
|
||||
|
|
|
@ -68,7 +68,7 @@ def _get_interface_names():
|
|||
model_names = __import__(f'selfdrive.car.{brand_name}.values', fromlist=['CAR']).CAR
|
||||
model_names = [getattr(model_names, c) for c in model_names.__dict__.keys() if not c.startswith("__")]
|
||||
brand_names[brand_name] = model_names
|
||||
except (ImportError, IOError):
|
||||
except (ImportError, OSError):
|
||||
pass
|
||||
|
||||
return brand_names
|
||||
|
|
|
@ -28,7 +28,7 @@ def get_attr_from_cars(attr, result=dict, combine_brands=True):
|
|||
elif isinstance(attr_values, list):
|
||||
result += attr_values
|
||||
|
||||
except (ImportError, IOError):
|
||||
except (ImportError, OSError):
|
||||
pass
|
||||
|
||||
return result
|
||||
|
|
|
@ -221,7 +221,7 @@ def match_fw_to_car_fuzzy(fw_versions_dict, log=True, exclude=None):
|
|||
if match_count >= 2:
|
||||
if log:
|
||||
cloudlog.error(f"Fingerprinted {candidate} using fuzzy match. {match_count} matching ECUs")
|
||||
return set([candidate])
|
||||
return {candidate}
|
||||
else:
|
||||
return set()
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#!/usr/bin/env python3
|
||||
from __future__ import print_function
|
||||
import math
|
||||
from cereal import car
|
||||
from opendbc.can.parser import CANParser
|
||||
|
|
|
@ -1385,9 +1385,9 @@ STEER_THRESHOLD = {
|
|||
CAR.CRV_EU: 400,
|
||||
}
|
||||
|
||||
HONDA_NIDEC_ALT_PCM_ACCEL = set([CAR.ODYSSEY])
|
||||
HONDA_NIDEC_ALT_SCM_MESSAGES = set([CAR.ACURA_ILX, CAR.ACURA_RDX, CAR.CRV, CAR.CRV_EU, CAR.FIT, CAR.FREED, CAR.HRV, CAR.ODYSSEY_CHN,
|
||||
CAR.PILOT, CAR.PILOT_2019, CAR.PASSPORT, CAR.RIDGELINE])
|
||||
HONDA_BOSCH = set([CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_5G,
|
||||
CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E])
|
||||
HONDA_BOSCH_ALT_BRAKE_SIGNAL = set([CAR.ACCORD, CAR.CRV_5G, CAR.ACURA_RDX_3G])
|
||||
HONDA_NIDEC_ALT_PCM_ACCEL = {CAR.ODYSSEY}
|
||||
HONDA_NIDEC_ALT_SCM_MESSAGES = {CAR.ACURA_ILX, CAR.ACURA_RDX, CAR.CRV, CAR.CRV_EU, CAR.FIT, CAR.FREED, CAR.HRV, CAR.ODYSSEY_CHN,
|
||||
CAR.PILOT, CAR.PILOT_2019, CAR.PASSPORT, CAR.RIDGELINE}
|
||||
HONDA_BOSCH = {CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_5G,
|
||||
CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E}
|
||||
HONDA_BOSCH_ALT_BRAKE_SIGNAL = {CAR.ACCORD, CAR.CRV_5G, CAR.ACURA_RDX_3G}
|
||||
|
|
|
@ -987,19 +987,19 @@ CHECKSUM = {
|
|||
|
||||
FEATURES = {
|
||||
# which message has the gear
|
||||
"use_cluster_gears": set([CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.KONA]),
|
||||
"use_tcu_gears": set([CAR.KIA_OPTIMA, CAR.SONATA_LF, CAR.VELOSTER]),
|
||||
"use_elect_gears": set([CAR.KIA_NIRO_EV, CAR.KIA_NIRO_HEV, CAR.KIA_NIRO_HEV_2021, CAR.KIA_OPTIMA_H, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.IONIQ, CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.ELANTRA_HEV_2021,CAR.SONATA_HYBRID, CAR.KONA_HEV, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022]),
|
||||
"use_cluster_gears": {CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.KONA},
|
||||
"use_tcu_gears": {CAR.KIA_OPTIMA, CAR.SONATA_LF, CAR.VELOSTER},
|
||||
"use_elect_gears": {CAR.KIA_NIRO_EV, CAR.KIA_NIRO_HEV, CAR.KIA_NIRO_HEV_2021, CAR.KIA_OPTIMA_H, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.IONIQ, CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.ELANTRA_HEV_2021,CAR.SONATA_HYBRID, CAR.KONA_HEV, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022},
|
||||
|
||||
# these cars use the FCA11 message for the AEB and FCW signals, all others use SCC12
|
||||
"use_fca": set([CAR.SONATA, CAR.SONATA_HYBRID, CAR.ELANTRA, CAR.ELANTRA_2021, CAR.ELANTRA_HEV_2021, CAR.ELANTRA_GT_I30, CAR.KIA_STINGER, CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.KONA_EV, CAR.KIA_FORTE, CAR.KIA_NIRO_EV, CAR.PALISADE, CAR.GENESIS_G70, CAR.GENESIS_G70_2020, CAR.KONA, CAR.SANTA_FE, CAR.KIA_SELTOS, CAR.KONA_HEV, CAR.SANTA_FE_2022, CAR.KIA_K5_2021, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022]),
|
||||
"use_fca": {CAR.SONATA, CAR.SONATA_HYBRID, CAR.ELANTRA, CAR.ELANTRA_2021, CAR.ELANTRA_HEV_2021, CAR.ELANTRA_GT_I30, CAR.KIA_STINGER, CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.KONA_EV, CAR.KIA_FORTE, CAR.KIA_NIRO_EV, CAR.PALISADE, CAR.GENESIS_G70, CAR.GENESIS_G70_2020, CAR.KONA, CAR.SANTA_FE, CAR.KIA_SELTOS, CAR.KONA_HEV, CAR.SANTA_FE_2022, CAR.KIA_K5_2021, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022},
|
||||
}
|
||||
|
||||
HYBRID_CAR = set([CAR.IONIQ_PHEV, CAR.ELANTRA_HEV_2021, CAR.KIA_NIRO_HEV, CAR.KIA_NIRO_HEV_2021, CAR.SONATA_HYBRID, CAR.KONA_HEV, CAR.IONIQ, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022]) # these cars use a different gas signal
|
||||
EV_CAR = set([CAR.IONIQ_EV_2020, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.KIA_NIRO_EV])
|
||||
HYBRID_CAR = {CAR.IONIQ_PHEV, CAR.ELANTRA_HEV_2021, CAR.KIA_NIRO_HEV, CAR.KIA_NIRO_HEV_2021, CAR.SONATA_HYBRID, CAR.KONA_HEV, CAR.IONIQ, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022} # these cars use a different gas signal
|
||||
EV_CAR = {CAR.IONIQ_EV_2020, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.KIA_NIRO_EV}
|
||||
|
||||
# these cars require a special panda safety mode due to missing counters and checksums in the messages
|
||||
LEGACY_SAFETY_MODE_CAR = set([CAR.HYUNDAI_GENESIS, CAR.IONIQ_EV_2020, CAR.IONIQ_EV_LTD, CAR.IONIQ_PHEV, CAR.IONIQ, CAR.KONA_EV, CAR.KIA_SORENTO, CAR.SONATA_LF, CAR.KIA_NIRO_EV, CAR.KIA_OPTIMA, CAR.VELOSTER, CAR.KIA_STINGER, CAR.GENESIS_G70, CAR.GENESIS_G80, CAR.KIA_CEED, CAR.ELANTRA, CAR.IONIQ_HEV_2022])
|
||||
LEGACY_SAFETY_MODE_CAR = {CAR.HYUNDAI_GENESIS, CAR.IONIQ_EV_2020, CAR.IONIQ_EV_LTD, CAR.IONIQ_PHEV, CAR.IONIQ, CAR.KONA_EV, CAR.KIA_SORENTO, CAR.SONATA_LF, CAR.KIA_NIRO_EV, CAR.KIA_OPTIMA, CAR.VELOSTER, CAR.KIA_STINGER, CAR.GENESIS_G70, CAR.GENESIS_G80, CAR.KIA_CEED, CAR.ELANTRA, CAR.IONIQ_HEV_2022}
|
||||
|
||||
# If 0x500 is present on bus 1 it probably has a Mando radar outputting radar points.
|
||||
# If no points are outputted by default it might be possible to turn it on using selfdrive/debug/hyundai_enable_radar_points.py
|
||||
|
|
|
@ -247,7 +247,7 @@ DBC = {
|
|||
}
|
||||
|
||||
# Gen 1 hardware: same CAN messages and same camera
|
||||
GEN1 = set([CAR.CX5, CAR.CX9, CAR.CX9_2021, CAR.MAZDA3, CAR.MAZDA6])
|
||||
GEN1 = {CAR.CX5, CAR.CX9, CAR.CX9_2021, CAR.MAZDA3, CAR.MAZDA6}
|
||||
|
||||
# Cars with a steering lockout
|
||||
STEER_LOCKOUT_CAR = set([CAR.CX5, CAR.CX9, CAR.MAZDA3, CAR.MAZDA6])
|
||||
STEER_LOCKOUT_CAR = {CAR.CX5, CAR.CX9, CAR.MAZDA3, CAR.MAZDA6}
|
||||
|
|
|
@ -1639,11 +1639,11 @@ DBC = {
|
|||
|
||||
|
||||
# Toyota/Lexus Safety Sense 2.0 and 2.5
|
||||
TSS2_CAR = set([CAR.RAV4_TSS2, CAR.COROLLA_TSS2, CAR.COROLLAH_TSS2, CAR.LEXUS_ES_TSS2, CAR.LEXUS_ESH_TSS2, CAR.RAV4H_TSS2,
|
||||
TSS2_CAR = {CAR.RAV4_TSS2, CAR.COROLLA_TSS2, CAR.COROLLAH_TSS2, CAR.LEXUS_ES_TSS2, CAR.LEXUS_ESH_TSS2, CAR.RAV4H_TSS2,
|
||||
CAR.LEXUS_RX_TSS2, CAR.LEXUS_RXH_TSS2, CAR.HIGHLANDER_TSS2, CAR.HIGHLANDERH_TSS2, CAR.PRIUS_TSS2, CAR.CAMRY_TSS2, CAR.CAMRYH_TSS2,
|
||||
CAR.MIRAI, CAR.LEXUS_NX_TSS2, CAR.ALPHARD_TSS2])
|
||||
CAR.MIRAI, CAR.LEXUS_NX_TSS2, CAR.ALPHARD_TSS2}
|
||||
|
||||
NO_DSU_CAR = TSS2_CAR | set([CAR.CHR, CAR.CHRH, CAR.CAMRY, CAR.CAMRYH])
|
||||
NO_DSU_CAR = TSS2_CAR | {CAR.CHR, CAR.CHRH, CAR.CAMRY, CAR.CAMRYH}
|
||||
|
||||
# no resume button press required
|
||||
NO_STOP_TIMER_CAR = TSS2_CAR | set([CAR.RAV4H, CAR.HIGHLANDERH, CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_ESH])
|
||||
NO_STOP_TIMER_CAR = TSS2_CAR | {CAR.RAV4H, CAR.HIGHLANDERH, CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_ESH}
|
||||
|
|
|
@ -346,7 +346,7 @@ class Controls:
|
|||
self.events.add(EventName.localizerMalfunction)
|
||||
|
||||
# Check if all manager processes are running
|
||||
not_running = set(p.name for p in self.sm['managerState'].processes if not p.running)
|
||||
not_running = {p.name for p in self.sm['managerState'].processes if not p.running}
|
||||
if self.sm.rcv_frame['managerState'] and (not_running - IGNORE_PROCESSES):
|
||||
self.events.add(EventName.processNotRunning)
|
||||
|
||||
|
|
|
@ -349,7 +349,7 @@ class LongitudinalMpc():
|
|||
self.solver.cost_set(N, "yref", self.yref[N][:COST_E_DIM])
|
||||
self.accel_limit_arr[:,0] = -10.
|
||||
self.accel_limit_arr[:,1] = 10.
|
||||
x_obstacle = 1e5*np.ones((N+1))
|
||||
x_obstacle = 1e5*np.ones(N+1)
|
||||
self.params = np.concatenate([self.accel_limit_arr,
|
||||
x_obstacle[:,None],
|
||||
self.prev_a[:,None]], axis=1)
|
||||
|
|
|
@ -135,7 +135,7 @@ class RadarD():
|
|||
self.tracks[ids].update(rpt[0], rpt[1], rpt[2], v_lead, rpt[3])
|
||||
|
||||
idens = list(sorted(self.tracks.keys()))
|
||||
track_pts = list([self.tracks[iden].get_key_for_cluster() for iden in idens])
|
||||
track_pts = [self.tracks[iden].get_key_for_cluster() for iden in idens]
|
||||
|
||||
# If we have multiple points, cluster them
|
||||
if len(track_pts) > 1:
|
||||
|
|
|
@ -118,6 +118,6 @@ if __name__ == "__main__":
|
|||
l.sort(key=lambda x: -x[1])
|
||||
for x in l:
|
||||
print(x[2])
|
||||
print('avg sum: {0:.2%} over {1} samples {2} seconds\n'.format(
|
||||
print('avg sum: {:.2%} over {} samples {} seconds\n'.format(
|
||||
sum(stat['avg']['total'] for k, stat in stats.items()), i, i * SLEEP_INTERVAL
|
||||
))
|
||||
|
|
|
@ -17,7 +17,7 @@ except PermissionError:
|
|||
print("WARNING: failed to make /dev/shm")
|
||||
|
||||
try:
|
||||
with open('/tmp/sensor-test-results.json', 'r') as infile:
|
||||
with open('/tmp/sensor-test-results.json') as infile:
|
||||
data = json.load(infile)
|
||||
except Exception:
|
||||
data = {'sensor-pass': 0, 'sensor-fail': 0}
|
||||
|
|
|
@ -23,7 +23,7 @@ if __name__ == "__main__":
|
|||
outputs = replay_process(cfg, inputs)
|
||||
|
||||
# Remove message generated by the process under test and merge in the new messages
|
||||
produces = set(o.which() for o in outputs)
|
||||
produces = {o.which() for o in outputs}
|
||||
inputs = [i for i in inputs if i.which() not in produces]
|
||||
outputs = sorted(inputs + outputs, key=lambda x: x.logMonoTime)
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ class LiveKalman():
|
|||
delta_x = sp.MatrixSymbol('delta_x', dim_state_err, 1)
|
||||
|
||||
err_function_sym = sp.Matrix(np.zeros((dim_state, 1)))
|
||||
delta_quat = sp.Matrix(np.ones((4)))
|
||||
delta_quat = sp.Matrix(np.ones(4))
|
||||
delta_quat[1:, :] = sp.Matrix(0.5 * delta_x[States.ECEF_ORIENTATION_ERR, :])
|
||||
err_function_sym[States.ECEF_POS, :] = sp.Matrix(nom_x[States.ECEF_POS, :] + delta_x[States.ECEF_POS_ERR, :])
|
||||
err_function_sym[States.ECEF_ORIENTATION, 0] = quat_matrix_r(nom_x[States.ECEF_ORIENTATION, 0]) * delta_quat
|
||||
|
|
|
@ -232,7 +232,7 @@ class LocKalman():
|
|||
|
||||
err_function_sym = sp.Matrix(np.zeros((dim_state, 1)))
|
||||
for q_idx, q_err_idx in zip(q_idxs, q_err_idxs):
|
||||
delta_quat = sp.Matrix(np.ones((4)))
|
||||
delta_quat = sp.Matrix(np.ones(4))
|
||||
delta_quat[1:, :] = sp.Matrix(0.5 * delta_x[q_err_idx[0]: q_err_idx[1], :])
|
||||
err_function_sym[q_idx[0]:q_idx[1], 0] = quat_matrix_r(nom_x[q_idx[0]:q_idx[1], 0]) * delta_quat
|
||||
for p_idx, p_err_idx in zip(p_idxs, p_err_idxs):
|
||||
|
|
|
@ -338,7 +338,7 @@ class UBloxDescriptor:
|
|||
ret += '%s, ' % v[a]
|
||||
ret = ret[:-2] + '], '
|
||||
elif isinstance(v, str):
|
||||
ret += '%s="%s", ' % (f, v.rstrip(' \0'))
|
||||
ret += '{}="{}", '.format(f, v.rstrip(' \0'))
|
||||
else:
|
||||
ret += '%s=%s, ' % (f, v)
|
||||
for r in msg._recs:
|
||||
|
@ -774,10 +774,9 @@ class UBlox:
|
|||
def read(self, n):
|
||||
'''read some bytes'''
|
||||
if self.use_sendrecv:
|
||||
import socket
|
||||
try:
|
||||
return self.dev.recv(n)
|
||||
except socket.error:
|
||||
except OSError:
|
||||
return ''
|
||||
return self.dev.read(n)
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ class TestDeleter(UploaderTestCase):
|
|||
|
||||
def setUp(self):
|
||||
self.f_type = "fcamera.hevc"
|
||||
super(TestDeleter, self).setUp()
|
||||
super().setUp()
|
||||
self.fake_stats = Stats(f_bavail=0, f_blocks=10, f_frsize=4096)
|
||||
deleter.os.statvfs = self.fake_statvfs
|
||||
deleter.ROOT = self.root
|
||||
|
|
|
@ -39,7 +39,7 @@ cloudlog.addHandler(log_handler)
|
|||
|
||||
class TestUploader(UploaderTestCase):
|
||||
def setUp(self):
|
||||
super(TestUploader, self).setUp()
|
||||
super().setUp()
|
||||
log_handler.reset()
|
||||
|
||||
def start_thread(self):
|
||||
|
|
|
@ -29,7 +29,7 @@ def unblock_stdout():
|
|||
|
||||
try:
|
||||
sys.stdout.write(dat.decode('utf8'))
|
||||
except (OSError, IOError, UnicodeDecodeError):
|
||||
except (OSError, UnicodeDecodeError):
|
||||
pass
|
||||
|
||||
# os.wait() returns a tuple with the pid and a 16 bit value
|
||||
|
|
|
@ -262,7 +262,7 @@ class DaemonProcess(ManagerProcess):
|
|||
|
||||
cloudlog.info(f"starting daemon {self.name}")
|
||||
proc = subprocess.Popen(['python', '-m', self.module], # pylint: disable=subprocess-popen-preexec-fn
|
||||
stdin=open('/dev/null', 'r'),
|
||||
stdin=open('/dev/null'),
|
||||
stdout=open('/dev/null', 'w'),
|
||||
stderr=open('/dev/null', 'w'),
|
||||
preexec_fn=os.setpgrp)
|
||||
|
|
|
@ -30,7 +30,7 @@ def flash_panda(panda_serial : str) -> Panda:
|
|||
|
||||
panda_version = "bootstub" if panda.bootstub else panda.get_version()
|
||||
panda_signature = b"" if panda.bootstub else panda.get_signature()
|
||||
cloudlog.warning("Panda %s connected, version: %s, signature %s, expected %s" % (
|
||||
cloudlog.warning("Panda {} connected, version: {}, signature {}, expected {}".format(
|
||||
panda_serial,
|
||||
panda_version,
|
||||
panda_signature.hex()[:16],
|
||||
|
|
|
@ -58,7 +58,7 @@ def compare_logs(log1, log2, ignore_fields=None, ignore_msgs=None, tolerance=Non
|
|||
if ignore_msgs is None:
|
||||
ignore_msgs = []
|
||||
|
||||
log1, log2 = [list(filter(lambda m: m.which() not in ignore_msgs, log)) for log in (log1, log2)]
|
||||
log1, log2 = (list(filter(lambda m: m.which() not in ignore_msgs, log)) for log in (log1, log2))
|
||||
|
||||
if len(log1) != len(log2):
|
||||
cnt1 = Counter(m.which() for m in log1)
|
||||
|
|
|
@ -89,7 +89,7 @@ class DumbSocket:
|
|||
|
||||
class FakeSubMaster(messaging.SubMaster):
|
||||
def __init__(self, services):
|
||||
super(FakeSubMaster, self).__init__(services, addr=None)
|
||||
super().__init__(services, addr=None)
|
||||
self.sock = {s: DumbSocket(s) for s in services}
|
||||
self.update_called = threading.Event()
|
||||
self.update_ready = threading.Event()
|
||||
|
@ -111,7 +111,7 @@ class FakeSubMaster(messaging.SubMaster):
|
|||
def update_msgs(self, cur_time, msgs):
|
||||
wait_for_event(self.update_called)
|
||||
self.update_called.clear()
|
||||
super(FakeSubMaster, self).update_msgs(cur_time, msgs)
|
||||
super().update_msgs(cur_time, msgs)
|
||||
self.update_ready.set()
|
||||
|
||||
def wait_for_update(self):
|
||||
|
|
|
@ -143,7 +143,7 @@ if __name__ == "__main__":
|
|||
|
||||
# check to make sure all car brands are tested
|
||||
if FULL_TEST:
|
||||
tested_cars = set(c.lower() for c, _ in segments)
|
||||
tested_cars = {c.lower() for c, _ in segments}
|
||||
untested = (set(interface_names) - set(excluded_interfaces)) - tested_cars
|
||||
assert len(untested) == 0, f"Cars missing routes: {str(untested)}"
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ def _get_fingerprints():
|
|||
car_name = car_folder.split('/')[-1]
|
||||
try:
|
||||
fingerprints[car_name] = __import__(f'selfdrive.car.{car_name}.values', fromlist=['FINGERPRINTS']).FINGERPRINTS
|
||||
except (ImportError, IOError, AttributeError):
|
||||
except (ImportError, OSError, AttributeError):
|
||||
pass
|
||||
|
||||
return fingerprints
|
||||
|
|
|
@ -81,7 +81,7 @@ def set_eon_fan(val):
|
|||
try:
|
||||
i = [0x1, 0x3 | 0, 0x3 | 0x08, 0x3 | 0x10][val]
|
||||
bus.write_i2c_block_data(0x3d, 0, [i])
|
||||
except IOError:
|
||||
except OSError:
|
||||
# tusb320
|
||||
if val == 0:
|
||||
bus.write_i2c_block_data(0x67, 0xa, [0])
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
import os
|
||||
from cffi import FFI
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ if __name__ == "__main__":
|
|||
while True:
|
||||
print("setting alert update")
|
||||
params.put_bool("UpdateAvailable", True)
|
||||
r = open(os.path.join(BASEDIR, "RELEASES.md"), "r").read()
|
||||
r = open(os.path.join(BASEDIR, "RELEASES.md")).read()
|
||||
r = r[:r.find('\n\n')] # Slice latest release notes
|
||||
params.put("ReleaseNotes", r + "\n")
|
||||
|
||||
|
|
|
@ -380,7 +380,7 @@ def main():
|
|||
ov_lock_fd = open(LOCK_FILE, 'w')
|
||||
try:
|
||||
fcntl.flock(ov_lock_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
raise RuntimeError("couldn't get overlay lock; is another instance running?") from e
|
||||
|
||||
# Set low io priority
|
||||
|
|
|
@ -109,7 +109,7 @@ def login(method):
|
|||
if 'code' in web_server.query_params:
|
||||
break
|
||||
elif 'error' in web_server.query_params:
|
||||
print('Authentication Error: "%s". Description: "%s" ' % (
|
||||
print('Authentication Error: "{}". Description: "{}" '.format(
|
||||
web_server.query_params['error'],
|
||||
web_server.query_params.get('error_description')), file=sys.stderr)
|
||||
break
|
||||
|
|
|
@ -572,15 +572,13 @@ class StreamFrameReader(StreamGOPReader, GOPFrameReader):
|
|||
|
||||
def GOPFrameIterator(gop_reader, pix_fmt):
|
||||
dec = VideoStreamDecompressor(gop_reader.fn, gop_reader.vid_fmt, gop_reader.w, gop_reader.h, pix_fmt)
|
||||
for frame in dec.read():
|
||||
yield frame
|
||||
yield from dec.read()
|
||||
|
||||
|
||||
def FrameIterator(fn, pix_fmt, **kwargs):
|
||||
fr = FrameReader(fn, **kwargs)
|
||||
if isinstance(fr, GOPReader):
|
||||
for v in GOPFrameIterator(fr, pix_fmt):
|
||||
yield v
|
||||
yield from GOPFrameIterator(fr, pix_fmt)
|
||||
else:
|
||||
for i in range(fr.frame_count):
|
||||
yield fr.get(i, pix_fmt=pix_fmt)[0]
|
||||
|
|
|
@ -12,7 +12,7 @@ except ImportError:
|
|||
from cereal import log as capnp_log
|
||||
|
||||
# this is an iterator itself, and uses private variables from LogReader
|
||||
class MultiLogIterator(object):
|
||||
class MultiLogIterator:
|
||||
def __init__(self, log_paths, wraparound=False):
|
||||
self._log_paths = log_paths
|
||||
self._wraparound = wraparound
|
||||
|
@ -74,7 +74,7 @@ class MultiLogIterator(object):
|
|||
return True
|
||||
|
||||
|
||||
class LogReader(object):
|
||||
class LogReader:
|
||||
def __init__(self, fn, canonicalize=True, only_union_types=False):
|
||||
data_version = None
|
||||
_, ext = os.path.splitext(urllib.parse.urlparse(fn).path)
|
||||
|
|
|
@ -18,7 +18,7 @@ CAMERA_FILENAMES = ['fcamera.hevc', 'video.hevc']
|
|||
DCAMERA_FILENAMES = ['dcamera.hevc']
|
||||
ECAMERA_FILENAMES = ['ecamera.hevc']
|
||||
|
||||
class Route(object):
|
||||
class Route:
|
||||
def __init__(self, route_name, data_dir=None):
|
||||
self.files = None
|
||||
self.route_name = route_name.replace('_', '|')
|
||||
|
@ -155,7 +155,7 @@ class Route(object):
|
|||
raise ValueError(f'Could not find segments for route {self.route_name} in data directory {data_dir}')
|
||||
return sorted(segments, key=lambda seg: seg.canonical_name.segment_num)
|
||||
|
||||
class RouteSegment(object):
|
||||
class RouteSegment:
|
||||
def __init__(self, name, log_path, qlog_path, camera_path, dcamera_path, ecamera_path, qcamera_path):
|
||||
self._name = RouteSegmentName(name)
|
||||
self.log_path = log_path
|
||||
|
@ -173,7 +173,7 @@ class RouteSegment(object):
|
|||
def canonical_name(self):
|
||||
return self._name
|
||||
|
||||
class RouteSegmentName(object):
|
||||
class RouteSegmentName:
|
||||
def __init__(self, name_str):
|
||||
self._segment_name_str = name_str
|
||||
self._route_name_str, num_str = self._segment_name_str.rsplit("--", 1)
|
||||
|
|
|
@ -22,7 +22,7 @@ def hash_256(link):
|
|||
return hsh
|
||||
|
||||
|
||||
class URLFile(object):
|
||||
class URLFile:
|
||||
_tlocal = threading.local()
|
||||
|
||||
def __init__(self, url, debug=False, cache=None):
|
||||
|
@ -70,7 +70,7 @@ class URLFile(object):
|
|||
return self._length
|
||||
file_length_path = os.path.join(CACHE_DIR, hash_256(self._url) + "_length")
|
||||
if os.path.exists(file_length_path) and not self._force_download:
|
||||
with open(file_length_path, "r") as file_length:
|
||||
with open(file_length_path) as file_length:
|
||||
content = file_length.read()
|
||||
self._length = int(content)
|
||||
return self._length
|
||||
|
|
|
@ -93,7 +93,7 @@ class Camerad:
|
|||
rgb_cl = cl_array.to_device(self.queue, rgb)
|
||||
yuv_cl = cl_array.empty_like(rgb_cl)
|
||||
self.krnl(self.queue, (np.int32(self.Wdiv4), np.int32(self.Hdiv4)), None, rgb_cl.data, yuv_cl.data).wait()
|
||||
yuv = np.resize(yuv_cl.get(), np.int32((rgb.size / 2)))
|
||||
yuv = np.resize(yuv_cl.get(), np.int32(rgb.size / 2))
|
||||
eof = self.frame_id * 0.05
|
||||
|
||||
# TODO: remove RGB send once the last RGB vipc subscriber is removed
|
||||
|
|
Loading…
Reference in New Issue