From: Thomas Fillon Date: Wed, 14 May 2014 14:54:28 +0000 (+0200) Subject: Fix many PyFlake warnings X-Git-Tag: 0.5.5~1^2~26^2~2^2^2 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=249533b0d593972685cbbfbea54aabf404ffb0e7;p=timeside.git Fix many PyFlake warnings --- diff --git a/timeside/analyzer/__init__.py b/timeside/analyzer/__init__.py index 7da90fd..062ee5c 100644 --- a/timeside/analyzer/__init__.py +++ b/timeside/analyzer/__init__.py @@ -10,6 +10,7 @@ except ImportError: WITH_AUBIO = False else: del aubio + # Yaafe try: WITH_YAAFE = True @@ -18,6 +19,7 @@ except ImportError: WITH_YAAFE = False else: del yaafelib + # Vamp Plugins try: from . vamp_plugin import VampSimpleHost diff --git a/timeside/analyzer/aubio/aubio_specdesc.py b/timeside/analyzer/aubio/aubio_specdesc.py index 40fbb63..e74ae75 100644 --- a/timeside/analyzer/aubio/aubio_specdesc.py +++ b/timeside/analyzer/aubio/aubio_specdesc.py @@ -19,7 +19,7 @@ # Author: Paul Brossier -from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter +from timeside.core import implements, interfacedoc from timeside.analyzer.core import Analyzer from timeside.api import IAnalyzer from timeside.analyzer.preprocessors import downmix_to_mono, frames_adapter diff --git a/timeside/analyzer/irit_speech_4hz.py b/timeside/analyzer/irit_speech_4hz.py index 916e55d..73579f9 100644 --- a/timeside/analyzer/irit_speech_4hz.py +++ b/timeside/analyzer/irit_speech_4hz.py @@ -24,7 +24,7 @@ from timeside.analyzer.core import Analyzer from timeside.analyzer.utils import melFilterBank, computeModulation from timeside.analyzer.utils import segmentFromValues from timeside.api import IAnalyzer -from numpy import array, hamming, dot, mean, float, isnan +from numpy import array, hamming, dot, mean, float from numpy.fft import rfft from scipy.signal import firwin, lfilter diff --git a/timeside/analyzer/odf.py b/timeside/analyzer/odf.py index 7320296..5b05309 100644 --- a/timeside/analyzer/odf.py +++ b/timeside/analyzer/odf.py @@ -78,10 +78,6 @@ class OnsetDetectionFunction(Analyzer): # Low-pass filtering of the spectrogram amplitude along the time axis S = signal.lfilter(signal.hann(15)[8:], 1, abs(spectrogram), axis=0) - import matplotlib.pyplot as plt -# plt.figure() -# plt.imshow(np.log10(abs(spectrogram)), origin='lower', aspect='auto', interpolation='nearest') - # Clip small value to a minimal threshold np.maximum(S, 1e-9, out=S) diff --git a/timeside/analyzer/waveform.py b/timeside/analyzer/waveform.py index bdd1a9b..713fbf7 100644 --- a/timeside/analyzer/waveform.py +++ b/timeside/analyzer/waveform.py @@ -24,8 +24,6 @@ from timeside.analyzer.core import Analyzer from timeside.api import IAnalyzer import numpy as np -from timeside.analyzer.preprocessors import downmix_to_mono, frames_adapter - class Waveform(Analyzer): diff --git a/timeside/analyzer/yaafe.py b/timeside/analyzer/yaafe.py index f16386f..5312766 100644 --- a/timeside/analyzer/yaafe.py +++ b/timeside/analyzer/yaafe.py @@ -28,7 +28,7 @@ from timeside.api import IAnalyzer #from timeside.analyzer import WITH_YAAFE WITH_YAAFE = True if WITH_YAAFE: - from yaafelib import * + import yaafelib import numpy from timeside.analyzer.preprocessors import downmix_to_mono @@ -42,21 +42,21 @@ class Yaafe(Analyzer): # Check arguments if yaafeSpecification is None: - yaafeSpecification = FeaturePlan(sample_rate=32000) + yaafeSpecification = yaafelib.FeaturePlan(sample_rate=32000) # add feature definitions manually yaafeSpecification.addFeature( 'mfcc: MFCC blockSize=512 stepSize=256') - if isinstance(yaafeSpecification, DataFlow): + if isinstance(yaafeSpecification, yaafelib.DataFlow): self.dataFlow = yaafeSpecification - elif isinstance(yaafeSpecification, FeaturePlan): + elif isinstance(yaafeSpecification, yaafelib.FeaturePlan): self.featurePlan = yaafeSpecification self.dataFlow = self.featurePlan.getDataFlow() else: raise TypeError("'%s' Type must be either '%s' or '%s'" % (str(yaafeSpecification), - str(DataFlow), - str(FeaturePlan))) + str(yaafelib.DataFlow), + str(yaafelib.FeaturePlan))) self.yaafe_engine = None @interfacedoc @@ -64,7 +64,7 @@ class Yaafe(Analyzer): blocksize=None, totalframes=None): super(Yaafe, self).setup(channels, samplerate, blocksize, totalframes) # Configure a YAAFE engine - self.yaafe_engine = Engine() + self.yaafe_engine = yaafelib.Engine() self.yaafe_engine.load(self.dataFlow) self.yaafe_engine.reset() self.input_samplerate = samplerate diff --git a/timeside/decoder/array.py b/timeside/decoder/array.py index f5559ad..cbe0d8f 100644 --- a/timeside/decoder/array.py +++ b/timeside/decoder/array.py @@ -26,8 +26,8 @@ # Guillaume Pellerin # Thomas Fillon - -from timeside.decoder.core import * +from timeside.core import implements, interfacedoc +from timeside.decoder.core import Decoder, IDecoder import numpy as np diff --git a/timeside/decoder/core.py b/timeside/decoder/core.py index 9c2307f..ac9c551 100644 --- a/timeside/decoder/core.py +++ b/timeside/decoder/core.py @@ -30,7 +30,6 @@ from __future__ import division from timeside.core import Processor, implements, interfacedoc, abstract from timeside.api import IDecoder -from timeside.tools import * class Decoder(Processor): @@ -101,6 +100,3 @@ class Decoder(Processor): @interfacedoc def resolution(self): return self.input_width - - def stop(self): - self.src.send_event(gst.event_new_eos()) diff --git a/timeside/decoder/file.py b/timeside/decoder/file.py index 2da8f6d..b1caa3f 100644 --- a/timeside/decoder/file.py +++ b/timeside/decoder/file.py @@ -29,7 +29,8 @@ from __future__ import division from timeside.decoder.core import Decoder, IDecoder, implements, interfacedoc -from timeside.tools.gstutils import MainloopThread, gobject, gst_buffer_to_numpy_array +from timeside.tools.gstutils import MainloopThread, gobject +from timeside.tools.gstutils import gst_buffer_to_numpy_array import threading from timeside.decoder.utils import get_uri, get_media_uri_info, stack, get_sha1 @@ -351,6 +352,8 @@ class FileDecoder(Decoder): # TODO check return self.tags + def stop(self): + self.src.send_event(gst.event_new_eos()) if __name__ == "__main__": import doctest diff --git a/timeside/decoder/live.py b/timeside/decoder/live.py index 70cd997..6f422dd 100644 --- a/timeside/decoder/live.py +++ b/timeside/decoder/live.py @@ -28,26 +28,23 @@ from __future__ import division -from timeside.decoder.core import * -from timeside.tools.gstutils import MainloopThread - +from timeside.decoder.core import Decoder, IDecoder, interfacedoc, implements +from timeside.tools.gstutils import MainloopThread, gobject +from . file import FileDecoder import Queue -from gst import _gst as gst +import threading +from gst import _gst as gst GST_APPSINK_MAX_BUFFERS = 10 QUEUE_SIZE = 10 -class LiveDecoder(Decoder): - +class LiveDecoder(FileDecoder): """ gstreamer-based decoder from live source""" implements(IDecoder) - output_blocksize = 8 * 1024 - - pipeline = None - mainloopthread = None + # IProcessor methods @staticmethod @interfacedoc @@ -101,7 +98,6 @@ class LiveDecoder(Decoder): self.last_buffer = None # a lock to wait wait for gstreamer thread to be ready - import threading self.discovered_cond = threading.Condition(threading.Lock()) self.discovered = False @@ -174,88 +170,6 @@ class LiveDecoder(Decoder): else: raise IOError('no known audio stream found') - def _notify_caps_cb(self, pad, args): - self.discovered_cond.acquire() - - caps = pad.get_negotiated_caps() - if not caps: - pad.info("no negotiated caps available") - self.discovered = True - self.discovered_cond.notify() - self.discovered_cond.release() - return - # the caps are fixed - # We now get the total length of that stream - q = gst.query_new_duration(gst.FORMAT_TIME) - pad.info("sending duration query") - if pad.get_peer().query(q): - format, length = q.parse_duration() - if format == gst.FORMAT_TIME: - pad.info("got duration (time) : %s" % (gst.TIME_ARGS(length),)) - else: - pad.info("got duration : %d [format:%d]" % (length, format)) - else: - length = -1 - gst.warning("duration query failed") - - # We store the caps and length in the proper location - if "audio" in caps.to_string(): - self.input_samplerate = caps[0]["rate"] - if not self.output_samplerate: - self.output_samplerate = self.input_samplerate - self.input_channels = caps[0]["channels"] - if not self.output_channels: - self.output_channels = self.input_channels - self.input_duration = length / 1.e9 - - self.input_totalframes = int( - self.input_duration * self.input_samplerate) - if "x-raw-float" in caps.to_string(): - self.input_width = caps[0]["width"] - else: - self.input_width = caps[0]["depth"] - - self.discovered = True - self.discovered_cond.notify() - self.discovered_cond.release() - - def _on_message_cb(self, bus, message): - t = message.type - if t == gst.MESSAGE_EOS: - self.queue.put(gst.MESSAGE_EOS) - self.pipeline.set_state(gst.STATE_NULL) - self.mainloop.quit() - elif t == gst.MESSAGE_ERROR: - self.pipeline.set_state(gst.STATE_NULL) - err, debug = message.parse_error() - self.discovered_cond.acquire() - self.discovered = True - self.mainloop.quit() - self.error_msg = "Error: %s" % err, debug - self.discovered_cond.notify() - self.discovered_cond.release() - elif t == gst.MESSAGE_TAG: - # TODO - # msg.parse_tags() - pass - - def _on_new_buffer_cb(self, sink): - buf = sink.emit('pull-buffer') - new_array = gst_buffer_to_numpy_array(buf, self.output_channels) - - # print 'processing new buffer', new_array.shape - if self.last_buffer is None: - self.last_buffer = new_array - else: - self.last_buffer = np.concatenate( - (self.last_buffer, new_array), axis=0) - while self.last_buffer.shape[0] >= self.output_blocksize: - new_block = self.last_buffer[:self.output_blocksize] - self.last_buffer = self.last_buffer[self.output_blocksize:] - # print 'queueing', new_block.shape, 'remaining', - # self.last_buffer.shape - self.queue.put([new_block, False]) - @interfacedoc def process(self): buf = self.queue.get() @@ -265,41 +179,11 @@ class LiveDecoder(Decoder): frames, eod = buf return frames, eod - @interfacedoc - def totalframes(self): - if self.input_samplerate == self.output_samplerate: - return self.input_totalframes - else: - ratio = self.output_samplerate / self.input_samplerate - return int(self.input_totalframes * ratio) - - @interfacedoc def release(self): - if self.stack: - self.stack = False - self.from_stack = True + # TODO : check if stack support is needed here + #if self.stack: + # self.stack = False + # self.from_stack = True pass # IDecoder methods - - @interfacedoc - def format(self): - # TODO check - if self.mimetype == 'application/x-id3': - self.mimetype = 'audio/mpeg' - return self.mimetype - - @interfacedoc - def encoding(self): - # TODO check - return self.mimetype.split('/')[-1] - - @interfacedoc - def resolution(self): - # TODO check: width or depth? - return self.input_width - - @interfacedoc - def metadata(self): - # TODO check - return self.tags diff --git a/timeside/encoder/audiosink.py b/timeside/encoder/audiosink.py index 5424700..2bfc5c7 100644 --- a/timeside/encoder/audiosink.py +++ b/timeside/encoder/audiosink.py @@ -23,7 +23,6 @@ from timeside.core import implements, interfacedoc from timeside.encoder.core import GstEncoder from timeside.api import IEncoder -from timeside.tools import * class AudioSink(GstEncoder): diff --git a/timeside/encoder/core.py b/timeside/encoder/core.py index 72acbf2..c3e9a01 100644 --- a/timeside/encoder/core.py +++ b/timeside/encoder/core.py @@ -25,7 +25,7 @@ from timeside.core import Processor, implements, interfacedoc from timeside.component import abstract from timeside.api import IEncoder -from timeside.tools import numpy_array_to_gst_buffer, MainloopThread +from timeside.tools.gstutils import numpy_array_to_gst_buffer, MainloopThread import pygst pygst.require('0.10') diff --git a/timeside/encoder/flac.py b/timeside/encoder/flac.py index 542079b..ac51143 100644 --- a/timeside/encoder/flac.py +++ b/timeside/encoder/flac.py @@ -19,10 +19,9 @@ # Author: Guillaume Pellerin -from timeside.core import Processor, implements, interfacedoc +from timeside.core import implements, interfacedoc from timeside.encoder.core import GstEncoder from timeside.api import IEncoder -from timeside.tools import * class FlacEncoder(GstEncoder): diff --git a/timeside/encoder/m4a.py b/timeside/encoder/m4a.py index a036d21..66c1ac9 100644 --- a/timeside/encoder/m4a.py +++ b/timeside/encoder/m4a.py @@ -22,7 +22,6 @@ from timeside.core import implements, interfacedoc from timeside.encoder.core import GstEncoder from timeside.api import IEncoder -from timeside.tools import * class AacEncoder(GstEncoder): diff --git a/timeside/encoder/ogg.py b/timeside/encoder/ogg.py index cf1f249..da0aef0 100644 --- a/timeside/encoder/ogg.py +++ b/timeside/encoder/ogg.py @@ -19,10 +19,9 @@ # along with TimeSide. If not, see . -from timeside.core import Processor, implements, interfacedoc +from timeside.core import implements, interfacedoc from timeside.encoder.core import GstEncoder from timeside.api import IEncoder -from timeside.tools import * class VorbisEncoder(GstEncoder): diff --git a/timeside/encoder/wav.py b/timeside/encoder/wav.py index 99c9a4b..03b77c5 100644 --- a/timeside/encoder/wav.py +++ b/timeside/encoder/wav.py @@ -20,10 +20,9 @@ # Author: Paul Brossier -from timeside.core import Processor, implements, interfacedoc +from timeside.core import implements, interfacedoc from timeside.encoder.core import GstEncoder from timeside.api import IEncoder -from timeside.tools import * class WavEncoder(GstEncoder): diff --git a/timeside/encoder/webm.py b/timeside/encoder/webm.py index de01d48..1952324 100644 --- a/timeside/encoder/webm.py +++ b/timeside/encoder/webm.py @@ -19,10 +19,9 @@ # along with TimeSide. If not, see . -from timeside.core import Processor, implements, interfacedoc +from timeside.core import implements, interfacedoc from timeside.encoder.core import GstEncoder from timeside.api import IEncoder -from timeside.tools import * class WebMEncoder(GstEncoder): diff --git a/timeside/grapher/core.py b/timeside/grapher/core.py index a77596e..884ea80 100644 --- a/timeside/grapher/core.py +++ b/timeside/grapher/core.py @@ -22,32 +22,27 @@ # Guillaume Pellerin -import optparse import math -import sys import numpy try: - from PIL import ImageFilter, ImageChops, Image, ImageDraw, ImageColor, ImageEnhance + from PIL import Image, ImageDraw except ImportError: - import ImageFilter - import ImageChops import Image import ImageDraw - import ImageColor - import ImageEnhance -from timeside.core import * +from timeside.core import Processor, implements, interfacedoc, abstract +from timeside.core import FixedSizeInputAdapter from timeside.api import IGrapher -from timeside.grapher.color_schemes import default_color_schemes -from utils import * +from . utils import smooth, im_watermark, normalize class Spectrum(object): """ FFT based frequency analysis of audio frames.""" - def __init__(self, fft_size, samplerate, blocksize, totalframes, lower, higher, window_function=None): + def __init__(self, fft_size, samplerate, blocksize, + totalframes, lower, higher, window_function=None): self.fft_size = fft_size self.window = window_function(self.fft_size) self.window_function = window_function @@ -70,7 +65,8 @@ class Spectrum(object): self.window = self.window_function(self.blocksize) def process(self, frames, eod, spec_range=120.0): - """ Returns a tuple containing the spectral centroid and the spectrum (dB scales) of the input audio frames. + """ Returns a tuple containing the spectral centroid and + the spectrum (dB scales) of the input audio frames. FFT window sizes are adatable to the input frame size.""" samples = frames[:, 0] @@ -108,8 +104,11 @@ class Spectrum(object): (energy * (length - 1)) * \ self.samplerate * 0.5 # clip > log10 > scale between 0 and 1 - spectral_centroid = (math.log10(self.clip(spectral_centroid, self.lower, self.higher)) - - self.lower_log) / (self.higher_log - self.lower_log) + spectral_centroid = (math.log10(self.clip(spectral_centroid, + self.lower, + self.higher)) - + self.lower_log) / (self.higher_log - + self.lower_log) return (spectral_centroid, db_spectrum) diff --git a/timeside/grapher/render_analyzers.py b/timeside/grapher/render_analyzers.py index c16e9f3..8d438a9 100644 --- a/timeside/grapher/render_analyzers.py +++ b/timeside/grapher/render_analyzers.py @@ -22,7 +22,7 @@ from __future__ import division from timeside.core import implements, interfacedoc, abstract, get_processor from timeside.api import IGrapher -from core import Grapher, Image +from core import Grapher from .. import analyzer diff --git a/timeside/grapher/spectrogram_lin.py b/timeside/grapher/spectrogram_lin.py index 6e51268..7e2e0ab 100644 --- a/timeside/grapher/spectrogram_lin.py +++ b/timeside/grapher/spectrogram_lin.py @@ -21,7 +21,7 @@ from timeside.core import implements, interfacedoc from timeside.api import IGrapher -from timeside.grapher.core import * +#from timeside.grapher.core import * from timeside.grapher.spectrogram_log import SpectrogramLog diff --git a/timeside/grapher/spectrogram_log.py b/timeside/grapher/spectrogram_log.py index b3a8e96..21be1d2 100644 --- a/timeside/grapher/spectrogram_log.py +++ b/timeside/grapher/spectrogram_log.py @@ -21,18 +21,24 @@ from timeside.core import implements, interfacedoc from timeside.api import IGrapher -from timeside.grapher.core import * +from timeside.grapher.core import Grapher, Image +from timeside.grapher.color_schemes import default_color_schemes +from . utils import interpolate_colors +import math class SpectrogramLog(Grapher): - """ Builds a PIL image representing a spectrogram of the audio stream (level vs. frequency vs. time). - Adds pixels iteratively thanks to the adapter providing fixed size frame buffers.""" + """ Builds a PIL image representing a spectrogram of the audio stream + (level vs. frequency vs. time). + Adds pixels iteratively thanks to the adapter providing + fixed size frame buffers.""" implements(IGrapher) @interfacedoc - def __init__(self, width=1024, height=256, bg_color=(0, 0, 0), color_scheme='default'): + def __init__(self, width=1024, height=256, bg_color=(0, 0, 0), + color_scheme='default'): super(SpectrogramLog, self).__init__( width, height, bg_color, color_scheme) self.lower_freq = 100 @@ -51,7 +57,8 @@ class SpectrogramLog(Grapher): return "Spectrogram Log" @interfacedoc - def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): + def setup(self, channels=None, samplerate=None, blocksize=None, + totalframes=None): super(SpectrogramLog, self).setup( channels, samplerate, blocksize, totalframes) self.image = self.image.convert("P") diff --git a/timeside/grapher/utils.py b/timeside/grapher/utils.py index 7adbf3c..e6b190d 100644 --- a/timeside/grapher/utils.py +++ b/timeside/grapher/utils.py @@ -26,10 +26,8 @@ # Guillaume Pellerin try: - from PIL import ImageFilter, ImageChops, Image, ImageDraw, ImageColor, ImageEnhance + from PIL import Image, ImageDraw, ImageColor, ImageEnhance except ImportError: - import ImageFilter - import ImageChops import Image import ImageDraw import ImageColor diff --git a/timeside/grapher/waveform_centroid.py b/timeside/grapher/waveform_centroid.py index dca091a..d0ef61a 100644 --- a/timeside/grapher/waveform_centroid.py +++ b/timeside/grapher/waveform_centroid.py @@ -19,10 +19,11 @@ # along with TimeSide. If not, see . -from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter +from timeside.core import implements, interfacedoc from timeside.api import IGrapher -from timeside.grapher.core import * +from . utils import peaks, interpolate_colors from timeside.grapher.waveform_simple import Waveform +from timeside.grapher.color_schemes import default_color_schemes class WaveformCentroid(Waveform): diff --git a/timeside/grapher/waveform_contour.py b/timeside/grapher/waveform_contour.py index 1237dde..337c412 100644 --- a/timeside/grapher/waveform_contour.py +++ b/timeside/grapher/waveform_contour.py @@ -19,10 +19,13 @@ # along with TimeSide. If not, see . -from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter +from timeside.core import implements, interfacedoc from timeside.api import IGrapher -from timeside.grapher.core import * -from timeside.grapher.waveform_simple import Waveform +#from timeside.grapher.core import * +from . waveform_simple import Waveform +from . utils import peaks + +import numpy class WaveformContourBlack(Waveform): diff --git a/timeside/grapher/waveform_simple.py b/timeside/grapher/waveform_simple.py index c918f8b..43b9dda 100644 --- a/timeside/grapher/waveform_simple.py +++ b/timeside/grapher/waveform_simple.py @@ -19,9 +19,10 @@ # along with TimeSide. If not, see . -from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter +from timeside.core import implements, interfacedoc from timeside.api import IGrapher -from timeside.grapher.core import * +from timeside.grapher.core import Grapher +from . utils import peaks class Waveform(Grapher): diff --git a/timeside/grapher/waveform_transparent.py b/timeside/grapher/waveform_transparent.py index 1c4e9a5..7dfd119 100644 --- a/timeside/grapher/waveform_transparent.py +++ b/timeside/grapher/waveform_transparent.py @@ -19,21 +19,24 @@ # along with TimeSide. If not, see . -from timeside.core import Processor, implements, interfacedoc, FixedSizeInputAdapter +from timeside.core import implements, interfacedoc from timeside.api import IGrapher -from timeside.grapher.core import * +#from timeside.grapher.core import * from timeside.grapher.waveform_simple import Waveform +from . utils import peaks class WaveformTransparent(Waveform): - """ Builds a PIL image representing a transparent waveform of the audio stream. + """ Builds a PIL image representing a transparent waveform + of the audio stream. """ implements(IGrapher) @interfacedoc - def __init__(self, width=1024, height=256, bg_color=None, color_scheme='default'): + def __init__(self, width=1024, height=256, bg_color=None, + color_scheme='default'): super(WaveformTransparent, self).__init__( width, height, bg_color, color_scheme) self.line_color = (255, 255, 255) @@ -49,7 +52,8 @@ class WaveformTransparent(Waveform): return "Waveform transparent" @interfacedoc - def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None): + def setup(self, channels=None, samplerate=None, blocksize=None, + totalframes=None): super(WaveformTransparent, self).setup( channels, samplerate, blocksize, totalframes) diff --git a/timeside/tools/__init__.py b/timeside/tools/__init__.py index beb42d1..e69de29 100644 --- a/timeside/tools/__init__.py +++ b/timeside/tools/__init__.py @@ -1,3 +0,0 @@ -from cache import Cache -from logger import Logger -from gstutils import *