diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index adfa8673f..996ac97f8 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -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": { diff --git a/selfdrive/athena/tests/test_athenad.py b/selfdrive/athena/tests/test_athenad.py index d96e32abc..bf6d3940f 100755 --- a/selfdrive/athena/tests/test_athenad.py +++ b/selfdrive/athena/tests/test_athenad.py @@ -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() diff --git a/selfdrive/boardd/tests/test_boardd_loopback.py b/selfdrive/boardd/tests/test_boardd_loopback.py index 24c6f2e30..631b4c987 100755 --- a/selfdrive/boardd/tests/test_boardd_loopback.py +++ b/selfdrive/boardd/tests/test_boardd_loopback.py @@ -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')) diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 5c4208625..6cce7e62d 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -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 diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index ed5892a01..9b280f3b4 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -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 diff --git a/selfdrive/car/fw_versions.py b/selfdrive/car/fw_versions.py index 1c04f313e..af7b715fe 100755 --- a/selfdrive/car/fw_versions.py +++ b/selfdrive/car/fw_versions.py @@ -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() diff --git a/selfdrive/car/gm/radar_interface.py b/selfdrive/car/gm/radar_interface.py index 4cb1e0781..d1ad1c163 100755 --- a/selfdrive/car/gm/radar_interface.py +++ b/selfdrive/car/gm/radar_interface.py @@ -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 diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index 083a52bb8..cbe2369b1 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -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} diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index df2e10dbe..64e833092 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -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 diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index e03b092fe..f18c30176 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.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} diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 6ad58e563..4605620a2 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -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} diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 1933ab528..e6552d4b6 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -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) diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py b/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py index 3a8234706..1b0afe1cf 100644 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py +++ b/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py @@ -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) diff --git a/selfdrive/controls/radard.py b/selfdrive/controls/radard.py index 14de2eff3..1ed1a0dbf 100755 --- a/selfdrive/controls/radard.py +++ b/selfdrive/controls/radard.py @@ -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: diff --git a/selfdrive/debug/cpu_usage_stat.py b/selfdrive/debug/cpu_usage_stat.py index 5f181e0a2..76e809d2c 100755 --- a/selfdrive/debug/cpu_usage_stat.py +++ b/selfdrive/debug/cpu_usage_stat.py @@ -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 )) diff --git a/selfdrive/debug/internal/sensor_test_bootloop.py b/selfdrive/debug/internal/sensor_test_bootloop.py index 9e89add6b..36eb112e4 100755 --- a/selfdrive/debug/internal/sensor_test_bootloop.py +++ b/selfdrive/debug/internal/sensor_test_bootloop.py @@ -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} diff --git a/selfdrive/debug/run_process_on_route.py b/selfdrive/debug/run_process_on_route.py index bcb741f54..bc052bf9b 100755 --- a/selfdrive/debug/run_process_on_route.py +++ b/selfdrive/debug/run_process_on_route.py @@ -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) diff --git a/selfdrive/locationd/models/live_kf.py b/selfdrive/locationd/models/live_kf.py index fa5294593..023479d10 100755 --- a/selfdrive/locationd/models/live_kf.py +++ b/selfdrive/locationd/models/live_kf.py @@ -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 diff --git a/selfdrive/locationd/models/loc_kf.py b/selfdrive/locationd/models/loc_kf.py index adb9098d4..199cc7e20 100755 --- a/selfdrive/locationd/models/loc_kf.py +++ b/selfdrive/locationd/models/loc_kf.py @@ -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): diff --git a/selfdrive/locationd/test/ublox.py b/selfdrive/locationd/test/ublox.py index 04422a81c..9cffbeac4 100644 --- a/selfdrive/locationd/test/ublox.py +++ b/selfdrive/locationd/test/ublox.py @@ -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) diff --git a/selfdrive/loggerd/tests/test_deleter.py b/selfdrive/loggerd/tests/test_deleter.py index 89904e694..e0a063bd4 100644 --- a/selfdrive/loggerd/tests/test_deleter.py +++ b/selfdrive/loggerd/tests/test_deleter.py @@ -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 diff --git a/selfdrive/loggerd/tests/test_uploader.py b/selfdrive/loggerd/tests/test_uploader.py index 8562f5f21..54c65db73 100755 --- a/selfdrive/loggerd/tests/test_uploader.py +++ b/selfdrive/loggerd/tests/test_uploader.py @@ -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): diff --git a/selfdrive/manager/helpers.py b/selfdrive/manager/helpers.py index fdda0deb9..7ac71ae37 100644 --- a/selfdrive/manager/helpers.py +++ b/selfdrive/manager/helpers.py @@ -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 diff --git a/selfdrive/manager/process.py b/selfdrive/manager/process.py index 2030b35e3..45331a46f 100644 --- a/selfdrive/manager/process.py +++ b/selfdrive/manager/process.py @@ -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) diff --git a/selfdrive/pandad.py b/selfdrive/pandad.py index b725ca9dd..7eef5c2a3 100755 --- a/selfdrive/pandad.py +++ b/selfdrive/pandad.py @@ -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], diff --git a/selfdrive/test/process_replay/compare_logs.py b/selfdrive/test/process_replay/compare_logs.py index eb058b354..72f5e51bb 100755 --- a/selfdrive/test/process_replay/compare_logs.py +++ b/selfdrive/test/process_replay/compare_logs.py @@ -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) diff --git a/selfdrive/test/process_replay/process_replay.py b/selfdrive/test/process_replay/process_replay.py index ccdbc2754..8a13e4b18 100755 --- a/selfdrive/test/process_replay/process_replay.py +++ b/selfdrive/test/process_replay/process_replay.py @@ -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): diff --git a/selfdrive/test/process_replay/test_processes.py b/selfdrive/test/process_replay/test_processes.py index 3283ec819..6c33b4622 100755 --- a/selfdrive/test/process_replay/test_processes.py +++ b/selfdrive/test/process_replay/test_processes.py @@ -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)}" diff --git a/selfdrive/test/test_fingerprints.py b/selfdrive/test/test_fingerprints.py index 96bb5ffa0..4ea60a76a 100755 --- a/selfdrive/test/test_fingerprints.py +++ b/selfdrive/test/test_fingerprints.py @@ -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 diff --git a/selfdrive/thermald/thermald.py b/selfdrive/thermald/thermald.py index 1b467f962..28d21620f 100755 --- a/selfdrive/thermald/thermald.py +++ b/selfdrive/thermald/thermald.py @@ -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]) diff --git a/selfdrive/ui/qt/python_helpers.py b/selfdrive/ui/qt/python_helpers.py index 4dd99951b..905d41a63 100644 --- a/selfdrive/ui/qt/python_helpers.py +++ b/selfdrive/ui/qt/python_helpers.py @@ -1,4 +1,3 @@ - import os from cffi import FFI diff --git a/selfdrive/ui/tests/cycle_offroad_alerts.py b/selfdrive/ui/tests/cycle_offroad_alerts.py index 6b3453026..6b6aea447 100755 --- a/selfdrive/ui/tests/cycle_offroad_alerts.py +++ b/selfdrive/ui/tests/cycle_offroad_alerts.py @@ -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") diff --git a/selfdrive/updated.py b/selfdrive/updated.py index eaaed0e8d..695b84e15 100755 --- a/selfdrive/updated.py +++ b/selfdrive/updated.py @@ -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 diff --git a/tools/lib/auth.py b/tools/lib/auth.py index d5d2a60bb..0e9e7705b 100755 --- a/tools/lib/auth.py +++ b/tools/lib/auth.py @@ -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 diff --git a/tools/lib/framereader.py b/tools/lib/framereader.py index bd7980f6e..ac5962462 100644 --- a/tools/lib/framereader.py +++ b/tools/lib/framereader.py @@ -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] diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py index 1c9cc81e3..3e535b56c 100755 --- a/tools/lib/logreader.py +++ b/tools/lib/logreader.py @@ -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) diff --git a/tools/lib/route.py b/tools/lib/route.py index 76ca2bcf5..c3bb94dad 100644 --- a/tools/lib/route.py +++ b/tools/lib/route.py @@ -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) diff --git a/tools/lib/url_file.py b/tools/lib/url_file.py index 82f7c971f..8ad2f96b3 100644 --- a/tools/lib/url_file.py +++ b/tools/lib/url_file.py @@ -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 diff --git a/tools/sim/bridge.py b/tools/sim/bridge.py index 9924a40b1..2e19faefc 100755 --- a/tools/sim/bridge.py +++ b/tools/sim/bridge.py @@ -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