From 9e625c4821f4c63421b3d3747c0c4f358fef6c5f Mon Sep 17 00:00:00 2001
From: Douglas Anderson <danderson@ntia.doc.gov>
Date: Sun, 12 Feb 2017 15:52:19 -0800
Subject: python3: update non-GRC components to use python2 or python3

---
 gr-analog/python/analog/CMakeLists.txt             |  2 +-
 gr-analog/python/analog/__init__.py                | 26 ++++----
 gr-analog/python/analog/am_demod.py                | 27 ++++----
 gr-analog/python/analog/fm_demod.py                | 13 ++--
 gr-analog/python/analog/fm_emph.py                 | 73 +++++++++++-----------
 gr-analog/python/analog/nbfm_rx.py                 | 30 +++++----
 gr-analog/python/analog/nbfm_tx.py                 | 34 +++++-----
 gr-analog/python/analog/qa_agc.py                  | 47 +++++++-------
 gr-analog/python/analog/qa_cpfsk.py                |  3 +-
 gr-analog/python/analog/qa_ctcss_squelch.py        |  6 +-
 gr-analog/python/analog/qa_dpll.py                 |  4 +-
 gr-analog/python/analog/qa_fastnoise.py            |  1 +
 gr-analog/python/analog/qa_fmdet.py                |  1 +
 gr-analog/python/analog/qa_frequency_modulator.py  |  8 ++-
 gr-analog/python/analog/qa_noise.py                |  1 +
 gr-analog/python/analog/qa_phase_modulator.py      |  6 +-
 gr-analog/python/analog/qa_pll_carriertracking.py  |  4 +-
 gr-analog/python/analog/qa_pll_freqdet.py          |  6 +-
 gr-analog/python/analog/qa_pll_refout.py           |  4 +-
 gr-analog/python/analog/qa_probe_avg_mag_sqrd.py   |  1 +
 gr-analog/python/analog/qa_pwr_squelch.py          |  6 +-
 gr-analog/python/analog/qa_quadrature_demod.py     |  8 ++-
 gr-analog/python/analog/qa_rail_ff.py              |  3 +-
 .../python/analog/qa_random_uniform_source.py      |  1 +
 gr-analog/python/analog/qa_sig_source.py           |  2 +
 gr-analog/python/analog/qa_simple_squelch.py       |  4 +-
 gr-analog/python/analog/standard_squelch.py        | 20 +++---
 gr-analog/python/analog/wfm_rcv.py                 | 25 ++++----
 gr-analog/python/analog/wfm_rcv_fmdet.py           | 55 ++++++++--------
 gr-analog/python/analog/wfm_rcv_pll.py             | 47 +++++++-------
 gr-analog/python/analog/wfm_tx.py                  | 26 ++++----
 31 files changed, 277 insertions(+), 217 deletions(-)
 mode change 100755 => 100644 gr-analog/python/analog/qa_agc.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_cpfsk.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_ctcss_squelch.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_dpll.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_fmdet.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_frequency_modulator.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_noise.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_phase_modulator.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_pll_carriertracking.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_pll_freqdet.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_pll_refout.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_probe_avg_mag_sqrd.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_pwr_squelch.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_quadrature_demod.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_rail_ff.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_random_uniform_source.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_sig_source.py
 mode change 100755 => 100644 gr-analog/python/analog/qa_simple_squelch.py

(limited to 'gr-analog/python')

diff --git a/gr-analog/python/analog/CMakeLists.txt b/gr-analog/python/analog/CMakeLists.txt
index 1fed9d189..ba3dfb5fc 100644
--- a/gr-analog/python/analog/CMakeLists.txt
+++ b/gr-analog/python/analog/CMakeLists.txt
@@ -53,7 +53,7 @@ if(ENABLE_TESTING)
   file(GLOB py_qa_test_files "qa_*.py")
   foreach(py_qa_test_file ${py_qa_test_files})
     get_filename_component(py_qa_test_name ${py_qa_test_file} NAME_WE)
-    GR_ADD_TEST(${py_qa_test_name} ${QA_PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${py_qa_test_file})
+    GR_ADD_TEST(${py_qa_test_name} ${QA_PYTHON_EXECUTABLE} -B ${py_qa_test_file})
   endforeach(py_qa_test_file)
 endif(ENABLE_TESTING)
 
diff --git a/gr-analog/python/analog/__init__.py b/gr-analog/python/analog/__init__.py
index 3c4a0ff62..79c19e1e3 100644
--- a/gr-analog/python/analog/__init__.py
+++ b/gr-analog/python/analog/__init__.py
@@ -21,24 +21,26 @@
 '''
 Blocks and utilities for analog modulation and demodulation.
 '''
+from __future__ import absolute_import
+from __future__ import unicode_literals
 
 # The presence of this file turns this directory into a Python package
 import os
 
 try:
-    from analog_swig import *
+    from .analog_swig import *
 except ImportError:
     dirname, filename = os.path.split(os.path.abspath(__file__))
     __path__.append(os.path.join(dirname, "..", "..", "swig"))
-    from analog_swig import *
+    from .analog_swig import *
 
-from am_demod import *
-from fm_demod import *
-from fm_emph import *
-from nbfm_rx import *
-from nbfm_tx import *
-from standard_squelch import *
-from wfm_rcv import *
-from wfm_rcv_fmdet import *
-from wfm_rcv_pll import *
-from wfm_tx import *
+from .am_demod import *
+from .fm_demod import *
+from .fm_emph import *
+from .nbfm_rx import *
+from .nbfm_tx import *
+from .standard_squelch import *
+from .wfm_rcv import *
+from .wfm_rcv_fmdet import *
+from .wfm_rcv_pll import *
+from .wfm_tx import *
diff --git a/gr-analog/python/analog/am_demod.py b/gr-analog/python/analog/am_demod.py
index 3459e825f..eeb8964f3 100644
--- a/gr-analog/python/analog/am_demod.py
+++ b/gr-analog/python/analog/am_demod.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
 #
 # Copyright 2006,2007,2012 Free Software Foundation, Inc.
 #
@@ -39,22 +40,22 @@ class am_demod_cf(gr.hier_block2):
         audio_stop: audio low pass filter stop frequency (float)
     """
     def __init__(self, channel_rate, audio_decim, audio_pass, audio_stop):
-	gr.hier_block2.__init__(self, "am_demod_cf",
-				gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
-				gr.io_signature(1, 1, gr.sizeof_float))      # Input signature
+        gr.hier_block2.__init__(self, "am_demod_cf",
+                                gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
+                                gr.io_signature(1, 1, gr.sizeof_float))      # Input signature
 
-	MAG = blocks.complex_to_mag()
-	DCR = blocks.add_const_ff(-1.0)
+        MAG = blocks.complex_to_mag()
+        DCR = blocks.add_const_ff(-1.0)
 
-	audio_taps = filter.optfir.low_pass(0.5, 	  # Filter gain
+        audio_taps = filter.optfir.low_pass(0.5,          # Filter gain
                                             channel_rate, # Sample rate
                                             audio_pass,   # Audio passband
                                             audio_stop,   # Audio stopband
-                                            0.1, 	  # Passband ripple
-                                            60)	          # Stopband attenuation
-	LPF = filter.fir_filter_fff(audio_decim, audio_taps)
+                                            0.1,          # Passband ripple
+                                            60)           # Stopband attenuation
+        LPF = filter.fir_filter_fff(audio_decim, audio_taps)
 
-	self.connect(self, MAG, DCR, LPF, self)
+        self.connect(self, MAG, DCR, LPF, self)
 
 class demod_10k0a3e_cf(am_demod_cf):
     """
@@ -68,6 +69,6 @@ class demod_10k0a3e_cf(am_demod_cf):
         audio_decim: input to output decimation rate (integer)
     """
     def __init__(self, channel_rate, audio_decim):
-    	am_demod_cf.__init__(self, channel_rate, audio_decim,
-    	                     5000, # Audio passband
-    	                     5500) # Audio stopband
+        am_demod_cf.__init__(self, channel_rate, audio_decim,
+                             5000, # Audio passband
+                             5500) # Audio stopband
diff --git a/gr-analog/python/analog/fm_demod.py b/gr-analog/python/analog/fm_demod.py
index 4e3c01d19..1344db831 100644
--- a/gr-analog/python/analog/fm_demod.py
+++ b/gr-analog/python/analog/fm_demod.py
@@ -19,14 +19,15 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import unicode_literals
+
 from gnuradio import gr, filter
-from fm_emph import fm_deemph
+from .fm_emph import fm_deemph
 from math import pi
 
-try:
-    from gnuradio import analog
-except ImportError:
-    import analog_swig as analog
+from . import analog_swig as analog
 
 
 class fm_demod_cf(gr.hier_block2):
@@ -54,7 +55,7 @@ class fm_demod_cf(gr.hier_block2):
                                 gr.io_signature(1, 1, gr.sizeof_gr_complex),  # Input signature
                                 gr.io_signature(1, 1, gr.sizeof_float))       # Output signature
 
-        k = channel_rate/(2*pi*deviation)
+        k = channel_rate / (2*pi*deviation)
         QUAD = analog.quadrature_demod_cf(k)
 
         audio_taps = filter.optfir.low_pass(
diff --git a/gr-analog/python/analog/fm_emph.py b/gr-analog/python/analog/fm_emph.py
index bfa4742ac..a4a83bd21 100644
--- a/gr-analog/python/analog/fm_emph.py
+++ b/gr-analog/python/analog/fm_emph.py
@@ -19,6 +19,10 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import print_function
+from __future__ import division
+from __future__ import unicode_literals
+
 from gnuradio import gr, filter
 import math
 import cmath
@@ -132,8 +136,8 @@ class fm_deemph(gr.hier_block2):
         # Since H(s = 0) = 1.0, then H(z = 1) = 1.0 and has 0 dB gain at DC
 
         if 0:
-            print "btaps =", btaps
-            print "ataps =", ataps
+            print("btaps =", btaps)
+            print("ataps =", ataps)
             global plot1
             plot1 = gru.gnuplot_freqz(gru.freqz(btaps, ataps), fs, True)
 
@@ -149,11 +153,11 @@ class fm_deemph(gr.hier_block2):
 #  o------+             +-----+--------o
 #         |      R1     |     |
 #         +----/\/\/\/--+     \
-#                             /
+    #                             /
 #                             \ R2
 #                             /
 #                             \
-#                             |
+    #                             |
 #  o--------------------------+--------o
 #
 #  (This fine ASCII rendition is based on Figure 5-15
@@ -263,44 +267,43 @@ class fm_preemph(gr.hier_block2):
                                 gr.io_signature(1, 1, gr.sizeof_float),  # Input signature
                                 gr.io_signature(1, 1, gr.sizeof_float))  # Output signature
 
-	# Set fh to something sensible, if needed.
-	# N.B. fh == fs/2.0 or fh == 0.0 results in a pole on the unit circle
-	# at z = -1.0 or z = 1.0 respectively.  That makes the filter unstable
-	# and useless.
-	if fh <= 0.0 or fh >= fs/2.0:
-		fh = 0.925 * fs/2.0
+        # Set fh to something sensible, if needed.
+        # N.B. fh == fs/2.0 or fh == 0.0 results in a pole on the unit circle
+        # at z = -1.0 or z = 1.0 respectively.  That makes the filter unstable
+        # and useless.
+        if fh <= 0.0 or fh >= fs / 2.0:
+            fh = 0.925 * fs/2.0
 
-	# Digital corner frequencies
-	w_cl = 1.0 / tau
-	w_ch = 2.0 * math.pi * fh
+        # Digital corner frequencies
+        w_cl = 1.0 / tau
+        w_ch = 2.0 * math.pi * fh
 
-	# Prewarped analog corner frequencies
-	w_cla = 2.0 * fs * math.tan(w_cl / (2.0 * fs))
-	w_cha = 2.0 * fs * math.tan(w_ch / (2.0 * fs))
+        # Prewarped analog corner frequencies
+        w_cla = 2.0 * fs * math.tan(w_cl / (2.0 * fs))
+        w_cha = 2.0 * fs * math.tan(w_ch / (2.0 * fs))
 
-	# Resulting digital pole, zero, and gain term from the bilinear
-	# transformation of H(s) = (s + w_cla) / (s + w_cha) to
-	# H(z) = b0 (1 - z1 z^-1)/(1 - p1 z^-1)
-	kl = -w_cla / (2.0 * fs)
-	kh = -w_cha / (2.0 * fs)
-	z1 = (1.0 + kl) / (1.0 - kl)
-	p1 = (1.0 + kh) / (1.0 - kh)
-	b0 = (1.0 - kl) / (1.0 - kh)
+        # Resulting digital pole, zero, and gain term from the bilinear
+        # transformation of H(s) = (s + w_cla) / (s + w_cha) to
+        # H(z) = b0 (1 - z1 z^-1)/(1 - p1 z^-1)
+        kl = -w_cla / (2.0 * fs)
+        kh = -w_cha / (2.0 * fs)
+        z1 = (1.0 + kl) / (1.0 - kl)
+        p1 = (1.0 + kh) / (1.0 - kh)
+        b0 = (1.0 - kl) / (1.0 - kh)
 
-	# Since H(s = infinity) = 1.0, then H(z = -1) = 1.0 and
-	# this filter  has 0 dB gain at fs/2.0.
-	# That isn't what users are going to expect, so adjust with a
-	# gain, g, so that H(z = 1) = 1.0 for 0 dB gain at DC.
-	w_0dB = 2.0 * math.pi * 0.0
-	g =        abs(1.0 - p1 * cmath.rect(1.0, -w_0dB))  \
-	   / (b0 * abs(1.0 - z1 * cmath.rect(1.0, -w_0dB)))
+        # Since H(s = infinity) = 1.0, then H(z = -1) = 1.0 and
+        # this filter  has 0 dB gain at fs/2.0.
+        # That isn't what users are going to expect, so adjust with a
+        # gain, g, so that H(z = 1) = 1.0 for 0 dB gain at DC.
+        w_0dB = 2.0 * math.pi * 0.0
+        g =        abs(1.0 - p1 * cmath.rect(1.0 / -w_0dB), (b0 * abs(1.0 - z1 * cmath.rect(1.0, -w_0dB))))
 
-	btaps = [ g * b0 * 1.0, g * b0 * -z1 ]
-	ataps = [          1.0,          -p1 ]
+        btaps = [ g * b0 * 1.0, g * b0 * -z1 ]
+        ataps = [          1.0,          -p1 ]
 
         if 0:
-            print "btaps =", btaps
-            print "ataps =", ataps
+            print("btaps =", btaps)
+            print("ataps =", ataps)
             global plot2
             plot2 = gru.gnuplot_freqz(gru.freqz(btaps, ataps), fs, True)
 
diff --git a/gr-analog/python/analog/nbfm_rx.py b/gr-analog/python/analog/nbfm_rx.py
index 38fbf803c..3e8dcd528 100644
--- a/gr-analog/python/analog/nbfm_rx.py
+++ b/gr-analog/python/analog/nbfm_rx.py
@@ -19,15 +19,19 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import unicode_literals
+
 import math
+
 from gnuradio import gr
 from gnuradio import filter
-from fm_emph import fm_deemph
 
-try:
-    from gnuradio import analog
-except ImportError:
-    import analog_swig as analog
+from . import analog_swig as analog
+from .fm_emph import fm_deemph
+
 
 class nbfm_rx(gr.hier_block2):
     def __init__(self, audio_rate, quad_rate, tau=75e-6, max_dev=5e3):
@@ -52,22 +56,22 @@ class nbfm_rx(gr.hier_block2):
           audio_filter
         """
 
-	gr.hier_block2.__init__(self, "nbfm_rx",
-				gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
-				gr.io_signature(1, 1, gr.sizeof_float))      # Output signature
+        gr.hier_block2.__init__(self, "nbfm_rx",
+                                gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
+                                gr.io_signature(1, 1, gr.sizeof_float))      # Output signature
 
         # FIXME audio_rate and quad_rate ought to be exact rationals
         self._audio_rate = audio_rate = int(audio_rate)
         self._quad_rate = quad_rate = int(quad_rate)
 
         if quad_rate % audio_rate != 0:
-            raise ValueError, "quad_rate is not an integer multiple of audio_rate"
+            raise ValueError("quad_rate is not an integer multiple of audio_rate")
 
-        squelch_threshold = 20		# dB
+        squelch_threshold = 20        # dB
         #self.squelch = analog.simple_squelch_cc(squelch_threshold, 0.001)
 
         # FM Demodulator  input: complex; output: float
-        k = quad_rate/(2*math.pi*max_dev)
+        k = quad_rate / (2*math.pi*max_dev)
         self.quad_demod = analog.quadrature_demod_cf(k)
 
         # FM Deemphasis IIR filter
@@ -81,7 +85,7 @@ class nbfm_rx(gr.hier_block2):
                                             0.5e3,          # Transition band
                                             filter.firdes.WIN_HAMMING)  # filter type
 
-        print "len(audio_taps) =", len(audio_taps)
+        print("len(audio_taps) =", len(audio_taps))
 
         # Decimating audio filter
         # input: float; output: float; taps: float
@@ -90,5 +94,5 @@ class nbfm_rx(gr.hier_block2):
         self.connect(self, self.quad_demod, self.deemph, self.audio_filter, self)
 
     def set_max_deviation(self, max_dev):
-        k = self._quad_rate/(2*math.pi*max_dev)
+        k = self._quad_rate / (2*math.pi*max_dev)
         self.quad_demod.set_gain(k)
diff --git a/gr-analog/python/analog/nbfm_tx.py b/gr-analog/python/analog/nbfm_tx.py
index aa6c1eccc..a7620451e 100644
--- a/gr-analog/python/analog/nbfm_tx.py
+++ b/gr-analog/python/analog/nbfm_tx.py
@@ -19,14 +19,18 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import unicode_literals
+
 import math
+
 from gnuradio import gr, filter
-from fm_emph import fm_preemph
+from .fm_emph import fm_preemph
+
+from . import analog_swig as analog
 
-try:
-    from gnuradio import analog
-except ImportError:
-    import analog_swig as analog
 
 class nbfm_tx(gr.hier_block2):
     def __init__(self, audio_rate, quad_rate, tau=75e-6, max_dev=5e3, fh=-1.0):
@@ -46,16 +50,16 @@ class nbfm_tx(gr.hier_block2):
         quad_rate must be an integer multiple of audio_rate.
         """
 
-	gr.hier_block2.__init__(self, "nbfm_tx",
-				gr.io_signature(1, 1, gr.sizeof_float),      # Input signature
-				gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature
+        gr.hier_block2.__init__(self, "nbfm_tx",
+                                gr.io_signature(1, 1, gr.sizeof_float),      # Input signature
+                                gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature
 
         # FIXME audio_rate and quad_rate ought to be exact rationals
         self._audio_rate = audio_rate = int(audio_rate)
         self._quad_rate = quad_rate = int(quad_rate)
 
         if quad_rate % audio_rate != 0:
-            raise ValueError, "quad_rate is not an integer multiple of audio_rate"
+            raise ValueError("quad_rate is not an integer multiple of audio_rate")
 
 
         do_interp = audio_rate != quad_rate
@@ -66,10 +70,10 @@ class nbfm_tx(gr.hier_block2):
                                                  quad_rate,       # Fs
                                                  4500,            # passband cutoff
                                                  7000,            # stopband cutoff
-                                                 0.1,   	  # passband ripple dB
+                                                 0.1,             # passband ripple dB
                                                  40)              # stopband atten dB
 
-            #print "len(interp_taps) =", len(interp_taps)
+            #print("len(interp_taps) =", len(interp_taps))
             self.interpolator = filter.interp_fir_filter_fff (interp_factor, interp_taps)
 
         self.preemph = fm_preemph(quad_rate, tau=tau, fh=fh)
@@ -90,10 +94,10 @@ class nbfm_tx(gr.hier_block2):
 
 class ctcss_gen_f(gr.hier_block2):
     def __init__(self, sample_rate, tone_freq):
-	gr.hier_block2.__init__(self, "ctcss_gen_f",
-				gr.io_signature(0, 0, 0),               # Input signature
-				gr.io_signature(1, 1, gr.sizeof_float)) # Output signature
+        gr.hier_block2.__init__(self, "ctcss_gen_f",
+                                gr.io_signature(0, 0, 0),               # Input signature
+                                gr.io_signature(1, 1, gr.sizeof_float)) # Output signature
 
         self.plgen = analog.sig_source_f(sample_rate, analog.GR_SIN_WAVE,
                                          tone_freq, 0.1, 0.0)
-	self.connect(self.plgen, self)
+        self.connect(self.plgen, self)
diff --git a/gr-analog/python/analog/qa_agc.py b/gr-analog/python/analog/qa_agc.py
old mode 100755
new mode 100644
index 70c9ba578..bac661f8b
--- a/gr-analog/python/analog/qa_agc.py
+++ b/gr-analog/python/analog/qa_agc.py
@@ -20,6 +20,7 @@
 # Boston, MA 02110-1301, USA.
 #
 
+
 from gnuradio import gr, gr_unittest, analog, blocks
 
 class test_agc(gr_unittest.TestCase):
@@ -33,10 +34,10 @@ class test_agc(gr_unittest.TestCase):
     def test_001_sets(self):
         agc = analog.agc_cc(1e-3, 1, 1)
 
-	agc.set_rate(1)
-	agc.set_reference(1.1)
-	agc.set_gain(1.1)
-	agc.set_max_gain(100)
+        agc.set_rate(1)
+        agc.set_reference(1.1)
+        agc.set_gain(1.1)
+        agc.set_max_gain(100)
 
         self.assertAlmostEqual(agc.rate(), 1)
         self.assertAlmostEqual(agc.reference(), 1.1)
@@ -118,10 +119,10 @@ class test_agc(gr_unittest.TestCase):
     def test_002_sets(self):
         agc = analog.agc_ff(1e-3, 1, 1)
 
-	agc.set_rate(1)
-	agc.set_reference(1.1)
-	agc.set_gain(1.1)
-	agc.set_max_gain(100)
+        agc.set_rate(1)
+        agc.set_reference(1.1)
+        agc.set_gain(1.1)
+        agc.set_max_gain(100)
 
         self.assertAlmostEqual(agc.rate(), 1)
         self.assertAlmostEqual(agc.reference(), 1.1)
@@ -203,11 +204,11 @@ class test_agc(gr_unittest.TestCase):
     def test_003_sets(self):
         agc = analog.agc2_cc(1e-3, 1e-1, 1, 1)
 
-	agc.set_attack_rate(1)
-	agc.set_decay_rate(2)
-	agc.set_reference(1.1)
-	agc.set_gain(1.1)
-	agc.set_max_gain(100)
+        agc.set_attack_rate(1)
+        agc.set_decay_rate(2)
+        agc.set_reference(1.1)
+        agc.set_gain(1.1)
+        agc.set_max_gain(100)
 
         self.assertAlmostEqual(agc.attack_rate(), 1)
         self.assertAlmostEqual(agc.decay_rate(), 2)
@@ -290,11 +291,11 @@ class test_agc(gr_unittest.TestCase):
     def test_004_sets(self):
         agc = analog.agc2_ff(1e-3, 1e-1, 1, 1)
 
-	agc.set_attack_rate(1)
-	agc.set_decay_rate(2)
-	agc.set_reference(1.1)
-	agc.set_gain(1.1)
-	agc.set_max_gain(100)
+        agc.set_attack_rate(1)
+        agc.set_decay_rate(2)
+        agc.set_reference(1.1)
+        agc.set_gain(1.1)
+        agc.set_max_gain(100)
 
         self.assertAlmostEqual(agc.attack_rate(), 1)
         self.assertAlmostEqual(agc.decay_rate(), 2)
@@ -450,10 +451,10 @@ class test_agc(gr_unittest.TestCase):
     def test_006_sets(self):
         agc = analog.agc3_cc(1e-3, 1e-1, 1)
 
-	agc.set_attack_rate(1)
-	agc.set_decay_rate(2)
-	agc.set_reference(1.1)
-	agc.set_gain(1.1)
+        agc.set_attack_rate(1)
+        agc.set_decay_rate(2)
+        agc.set_reference(1.1)
+        agc.set_gain(1.1)
 
         self.assertAlmostEqual(agc.attack_rate(), 1)
         self.assertAlmostEqual(agc.decay_rate(), 2)
@@ -481,7 +482,7 @@ class test_agc(gr_unittest.TestCase):
         tb.run()
         dst_data = dst1.data()
         M = 100
-        result = map(lambda x: abs(x), dst_data[N-M:])
+        result = [abs(x) for x in dst_data[N-M:]]
         self.assertFloatTuplesAlmostEqual(result, M*[ref,], 4)
 
     def test_100(self):
diff --git a/gr-analog/python/analog/qa_cpfsk.py b/gr-analog/python/analog/qa_cpfsk.py
old mode 100755
new mode 100644
index be2e0a9b7..ef8ea0cb3
--- a/gr-analog/python/analog/qa_cpfsk.py
+++ b/gr-analog/python/analog/qa_cpfsk.py
@@ -20,6 +20,7 @@
 # Boston, MA 02110-1301, USA.
 #
 
+
 import math
 
 from gnuradio import gr, gr_unittest, analog, blocks
@@ -50,7 +51,7 @@ class test_cpfsk_bc(gr_unittest.TestCase):
 
     def test_cpfsk_bc_002(self):
         src_data = 10*[0, 1]
-        expected_result = map(lambda x: complex(2*x-1,0), src_data)
+        expected_result = [complex(2*x-1,0) for x in src_data]
 
         src = blocks.vector_source_b(src_data)
         op = analog.cpfsk_bc(2, 1, 2)
diff --git a/gr-analog/python/analog/qa_ctcss_squelch.py b/gr-analog/python/analog/qa_ctcss_squelch.py
old mode 100755
new mode 100644
index 3be1e9de3..f3db194f5
--- a/gr-analog/python/analog/qa_ctcss_squelch.py
+++ b/gr-analog/python/analog/qa_ctcss_squelch.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 from gnuradio import gr, gr_unittest, analog, blocks
 
 class test_ctcss_squelch(gr_unittest.TestCase):
@@ -63,7 +65,7 @@ class test_ctcss_squelch(gr_unittest.TestCase):
         ramp = 1
         gate = True
 
-        src_data = map(lambda x: float(x)/10.0, range(1, 40))
+        src_data = [float(x) / 10.0 for x in range(1, 40)]
         expected_result = src_data
         expected_result[0] = 0
 
@@ -88,7 +90,7 @@ class test_ctcss_squelch(gr_unittest.TestCase):
         ramp = 1
         gate = False
 
-        src_data = map(lambda x: float(x)/10.0, range(1, 40))
+        src_data = [float(x) / 10.0 for x in range(1, 40)]
         src = blocks.vector_source_f(src_data)
         op = analog.ctcss_squelch_ff(rate, freq, level,
                                      length, ramp, gate)
diff --git a/gr-analog/python/analog/qa_dpll.py b/gr-analog/python/analog/qa_dpll.py
old mode 100755
new mode 100644
index 3ae8a3684..2d215e3d9
--- a/gr-analog/python/analog/qa_dpll.py
+++ b/gr-analog/python/analog/qa_dpll.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 from gnuradio import gr, gr_unittest, analog, blocks
 
 class test_dpll_bb(gr_unittest.TestCase):
@@ -42,7 +44,7 @@ class test_dpll_bb(gr_unittest.TestCase):
         self.assertAlmostEqual(g, 0.2)
 
         f = op.freq()
-        self.assertEqual(1/period, f)
+        self.assertEqual(1 / period, f)
 
         d0 = 1.0 - 0.5*f;
         d1 = op.decision_threshold()
diff --git a/gr-analog/python/analog/qa_fastnoise.py b/gr-analog/python/analog/qa_fastnoise.py
index 91e1cb87b..e90fcfd96 100644
--- a/gr-analog/python/analog/qa_fastnoise.py
+++ b/gr-analog/python/analog/qa_fastnoise.py
@@ -20,6 +20,7 @@
 # Boston, MA 02110-1301, USA.
 #
 
+
 from gnuradio import gr, gr_unittest, analog
 
 class test_fastnoise_source(gr_unittest.TestCase):
diff --git a/gr-analog/python/analog/qa_fmdet.py b/gr-analog/python/analog/qa_fmdet.py
old mode 100755
new mode 100644
index a9c88c3b9..77ad21341
--- a/gr-analog/python/analog/qa_fmdet.py
+++ b/gr-analog/python/analog/qa_fmdet.py
@@ -20,6 +20,7 @@
 # Boston, MA 02110-1301, USA.
 #
 
+
 from gnuradio import gr, gr_unittest, analog, blocks
 
 class test_fmdet_cf(gr_unittest.TestCase):
diff --git a/gr-analog/python/analog/qa_frequency_modulator.py b/gr-analog/python/analog/qa_frequency_modulator.py
old mode 100755
new mode 100644
index 0f5c45b11..29282b0ea
--- a/gr-analog/python/analog/qa_frequency_modulator.py
+++ b/gr-analog/python/analog/qa_frequency_modulator.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 import math
 
 from gnuradio import gr, gr_unittest, analog, blocks
@@ -38,9 +40,9 @@ class test_frequency_modulator(gr_unittest.TestCase):
 
     def test_fm_001(self):
         pi = math.pi
-        sensitivity = pi/4
-        src_data = (1.0/4, 1.0/2, 1.0/4, -1.0/4, -1.0/2, -1/4.0)
-        running_sum = (pi/16, 3*pi/16, pi/4, 3*pi/16, pi/16, 0)
+        sensitivity = pi / 4
+        src_data = (1.0 / 4, 1.0 / 2, 1.0 / 4, -1.0 / 4, -1.0 / 2, -1 / 4.0)
+        running_sum = (pi / 16, 3*pi/16, pi / 4, 3*pi/16, pi / 16, 0)
         expected_result = tuple([sincos(x) for x in running_sum])
         src = blocks.vector_source_f(src_data)
         op = analog.frequency_modulator_fc(sensitivity)
diff --git a/gr-analog/python/analog/qa_noise.py b/gr-analog/python/analog/qa_noise.py
old mode 100755
new mode 100644
index 5576773f2..cf2e9e607
--- a/gr-analog/python/analog/qa_noise.py
+++ b/gr-analog/python/analog/qa_noise.py
@@ -20,6 +20,7 @@
 # Boston, MA 02110-1301, USA.
 #
 
+
 from gnuradio import gr, gr_unittest, analog
 
 class test_noise_source(gr_unittest.TestCase):
diff --git a/gr-analog/python/analog/qa_phase_modulator.py b/gr-analog/python/analog/qa_phase_modulator.py
old mode 100755
new mode 100644
index c6223e5cd..7f7d57fa7
--- a/gr-analog/python/analog/qa_phase_modulator.py
+++ b/gr-analog/python/analog/qa_phase_modulator.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 import math
 
 from gnuradio import gr, gr_unittest, analog, blocks
@@ -38,8 +40,8 @@ class test_phase_modulator(gr_unittest.TestCase):
 
     def test_fm_001(self):
         pi = math.pi
-        sensitivity = pi/4
-        src_data = (1.0/4, 1.0/2, 1.0/4, -1.0/4, -1.0/2, -1/4.0)
+        sensitivity = pi / 4
+        src_data = (1.0 / 4, 1.0 / 2, 1.0 / 4, -1.0 / 4, -1.0 / 2, -1 / 4.0)
         expected_result = tuple([sincos(sensitivity*x) for x in src_data])
 
         src = blocks.vector_source_f(src_data)
diff --git a/gr-analog/python/analog/qa_pll_carriertracking.py b/gr-analog/python/analog/qa_pll_carriertracking.py
old mode 100755
new mode 100644
index 10ad41464..56bb14d2c
--- a/gr-analog/python/analog/qa_pll_carriertracking.py
+++ b/gr-analog/python/analog/qa_pll_carriertracking.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 import math
 
 from gnuradio import gr, gr_unittest, analog, blocks
@@ -137,7 +139,7 @@ class test_pll_carriertracking(gr_unittest.TestCase):
         sampling_freq = 10e3
         freq = sampling_freq / 100
 
-        loop_bw = math.pi/100.0
+        loop_bw = math.pi / 100.0
         maxf = 1
         minf = -1
 
diff --git a/gr-analog/python/analog/qa_pll_freqdet.py b/gr-analog/python/analog/qa_pll_freqdet.py
old mode 100755
new mode 100644
index c7a8aa836..2006dd736
--- a/gr-analog/python/analog/qa_pll_freqdet.py
+++ b/gr-analog/python/analog/qa_pll_freqdet.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 import math
 
 from gnuradio import gr, gr_unittest, analog, blocks
@@ -137,7 +139,7 @@ class test_pll_freqdet(gr_unittest.TestCase):
         sampling_freq = 10e3
         freq = sampling_freq / 100
 
-        loop_bw = math.pi/100.0
+        loop_bw = math.pi / 100.0
         maxf = 1
         minf = -1
 
@@ -153,7 +155,7 @@ class test_pll_freqdet(gr_unittest.TestCase):
         dst_data = dst.data()
 
         # convert it from normalized frequency to absolute frequency (Hz)
-        dst_data = [i*(sampling_freq/(2*math.pi)) for i in dst_data]
+        dst_data = [i*(sampling_freq / (2*math.pi)) for i in dst_data]
 
         self.assertFloatTuplesAlmostEqual(expected_result, dst_data, 3)
 
diff --git a/gr-analog/python/analog/qa_pll_refout.py b/gr-analog/python/analog/qa_pll_refout.py
old mode 100755
new mode 100644
index 835b6a452..ac1139cc0
--- a/gr-analog/python/analog/qa_pll_refout.py
+++ b/gr-analog/python/analog/qa_pll_refout.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 import math
 
 from gnuradio import gr, gr_unittest, analog, blocks
@@ -137,7 +139,7 @@ class test_pll_refout(gr_unittest.TestCase):
         sampling_freq = 10e3
         freq = sampling_freq / 100
 
-        loop_bw = math.pi/100.0
+        loop_bw = math.pi / 100.0
         maxf = 1
         minf = -1
 
diff --git a/gr-analog/python/analog/qa_probe_avg_mag_sqrd.py b/gr-analog/python/analog/qa_probe_avg_mag_sqrd.py
old mode 100755
new mode 100644
index a52c0806e..68652eb36
--- a/gr-analog/python/analog/qa_probe_avg_mag_sqrd.py
+++ b/gr-analog/python/analog/qa_probe_avg_mag_sqrd.py
@@ -20,6 +20,7 @@
 # Boston, MA 02110-1301, USA.
 #
 
+
 import math
 
 from gnuradio import gr, gr_unittest, analog, blocks
diff --git a/gr-analog/python/analog/qa_pwr_squelch.py b/gr-analog/python/analog/qa_pwr_squelch.py
old mode 100755
new mode 100644
index 561ca79a7..9f84a6140
--- a/gr-analog/python/analog/qa_pwr_squelch.py
+++ b/gr-analog/python/analog/qa_pwr_squelch.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 from gnuradio import gr, gr_unittest, analog, blocks
 
 class test_pwr_squelch(gr_unittest.TestCase):
@@ -61,7 +63,7 @@ class test_pwr_squelch(gr_unittest.TestCase):
         alpha = 0.0001
         thr = -25
 
-        src_data = map(lambda x: float(x)/10.0, range(1, 40))
+        src_data = [float(x) / 10.0 for x in range(1, 40)]
         src = blocks.vector_source_c(src_data)
         op = analog.pwr_squelch_cc(thr, alpha)
         dst = blocks.vector_sink_c()
@@ -107,7 +109,7 @@ class test_pwr_squelch(gr_unittest.TestCase):
         alpha = 0.0001
         thr = -25
 
-        src_data = map(lambda x: float(x)/10.0, range(1, 40))
+        src_data = [float(x) / 10.0 for x in range(1, 40)]
         src = blocks.vector_source_f(src_data)
         op = analog.pwr_squelch_ff(thr, alpha)
         dst = blocks.vector_sink_f()
diff --git a/gr-analog/python/analog/qa_quadrature_demod.py b/gr-analog/python/analog/qa_quadrature_demod.py
old mode 100755
new mode 100644
index 08f3f4600..e3a513b9a
--- a/gr-analog/python/analog/qa_quadrature_demod.py
+++ b/gr-analog/python/analog/qa_quadrature_demod.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 import cmath
 
 from gnuradio import gr, gr_unittest, analog, blocks
@@ -37,13 +39,13 @@ class test_quadrature_demod(gr_unittest.TestCase):
         fs = 8000.0
 
         src_data = []
-        for i in xrange(200):
-            ti = i/fs
+        for i in range(200):
+            ti = i / fs
             src_data.append(cmath.exp(2j*cmath.pi*f*ti))
 
         # f/fs is a quarter turn per sample.
         # Set the gain based on this to get 1 out.
-        gain = 1.0/(cmath.pi/4)
+        gain = 1.0 / (cmath.pi / 4)
 
         expected_result = [0,] + 199*[1.0]
 
diff --git a/gr-analog/python/analog/qa_rail_ff.py b/gr-analog/python/analog/qa_rail_ff.py
old mode 100755
new mode 100644
index e3990dfd3..93cde00a9
--- a/gr-analog/python/analog/qa_rail_ff.py
+++ b/gr-analog/python/analog/qa_rail_ff.py
@@ -20,6 +20,7 @@
 # Boston, MA 02110-1301, USA.
 #
 
+
 from gnuradio import gr, gr_unittest, analog, blocks
 
 def clip(x, lo, hi):
@@ -60,7 +61,7 @@ class test_rail(gr_unittest.TestCase):
         lo = -0.75
         hi = 0.90
         src_data = [-2, -1, -0.5, -0.25, 0, 0.25, 0.5, 1, 2]
-        expected_result = map(lambda x: clip(x, lo, hi), src_data)
+        expected_result = [clip(x, lo, hi) for x in src_data]
 
         src = blocks.vector_source_f(src_data)
         op = analog.rail_ff(lo, hi)
diff --git a/gr-analog/python/analog/qa_random_uniform_source.py b/gr-analog/python/analog/qa_random_uniform_source.py
old mode 100755
new mode 100644
index 474c5716c..d02ea7ea8
--- a/gr-analog/python/analog/qa_random_uniform_source.py
+++ b/gr-analog/python/analog/qa_random_uniform_source.py
@@ -21,6 +21,7 @@
 # Boston, MA 02110-1301, USA.
 #
 
+
 from gnuradio import gr, gr_unittest
 from gnuradio import blocks, analog
 import numpy as np
diff --git a/gr-analog/python/analog/qa_sig_source.py b/gr-analog/python/analog/qa_sig_source.py
old mode 100755
new mode 100644
index 8d050fa72..a38db2928
--- a/gr-analog/python/analog/qa_sig_source.py
+++ b/gr-analog/python/analog/qa_sig_source.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 import math
 import pmt
 from gnuradio import gr, gr_unittest, analog, blocks
diff --git a/gr-analog/python/analog/qa_simple_squelch.py b/gr-analog/python/analog/qa_simple_squelch.py
old mode 100755
new mode 100644
index b09a3b2a8..a0b09e719
--- a/gr-analog/python/analog/qa_simple_squelch.py
+++ b/gr-analog/python/analog/qa_simple_squelch.py
@@ -20,6 +20,8 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import division
+
 from gnuradio import gr, gr_unittest, analog, blocks
 
 class test_simple_squelch(gr_unittest.TestCase):
@@ -48,7 +50,7 @@ class test_simple_squelch(gr_unittest.TestCase):
         alpha = 0.0001
         thr = -25
 
-        src_data = map(lambda x: float(x)/10.0, range(1, 40))
+        src_data = [float(x) / 10.0 for x in range(1, 40)]
         src = blocks.vector_source_c(src_data)
         op = analog.simple_squelch_cc(thr, alpha)
         dst = blocks.vector_sink_c()
diff --git a/gr-analog/python/analog/standard_squelch.py b/gr-analog/python/analog/standard_squelch.py
index 3ed9ebcea..9609f2449 100644
--- a/gr-analog/python/analog/standard_squelch.py
+++ b/gr-analog/python/analog/standard_squelch.py
@@ -1,3 +1,5 @@
+from __future__ import division
+from __future__ import unicode_literals
 #
 # Copyright 2005,2007,2012 Free Software Foundation, Inc.
 #
@@ -26,29 +28,29 @@ from gnuradio import filter
 
 class standard_squelch(gr.hier_block2):
     def __init__(self, audio_rate):
-	gr.hier_block2.__init__(self, "standard_squelch",
-				gr.io_signature(1, 1, gr.sizeof_float), # Input signature
-				gr.io_signature(1, 1, gr.sizeof_float)) # Output signature
+        gr.hier_block2.__init__(self, "standard_squelch",
+                                gr.io_signature(1, 1, gr.sizeof_float), # Input signature
+                                gr.io_signature(1, 1, gr.sizeof_float)) # Output signature
 
         self.input_node = blocks.add_const_ff(0)          # FIXME kludge
 
         self.low_iir = filter.iir_filter_ffd((0.0193,0,-0.0193),(1,1.9524,-0.9615))
         self.low_square = blocks.multiply_ff()
-        self.low_smooth = filter.single_pole_iir_filter_ff(1/(0.01*audio_rate))   # 100ms time constant
+        self.low_smooth = filter.single_pole_iir_filter_ff(1 / (0.01*audio_rate))   # 100ms time constant
 
         self.hi_iir = filter.iir_filter_ffd((0.0193,0,-0.0193),(1,1.3597,-0.9615))
         self.hi_square = blocks.multiply_ff()
-        self.hi_smooth = filter.single_pole_iir_filter_ff(1/(0.01*audio_rate))
+        self.hi_smooth = filter.single_pole_iir_filter_ff(1 / (0.01*audio_rate))
 
         self.sub = blocks.sub_ff();
         self.add = blocks.add_ff();
         self.gate = blocks.threshold_ff(0.3,0.43,0)
-        self.squelch_lpf = filter.single_pole_iir_filter_ff(1/(0.01*audio_rate))
+        self.squelch_lpf = filter.single_pole_iir_filter_ff(1 / (0.01*audio_rate))
 
         self.div = blocks.divide_ff()
         self.squelch_mult = blocks.multiply_ff()
 
-	self.connect(self, self.input_node)
+        self.connect(self, self.input_node)
         self.connect(self.input_node, (self.squelch_mult, 0))
 
         self.connect(self.input_node,self.low_iir)
@@ -66,7 +68,7 @@ class standard_squelch(gr.hier_block2):
         self.connect(self.sub, (self.div, 0))
         self.connect(self.add, (self.div, 1))
         self.connect(self.div, self.gate, self.squelch_lpf, (self.squelch_mult,1))
-	self.connect(self.squelch_mult, self)
+        self.connect(self.squelch_mult, self)
 
     def set_threshold(self, threshold):
         self.gate.set_hi(threshold)
@@ -75,4 +77,4 @@ class standard_squelch(gr.hier_block2):
         return self.gate.hi()
 
     def squelch_range(self):
-        return (0.0, 1.0, 1.0/100)
+        return (0.0, 1.0, 1.0 / 100)
diff --git a/gr-analog/python/analog/wfm_rcv.py b/gr-analog/python/analog/wfm_rcv.py
index d35d21927..c1f6dea33 100644
--- a/gr-analog/python/analog/wfm_rcv.py
+++ b/gr-analog/python/analog/wfm_rcv.py
@@ -19,14 +19,17 @@
 # Boston, MA 02110-1301, USA.
 #
 
-from gnuradio import gr, filter
-from fm_emph import fm_deemph
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import unicode_literals
+
 import math
 
-try:
-    from gnuradio import analog
-except ImportError:
-    import analog_swig as analog
+from gnuradio import gr, filter
+
+from . import analog_swig as analog
+from .fm_emph import fm_deemph
+
 
 class wfm_rcv(gr.hier_block2):
     def __init__ (self, quad_rate, audio_decimation):
@@ -40,14 +43,14 @@ class wfm_rcv(gr.hier_block2):
             quad_rate: input sample rate of complex baseband input. (float)
             audio_decimation: how much to decimate quad_rate to get to audio. (integer)
         """
-	gr.hier_block2.__init__(self, "wfm_rcv",
-				gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
-				gr.io_signature(1, 1, gr.sizeof_float))      # Output signature
+        gr.hier_block2.__init__(self, "wfm_rcv",
+                                gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
+                                gr.io_signature(1, 1, gr.sizeof_float))      # Output signature
 
         volume = 20.
 
         max_dev = 75e3
-        fm_demod_gain = quad_rate/(2*math.pi*max_dev)
+        fm_demod_gain = quad_rate / (2*math.pi*max_dev)
         audio_rate = quad_rate / audio_decimation
 
 
@@ -64,7 +67,7 @@ class wfm_rcv(gr.hier_block2):
         width_of_transition_band = audio_rate / 32
         audio_coeffs = filter.firdes.low_pass(1.0,            # gain
                                               quad_rate,      # sampling rate
-                                              audio_rate/2 - width_of_transition_band,
+                                              audio_rate / 2 - width_of_transition_band,
                                               width_of_transition_band,
                                               filter.firdes.WIN_HAMMING)
         # input: float; output: float
diff --git a/gr-analog/python/analog/wfm_rcv_fmdet.py b/gr-analog/python/analog/wfm_rcv_fmdet.py
index b7cd1458f..fe91465a3 100644
--- a/gr-analog/python/analog/wfm_rcv_fmdet.py
+++ b/gr-analog/python/analog/wfm_rcv_fmdet.py
@@ -19,16 +19,19 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import unicode_literals
+
+import math
+
 from gnuradio import gr
 from gnuradio import blocks
 from gnuradio import filter
-from fm_emph import fm_deemph
-import math
 
-try:
-    from gnuradio import analog
-except ImportError:
-    import analog_swig as analog
+from . import analog_swig as analog
+from .fm_emph import fm_deemph
+
 
 class wfm_rcv_fmdet(gr.hier_block2):
     def __init__ (self, demod_rate, audio_decimation):
@@ -43,11 +46,11 @@ class wfm_rcv_fmdet(gr.hier_block2):
             demod_rate: input sample rate of complex baseband input. (float)
             audio_decimation: how much to decimate demod_rate to get to audio. (integer)
         """
-	gr.hier_block2.__init__(self, "wfm_rcv_fmdet",
-				gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
-				gr.io_signature(2, 2, gr.sizeof_float))      # Output signature
-        lowfreq = -125e3/demod_rate
-	highfreq = 125e3/demod_rate
+        gr.hier_block2.__init__(self, "wfm_rcv_fmdet",
+                                gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
+                                gr.io_signature(2, 2, gr.sizeof_float))      # Output signature
+        lowfreq = -125e3 / demod_rate
+        highfreq = 125e3 / demod_rate
         audio_rate = demod_rate / audio_decimation
 
         # We assign to self so that outsiders can grab the demodulator
@@ -98,8 +101,8 @@ class wfm_rcv_fmdet(gr.hier_block2):
             stereo_dsbsc_filter_coeffs = \
                 filter.firdes.complex_band_pass(20.0,
                                                 demod_rate,
-                                                38000-15000/2,
-                                                38000+15000/2,
+                                                38000-15000 / 2,
+                                                38000+15000 / 2,
                                                 width_of_transition_band,
                                                 filter.firdes.WIN_HAMMING)
             #print "len stereo dsbsc filter = ",len(stereo_dsbsc_filter_coeffs)
@@ -127,12 +130,12 @@ class wfm_rcv_fmdet(gr.hier_block2):
             #print "stereo dsbsc filter ", stereo_dsbsc_filter_coeffs
             # construct overlap add filter system from coefficients for stereo carrier
 
-	    self.rds_signal_filter = \
+            self.rds_signal_filter = \
                 filter.fir_filter_fcc(audio_decimation,
                                       stereo_rds_filter_coeffs)
-	    self.rds_carrier_generator = blocks.multiply_cc();
-	    self.rds_signal_generator = blocks.multiply_cc();
-	    self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex);
+            self.rds_carrier_generator = blocks.multiply_cc();
+            self.rds_signal_generator = blocks.multiply_cc();
+            self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex);
 
             loop_bw = 2*math.pi/100.0
             max_freq = -2.0*math.pi*18990/audio_rate;
@@ -191,21 +194,21 @@ class wfm_rcv_fmdet(gr.hier_block2):
             #send it to negative side of a subtracter
             self.connect(self.LmR_real,(self.Make_Right,1))
 
-	    # Make rds carrier by taking the squared pilot tone and
-	    # multiplying by pilot tone
-	    self.connect(self.stereo_basebander,(self.rds_carrier_generator,0))
+            # Make rds carrier by taking the squared pilot tone and
+            # multiplying by pilot tone
+            self.connect(self.stereo_basebander,(self.rds_carrier_generator,0))
             self.connect(self.stereo_carrier_pll_recovery,(self.rds_carrier_generator,1))
 
-	    # take signal, filter off rds, send into mixer 0 channel
-	    self.connect(self.fm_demod,self.rds_signal_filter,(self.rds_signal_generator,0))
+            # take signal, filter off rds, send into mixer 0 channel
+            self.connect(self.fm_demod,self.rds_signal_filter,(self.rds_signal_generator,0))
 
             # take rds_carrier_generator output and send into mixer 1
             # channel
-	    self.connect(self.rds_carrier_generator,(self.rds_signal_generator,1))
+            self.connect(self.rds_carrier_generator,(self.rds_signal_generator,1))
 
-	    # send basebanded rds signal and send into "processor"
-	    # which for now is a null sink
-	    self.connect(self.rds_signal_generator,self_rds_signal_processor)
+            # send basebanded rds signal and send into "processor"
+            # which for now is a null sink
+            self.connect(self.rds_signal_generator,self_rds_signal_processor)
 
 
         if 1:
diff --git a/gr-analog/python/analog/wfm_rcv_pll.py b/gr-analog/python/analog/wfm_rcv_pll.py
index 282e2b14b..b6ca7fe7c 100644
--- a/gr-analog/python/analog/wfm_rcv_pll.py
+++ b/gr-analog/python/analog/wfm_rcv_pll.py
@@ -19,16 +19,19 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import unicode_literals
+
+import math
+
 from gnuradio import gr
 from gnuradio import blocks
 from gnuradio import filter
-from fm_emph import fm_deemph
-import math
 
-try:
-    from gnuradio import analog
-except ImportError:
-    import analog_swig as analog
+from . import analog_swig as analog
+from .fm_emph import fm_deemph
+
 
 class wfm_rcv_pll(gr.hier_block2):
     def __init__(self, demod_rate, audio_decimation):
@@ -42,9 +45,9 @@ class wfm_rcv_pll(gr.hier_block2):
             demod_rate: input sample rate of complex baseband input. (float)
             audio_decimation: how much to decimate demod_rate to get to audio. (integer)
         """
-	gr.hier_block2.__init__(self, "wfm_rcv_pll",
-				gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
-				gr.io_signature(2, 2, gr.sizeof_float))      # Output signature
+        gr.hier_block2.__init__(self, "wfm_rcv_pll",
+                                gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
+                                gr.io_signature(2, 2, gr.sizeof_float))      # Output signature
         bandwidth = 250e3
         audio_rate = demod_rate / audio_decimation
 
@@ -92,8 +95,8 @@ class wfm_rcv_pll(gr.hier_block2):
             stereo_dsbsc_filter_coeffs = \
                 filter.firdes.complex_band_pass(20.0,
                                                 demod_rate,
-                                                38000-15000/2,
-                                                38000+15000/2,
+                                                38000-15000 / 2,
+                                                38000+15000 / 2,
                                                 width_of_transition_band,
                                                 filter.firdes.WIN_HAMMING)
             #print "len stereo dsbsc filter = ",len(stereo_dsbsc_filter_coeffs)
@@ -120,12 +123,12 @@ class wfm_rcv_pll(gr.hier_block2):
             #print "stereo dsbsc filter ", stereo_dsbsc_filter_coeffs
             # construct overlap add filter system from coefficients for stereo carrier
 
-	    self.rds_signal_filter = \
+            self.rds_signal_filter = \
                 filter.fir_filter_fcc(audio_decimation, stereo_rds_filter_coeffs)
 
-	    self.rds_carrier_generator = blocks.multiply_cc();
-	    self.rds_signal_generator = blocks.multiply_cc();
-	    self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex);
+            self.rds_carrier_generator = blocks.multiply_cc();
+            self.rds_signal_generator = blocks.multiply_cc();
+            self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex);
 
             loop_bw = 2*math.pi/100.0
             max_freq = -2.0*math.pi*18990/audio_rate;
@@ -169,15 +172,15 @@ class wfm_rcv_pll(gr.hier_block2):
             #take the same real part of the DSBSC baseband signal and send it to negative side of a subtracter
             self.connect(self.LmR_real,(self.Make_Right,1))
 
-	    # Make rds carrier by taking the squared pilot tone and multiplying by pilot tone
-	    self.connect(self.stereo_basebander,(self.rds_carrier_generator,0))
+            # Make rds carrier by taking the squared pilot tone and multiplying by pilot tone
+            self.connect(self.stereo_basebander,(self.rds_carrier_generator,0))
             self.connect(self.stereo_carrier_pll_recovery,(self.rds_carrier_generator,1))
-	    # take signal, filter off rds,  send into mixer 0 channel
-	    self.connect(self.fm_demod,self.rds_signal_filter,(self.rds_signal_generator,0))
+            # take signal, filter off rds,  send into mixer 0 channel
+            self.connect(self.fm_demod,self.rds_signal_filter,(self.rds_signal_generator,0))
             # take rds_carrier_generator output and send into mixer 1 channel
-	    self.connect(self.rds_carrier_generator,(self.rds_signal_generator,1))
-	    # send basebanded rds signal and send into "processor" which for now is a null sink
-	    self.connect(self.rds_signal_generator,self_rds_signal_processor)
+            self.connect(self.rds_carrier_generator,(self.rds_signal_generator,1))
+            # send basebanded rds signal and send into "processor" which for now is a null sink
+            self.connect(self.rds_signal_generator,self_rds_signal_processor)
 
 
         if 1:
diff --git a/gr-analog/python/analog/wfm_tx.py b/gr-analog/python/analog/wfm_tx.py
index a1b589350..9f49ca3ca 100644
--- a/gr-analog/python/analog/wfm_tx.py
+++ b/gr-analog/python/analog/wfm_tx.py
@@ -19,15 +19,19 @@
 # Boston, MA 02110-1301, USA.
 #
 
+from __future__ import print_function
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import unicode_literals
+
 import math
+
 from gnuradio import gr
 from gnuradio import filter
-from fm_emph import fm_preemph
 
-try:
-    from gnuradio import analog
-except ImportError:
-    import analog_swig as analog
+from . import analog_swig as analog
+from .fm_emph import fm_preemph
+
 
 class wfm_tx(gr.hier_block2):
     def __init__(self, audio_rate, quad_rate, tau=75e-6, max_dev=75e3, fh=-1.0):
@@ -46,16 +50,16 @@ class wfm_tx(gr.hier_block2):
 
         quad_rate must be an integer multiple of audio_rate.
         """
-	gr.hier_block2.__init__(self, "wfm_tx",
-				gr.io_signature(1, 1, gr.sizeof_float),      # Input signature
-				gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature
+        gr.hier_block2.__init__(self, "wfm_tx",
+                                gr.io_signature(1, 1, gr.sizeof_float),      # Input signature
+                                gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature
 
         # FIXME audio_rate and quad_rate ought to be exact rationals
         audio_rate = int(audio_rate)
         quad_rate = int(quad_rate)
 
         if quad_rate % audio_rate != 0:
-            raise ValueError, "quad_rate is not an integer multiple of audio_rate"
+            raise ValueError("quad_rate is not an integer multiple of audio_rate")
 
 
         do_interp = audio_rate != quad_rate
@@ -66,10 +70,10 @@ class wfm_tx(gr.hier_block2):
                                                  quad_rate,       # Fs
                                                  16000,           # passband cutoff
                                                  18000,           # stopband cutoff
-                                                 0.1,   	  # passband ripple dB
+                                                 0.1,             # passband ripple dB
                                                  40)              # stopband atten dB
 
-            print "len(interp_taps) =", len(interp_taps)
+            print("len(interp_taps) =", len(interp_taps))
             self.interpolator = filter.interp_fir_filter_fff (interp_factor, interp_taps)
 
         self.preemph = fm_preemph(quad_rate, tau=tau, fh=fh)
-- 
cgit v1.2.3