diff --git a/amodem/audio.py b/amodem/audio.py index dabe275..3b70ff8 100644 --- a/amodem/audio.py +++ b/amodem/audio.py @@ -26,7 +26,7 @@ class Interface: def call(self, name, *args, **kwargs): assert self.lib is not None - func_name = 'Pa_{0}'.format(name) + func_name = f'Pa_{name}' if self.debug: log.debug('API: %s%s', name, args) func = getattr(self.lib, func_name) @@ -81,7 +81,7 @@ class Stream: assert read != write # don't support full duplex direction = 'Input' if read else 'Output' - api_name = 'GetDefault{0}Device'.format(direction) + api_name = f'GetDefault{direction}Device' index = interface.call(api_name, restype=ctypes.c_int) self.params = Stream.Parameters( device=index, # choose default device diff --git a/amodem/calib.py b/amodem/calib.py index 4b9f50b..59f7f45 100644 --- a/amodem/calib.py +++ b/amodem/calib.py @@ -18,7 +18,7 @@ def volume_controller(cmd): def controller(level): assert 0 < level <= 1 percent = 100 * level - args = '{0} {1:.0f}%'.format(cmd, percent) + args = f'{cmd} {percent:.0f}%' log.debug('Setting volume to %7.3f%% -> "%s"', percent, args) subprocess.check_call(args=args, shell=True) return controller if cmd else (lambda level: None) @@ -73,7 +73,7 @@ def detector(config, src, frame_length=200): if success: msg = 'good signal' else: - msg = 'too {0} signal'.format(errors[flags.index(False)]) + msg = f'too {errors[flags.index(False)]} signal' yield dict( freq=freq, rms=rms, peak=peak, coherency=coherency, @@ -135,7 +135,7 @@ def recv(config, src, verbose=False, volume_cmd=None, dump_audio=None): log.info('verbose: %s', verbose) if verbose: fields = ['total', 'rms', 'coherency', 'peak'] - fmt += ', '.join('{0}={{{0}:.4f}}'.format(f) for f in fields) + fmt += ', '.join(f'{f}={{{f}:.4f}}' for f in fields) for state in recv_iter(config, src, volume_cmd, dump_audio): log.info(fmt.format(**state)) diff --git a/amodem/detect.py b/amodem/detect.py index 7677e90..be47285 100644 --- a/amodem/detect.py +++ b/amodem/detect.py @@ -113,5 +113,5 @@ class Detector: freq_err = a / (self.Tsym * self.freq) log.info('Frequency error: %.3f ppm', freq_err * 1e6) - self.plt.title('Frequency drift: {0:.3f} ppm'.format(freq_err * 1e6)) + self.plt.title(f'Frequency drift: {freq_err * 1e6:.3f} ppm') return amplitude, freq_err diff --git a/amodem/recv.py b/amodem/recv.py index 84f21f0..c4f6c66 100644 --- a/amodem/recv.py +++ b/amodem/recv.py @@ -45,7 +45,7 @@ class Receiver: self.plt.plot(equalizer.prefix) errors = (bits != equalizer.prefix) if any(errors): - msg = 'Incorrect prefix: {0} errors'.format(sum(errors)) + msg = f'Incorrect prefix: {sum(errors)} errors' raise ValueError(msg) log.debug('Prefix OK') @@ -94,7 +94,7 @@ class Receiver: for (i, freq), snr in zip(enumerate(self.frequencies), SNRs): log.debug('%5.1f kHz: SNR = %5.2f dB', freq / 1e3, snr) self._constellation(symbols[:, i], train_symbols[:, i], - '$F_c = {0} Hz$'.format(freq), index=i) + f'$F_c = {freq} Hz$', index=i) assert error_rate == 0, error_rate log.debug('Training verified') @@ -188,7 +188,7 @@ class Receiver: symbol_list = np.array(self.stats['symbol_list']) for i, freq in enumerate(self.frequencies): self._constellation(symbol_list[i], self.modem.symbols, - '$F_c = {0} Hz$'.format(freq), index=i) + f'$F_c = {freq} Hz$', index=i) self.plt.show() def _constellation(self, y, symbols, title, index=None):