Developers
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 1 participants
- 2965 discussions
# HG changeset patch
# User Richard Cochran <ag6qr(a)sonic.net>
# Date 1425192393 28800
# Sat Feb 28 22:46:33 2015 -0800
# Node ID b843872d30884b166ecf26d2bae334c28289ea6f
# Parent 9deae1ac816a7a0efd7a754b8e50546f95a97b1a
Support new model Yaesu FT-2900R, new driver ft2900.py (#358)
This adds driver ft2900.py to support the Yaesu FT-2900R radio.
At this time, support is limited to the 200 standard memories. No
banks, no settings, no band edge limits. Driver is loosely based
on FT-2800 driver, with some code borrowed from VX-7 and FT-60 drivers.
A sample .img file is being e-mailed to the dev list in a separate email.
diff -r 9deae1ac816a -r b843872d3088 chirp/ft2900.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/chirp/ft2900.py Sat Feb 28 22:46:33 2015 -0800
@@ -0,0 +1,426 @@
+# Copyright 2011 Dan Smith <dsmith(a)danplanet.com>
+#
+# FT-2900-specific modifications by Richard Cochran, <ag6qr(a)sonic.net>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import time
+import os
+import logging
+
+from chirp import util, memmap, chirp_common, bitwise, directory, errors
+from chirp.yaesu_clone import YaesuCloneModeRadio
+
+from textwrap import dedent
+
+LOG = logging.getLogger(__name__)
+
+
+def _send(s, data):
+ s.write(data)
+ echo = s.read(len(data))
+ if data != echo:
+ raise Exception("Failed to read echo")
+ LOG.debug("got echo\n%s\n" % util.hexprint(echo))
+
+IDBLOCK = "\x56\x43\x32\x33\x00\x02\x46\x01\x01\x01"
+ACK = "\x06"
+INITIAL_CHECKSUM = 73
+
+
+def _download(radio):
+
+ blankChunk = ""
+ for _i in range(0, 32):
+ blankChunk += "\xff"
+
+ LOG.debug("in _download\n")
+
+ data = ""
+ for _i in range(0, 20):
+ data = radio.pipe.read(20)
+ LOG.debug("Header:\n%s" % util.hexprint(data))
+ LOG.debug("len(header) = %s\n" % len(data))
+
+ if data == IDBLOCK:
+ break
+
+ if data != IDBLOCK:
+ raise Exception("Failed to read header")
+
+ _send(radio.pipe, ACK)
+
+ # initialize data, the big var that holds all memory
+ data = ""
+
+ _blockNum = 0
+
+ while len(data) < radio._block_sizes[1]:
+ _blockNum += 1
+ time.sleep(0.03)
+ chunk = radio.pipe.read(32)
+ LOG.debug("Block %i " % (_blockNum))
+ if chunk == blankChunk:
+ LOG.debug("blank chunk\n")
+ else:
+ LOG.debug("Got: %i:\n%s" % (len(chunk), util.hexprint(chunk)))
+ if len(chunk) != 32:
+ LOG.debug("len chunk is %i\n" % (len(chunk)))
+ raise Exception("Failed to get full data block")
+ break
+ else:
+ data += chunk
+
+ if radio.status_fn:
+ status = chirp_common.Status()
+ status.max = radio._block_sizes[1]
+ status.cur = len(data)
+ status.msg = "Cloning from radio"
+ radio.status_fn(status)
+
+ LOG.debug("Total: %i" % len(data))
+
+ # radio should send us one final termination byte, containing
+ # checksum
+ chunk = radio.pipe.read(32)
+ if len(chunk) != 1:
+ LOG.debug("len(chunk) is %i\n" % len(chunk))
+ raise Exception("radio sent extra unknown data")
+ LOG.debug("Got: %i:\n%s" % (len(chunk), util.hexprint(chunk)))
+
+ # compute checksum
+ cs = INITIAL_CHECKSUM
+ for byte in data:
+ cs += ord(byte)
+ LOG.debug("calculated checksum is %x\n" % (cs & 0xff))
+
+ if (cs & 0xff) != ord(chunk[0]):
+ raise Exception("Failed checksum on read.")
+
+ # for debugging purposes, dump the channels, in hex.
+ for _i in range(0, 200):
+ _startData = 1892 + 20 * _i
+ chunk = data[_startData:_startData + 20]
+ LOG.debug("channel %i:\n%s" % (_i, util.hexprint(chunk)))
+
+ return memmap.MemoryMap(data)
+
+
+def _upload(radio):
+ for _i in range(0, 10):
+ data = radio.pipe.read(256)
+ if not data:
+ break
+ LOG.debug("What is this garbage?\n%s" % util.hexprint(data))
+ raise Exception("Radio sent unrecognized data")
+
+ _send(radio.pipe, IDBLOCK)
+ time.sleep(.2)
+ ack = radio.pipe.read(300)
+ LOG.debug("Ack was (%i):\n%s" % (len(ack), util.hexprint(ack)))
+ if ack != ACK:
+ raise Exception("Radio did not ack ID")
+
+ block = 0
+ cs = INITIAL_CHECKSUM
+
+ while block < (radio.get_memsize() / 32):
+ data = radio.get_mmap()[block*32:(block+1)*32]
+
+ LOG.debug("Writing block %i:\n%s" % (block, util.hexprint(data)))
+
+ _send(radio.pipe, data)
+ time.sleep(0.03)
+
+ for byte in data:
+ cs += ord(byte)
+
+ if radio.status_fn:
+ status = chirp_common.Status()
+ status.max = radio._block_sizes[1]
+ status.cur = block * 32
+ status.msg = "Cloning to radio"
+ radio.status_fn(status)
+ block += 1
+
+ _send(radio.pipe, chr(cs & 0xFF))
+
+MEM_FORMAT = """
+#seekto 0x00ef;
+ u8 currentTone;
+
+#seekto 0x00f0;
+ u8 curChannelMem[20];
+
+#seekto 0x0127;
+ u8 curChannelNum;
+
+#seekto 0x15f;
+ u8 checksum1;
+
+#seekto 0x16f;
+ u8 curentTone2;
+
+#seekto 0x1a7;
+ u8 curChannelMem2[20];
+
+#seekto 0x1df;
+ u8 checksum2;
+
+#seekto 0x06e4;
+struct {
+ u8 even_pskip:1,
+ even_skip:1,
+ even_valid:1,
+ even_masked:1,
+ odd_pskip:1,
+ odd_skip:1,
+ odd_valid:1,
+ odd_masked:1;
+} flags[225];
+
+#seekto 0x0764;
+struct {
+ u8 unknown0:2,
+ isnarrow:1,
+ unknown1:5;
+ u8 unknown2:2,
+ duplex:2,
+ unknown3:1,
+ step:3;
+ bbcd freq[3];
+ u8 power:2,
+ unknown4:3,
+ tmode:3;
+ u8 name[6];
+ u8 unknown5;
+ bbcd offset[2];
+ u8 tone;
+ u8 dtcs;
+ u8 unknown6;
+ u8 tone2;
+ u8 dtcs2;
+} memory[200];
+
+"""
+
+MODES = ["FM", "NFM"]
+TMODES = ["", "Tone", "TSQL", "DTCS", "TSQL-R"]
+DUPLEX = ["", "-", "+", ""]
+POWER_LEVELS = [chirp_common.PowerLevel("Low1", watts=5),
+ chirp_common.PowerLevel("Low2", watts=10),
+ chirp_common.PowerLevel("Low3", watts=30),
+ chirp_common.PowerLevel("Hi", watts=75),
+ ]
+
+CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ +-/?C[] _"
+STEPS = [5.0, 10.0, 12.5, 15.0, 20.0, 25.0, 50.0, 100.0]
+
+
+def _decode_name(mem):
+ name = ""
+ for i in mem:
+ if (i & 0x7F) == 0x7F:
+ break
+ try:
+ name += CHARSET[i & 0x7F]
+ except IndexError:
+ LOG.debug("Unknown char index: %x " % (i))
+ name = name.strip()
+ return name
+
+
+def _encode_name(mem):
+ if(mem == " " or mem == ""):
+ return [0x7f, 0xff, 0xff, 0xff, 0xff, 0xff]
+
+ name = [None]*6
+ for i in range(0, 6):
+ try:
+ name[i] = CHARSET.index(mem[i])
+ except IndexError:
+ name[i] = CHARSET.index(" ")
+
+ name[0] = name[0] | 0x80
+ return name
+
+
+def _wipe_memory(mem):
+ mem.set_raw("\xff" * (mem.size() / 8))
+ mem.empty = True
+
+
+(a)directory.register
+class FT2900Radio(YaesuCloneModeRadio):
+ """Yaesu FT-2900"""
+ VENDOR = "Yaesu"
+ MODEL = "FT-2900R"
+ BAUD_RATE = 19200
+
+ _memsize = 8000
+ _block_sizes = [8, 8000]
+
+ def get_features(self):
+ rf = chirp_common.RadioFeatures()
+
+ rf.memory_bounds = (0, 199)
+
+ rf.has_ctone = False
+ rf.has_dtcs_polarity = False
+ rf.has_bank = False
+
+ rf.valid_tuning_steps = STEPS
+ rf.valid_modes = MODES
+ rf.valid_tmodes = TMODES
+ rf.valid_bands = [(136000000, 174000000)]
+ rf.valid_power_levels = POWER_LEVELS
+ rf.valid_duplexes = DUPLEX
+ rf.valid_skips = ["", "S", "P"]
+ rf.valid_name_length = 6
+ rf.valid_characters = CHARSET
+
+ return rf
+
+ def sync_in(self):
+ start = time.time()
+ try:
+ self._mmap = _download(self)
+ except errors.RadioError:
+ raise
+ except Exception, e:
+ raise errors.RadioError("Failed to communicate with radio: %s" % e)
+ LOG.info("Downloaded in %.2f sec" % (time.time() - start))
+ self.process_mmap()
+
+ def sync_out(self):
+ self.pipe.setTimeout(1)
+ start = time.time()
+ try:
+ _upload(self)
+ except errors.RadioError:
+ raise
+ except Exception, e:
+ raise errors.RadioError("Failed to communicate with radio: %s" % e)
+ LOG.info("Uploaded in %.2f sec" % (time.time() - start))
+
+ def process_mmap(self):
+ self._memobj = bitwise.parse(MEM_FORMAT, self._mmap)
+
+ def get_raw_memory(self, number):
+ return repr(self._memobj.memory[number])
+
+ def get_memory(self, number):
+ _mem = self._memobj.memory[number]
+ _flag = self._memobj.flags[(number)/2]
+
+ nibble = ((number) % 2) and "even" or "odd"
+ used = _flag["%s_masked" % nibble]
+ valid = _flag["%s_valid" % nibble]
+ pskip = _flag["%s_pskip" % nibble]
+ skip = _flag["%s_skip" % nibble]
+
+ mem = chirp_common.Memory()
+
+ mem.number = number
+
+ if _mem.get_raw()[0] == "\xFF" or not valid or not used:
+ mem.empty = True
+ return mem
+
+ mem.tuning_step = STEPS[_mem.step]
+ mem.freq = int(_mem.freq) * 1000
+
+ # compensate for 12.5 kHz tuning steps, add 500 Hz if needed
+ if(mem.tuning_step == 12.5):
+ lastdigit = int(_mem.freq) % 10
+ if (lastdigit == 2 or lastdigit == 7):
+ mem.freq += 500
+
+ mem.offset = int(_mem.offset) * 1000
+ mem.duplex = DUPLEX[_mem.duplex]
+ mem.tmode = TMODES[_mem.tmode]
+ mem.rtone = chirp_common.TONES[_mem.tone]
+ mem.dtcs = chirp_common.DTCS_CODES[_mem.dtcs]
+ if (int(_mem.name[0]) & 0x80) != 0:
+ mem.name = _decode_name(_mem.name)
+
+ mem.mode = _mem.isnarrow and "NFM" or "FM"
+ mem.skip = pskip and "P" or skip and "S" or ""
+ mem.power = POWER_LEVELS[_mem.power]
+
+ return mem
+
+ def set_memory(self, mem):
+ _mem = self._memobj.memory[mem.number]
+ _flag = self._memobj.flags[(mem.number)/2]
+
+ nibble = ((mem.number) % 2) and "even" or "odd"
+
+ valid = _flag["%s_valid" % nibble]
+ used = _flag["%s_masked" % nibble]
+
+ if not valid:
+ _wipe_memory(_mem)
+
+ if mem.empty and valid and not used:
+ _flag["%s_valid" % nibble] = False
+ return
+
+ _flag["%s_masked" % nibble] = not mem.empty
+
+ if mem.empty:
+ return
+
+ _flag["%s_valid" % nibble] = True
+
+ _mem.freq = mem.freq / 1000
+ _mem.offset = mem.offset / 1000
+ _mem.duplex = DUPLEX.index(mem.duplex)
+ _mem.tmode = TMODES.index(mem.tmode)
+ _mem.tone = chirp_common.TONES.index(mem.rtone)
+ _mem.tone2 = chirp_common.TONES.index(mem.rtone)
+ _mem.dtcs = chirp_common.DTCS_CODES.index(mem.dtcs)
+ _mem.dtcs2 = chirp_common.DTCS_CODES.index(mem.dtcs)
+ _mem.isnarrow = MODES.index(mem.mode)
+ _mem.step = STEPS.index(mem.tuning_step)
+ _flag["%s_pskip" % nibble] = mem.skip == "P"
+ _flag["%s_skip" % nibble] = mem.skip == "S"
+ if mem.power:
+ _mem.power = POWER_LEVELS.index(mem.power)
+ else:
+ _mem.power = 3
+
+ _mem.name = _encode_name(mem.name)
+
+ LOG.debug("encoded mem\n%s\n" % (util.hexprint(_mem.get_raw()[0:20])))
+
+ @classmethod
+ def match_model(cls, filedata, filename):
+ return len(filedata) == cls._memsize
+
+ @classmethod
+ def get_prompts(cls):
+ rp = chirp_common.RadioPrompts()
+ rp.pre_download = _(dedent("""\
+ 1. Turn Radio off.
+ 2. Connect data cable.
+ 3. While holding "A/N LOW" button, turn radio on.
+ 4. <b>After clicking OK</b>, press "SET MHz" to send image."""))
+ rp.pre_upload = _(dedent("""\
+ 1. Turn Radio off.
+ 2. Connect data cable.
+ 3. While holding "A/N LOW" button, turn radio on.
+ 4. Press "MW D/MR" to receive image.
+ 5. Click OK to dismiss this dialog and start transfer."""))
+ return rp
3
3
These two patches move the drivers and ui into new subdirectories
under chirp/, chasing down all of the imports.
Zach Welch (2):
Move drivers into chirp/drivers/ (#2351)
Move chirpui/ to chirp/ui/ (#2351)
build/make_source_release.sh | 2 +-
chirp/detect.py | 4 +-
chirp/directory.py | 4 +-
chirp/drivers/__init__.py | 10 ++
chirp/{ => drivers}/alinco.py | 0
chirp/{ => drivers}/anytone.py | 0
chirp/{ => drivers}/ap510.py | 0
chirp/{ => drivers}/baofeng_uv3r.py | 2 +-
chirp/{ => drivers}/bjuv55.py | 2 +-
chirp/{ => drivers}/ft1802.py | 3 +-
chirp/{ => drivers}/ft1d.py | 4 +-
chirp/{ => drivers}/ft2800.py | 2 +-
chirp/{ => drivers}/ft2900.py | 2 +-
chirp/{ => drivers}/ft50.py | 3 +-
chirp/{ => drivers}/ft50_ll.py | 0
chirp/{ => drivers}/ft60.py | 4 +-
chirp/{ => drivers}/ft7800.py | 4 +-
chirp/{ => drivers}/ft817.py | 4 +-
chirp/{ => drivers}/ft857.py | 3 +-
chirp/{ => drivers}/ft90.py | 3 +-
chirp/{ => drivers}/ftm350.py | 4 +-
chirp/{ => drivers}/generic_csv.py | 0
chirp/{ => drivers}/generic_tpe.py | 3 +-
chirp/{ => drivers}/generic_xml.py | 0
chirp/{ => drivers}/h777.py | 0
chirp/{ => drivers}/ic208.py | 4 +-
chirp/{ => drivers}/ic2100.py | 4 +-
chirp/{ => drivers}/ic2200.py | 4 +-
chirp/{ => drivers}/ic2720.py | 4 +-
chirp/{ => drivers}/ic2820.py | 4 +-
chirp/{ => drivers}/ic9x.py | 3 +-
chirp/{ => drivers}/ic9x_icf.py | 3 +-
chirp/{ => drivers}/ic9x_icf_ll.py | 0
chirp/{ => drivers}/ic9x_ll.py | 0
chirp/{ => drivers}/icf.py | 0
chirp/{ => drivers}/icomciv.py | 3 +-
chirp/{ => drivers}/icq7.py | 4 +-
chirp/{ => drivers}/ict70.py | 4 +-
chirp/{ => drivers}/ict7h.py | 4 +-
chirp/{ => drivers}/ict8.py | 3 +-
chirp/{ => drivers}/icw32.py | 4 +-
chirp/{ => drivers}/icx8x.py | 3 +-
chirp/{ => drivers}/icx8x_ll.py | 0
chirp/{ => drivers}/id31.py | 3 +-
chirp/{ => drivers}/id51.py | 3 +-
chirp/{ => drivers}/id800.py | 4 +-
chirp/{ => drivers}/id880.py | 4 +-
chirp/{ => drivers}/idrp.py | 0
chirp/{ => drivers}/kenwood_hmk.py | 3 +-
chirp/{ => drivers}/kenwood_itm.py | 3 +-
chirp/{ => drivers}/kenwood_live.py | 0
chirp/{ => drivers}/kguv8d.py | 0
chirp/{ => drivers}/kyd.py | 0
chirp/{ => drivers}/leixen.py | 0
chirp/{ => drivers}/puxing.py | 2 +-
chirp/{ => drivers}/rfinder.py | 0
chirp/{ => drivers}/template.py | 0
chirp/{ => drivers}/th9800.py | 2 +-
chirp/{ => drivers}/th_uv3r.py | 2 +-
chirp/{ => drivers}/th_uv3r25.py | 2 +-
chirp/{ => drivers}/th_uvf8d.py | 0
chirp/{ => drivers}/thd72.py | 0
chirp/{ => drivers}/thuv1f.py | 0
chirp/{ => drivers}/tk8102.py | 0
chirp/{ => drivers}/tmv71.py | 2 +-
chirp/{ => drivers}/tmv71_ll.py | 0
chirp/{ => drivers}/uv5r.py | 0
chirp/{ => drivers}/uvb5.py | 0
chirp/{ => drivers}/vx170.py | 5 +-
chirp/{ => drivers}/vx2.py | 3 +-
chirp/{ => drivers}/vx3.py | 4 +-
chirp/{ => drivers}/vx5.py | 4 +-
chirp/{ => drivers}/vx510.py | 4 +-
chirp/{ => drivers}/vx6.py | 4 +-
chirp/{ => drivers}/vx7.py | 4 +-
chirp/{ => drivers}/vx8.py | 4 +-
chirp/{ => drivers}/vxa700.py | 0
chirp/{ => drivers}/wouxun.py | 2 +-
chirp/{ => drivers}/wouxun_common.py | 0
chirp/{ => drivers}/yaesu_clone.py | 0
{chirpui => chirp/ui}/__init__.py | 0
{chirpui => chirp/ui}/bandplans.py | 2 +-
{chirpui => chirp/ui}/bankedit.py | 2 +-
{chirpui => chirp/ui}/clone.py | 2 +-
{chirpui => chirp/ui}/cloneprog.py | 0
{chirpui => chirp/ui}/common.py | 2 +-
{chirpui => chirp/ui}/config.py | 0
{chirpui => chirp/ui}/dstaredit.py | 2 +-
{chirpui => chirp/ui}/editorset.py | 7 +-
{chirpui => chirp/ui}/fips.py | 0
{chirpui => chirp/ui}/importdialog.py | 7 +-
{chirpui => chirp/ui}/inputdialog.py | 2 +-
{chirpui => chirp/ui}/mainapp.py | 15 +--
{chirpui => chirp/ui}/memdetail.py | 2 +-
{chirpui => chirp/ui}/memedit.py | 4 +-
{chirpui => chirp/ui}/miscwidgets.py | 0
{chirpui => chirp/ui}/radiobrowser.py | 4 +-
{chirpui => chirp/ui}/reporting.py | 2 +-
{chirpui => chirp/ui}/settingsedit.py | 2 +-
{chirpui => chirp/ui}/shiftdialog.py | 0
chirpc | 4 +-
chirpw | 6 +-
csvdump/csvapp.py | 2 +-
locale/Makefile | 2 +-
setup.py | 19 +++-
share/make_supported.py | 1 +
tests/run_tests | 4 +-
tests/unit/test_mappingmodel.py | 2 +-
tests/unit/test_memedit_edits.py | 2 +-
tests/unit/test_shiftdialog.py | 2 +-
tools/cpep8.blacklist | 132 +++++++++++------------
tools/cpep8.manifest | 192 +++++++++++++++++-----------------
112 files changed, 320 insertions(+), 281 deletions(-)
create mode 100644 chirp/drivers/__init__.py
rename chirp/{ => drivers}/alinco.py (100%)
rename chirp/{ => drivers}/anytone.py (100%)
rename chirp/{ => drivers}/ap510.py (100%)
rename chirp/{ => drivers}/baofeng_uv3r.py (99%)
rename chirp/{ => drivers}/bjuv55.py (99%)
rename chirp/{ => drivers}/ft1802.py (98%)
rename chirp/{ => drivers}/ft1d.py (99%)
rename chirp/{ => drivers}/ft2800.py (99%)
rename chirp/{ => drivers}/ft2900.py (99%)
rename chirp/{ => drivers}/ft50.py (95%)
rename chirp/{ => drivers}/ft50_ll.py (100%)
rename chirp/{ => drivers}/ft60.py (99%)
rename chirp/{ => drivers}/ft7800.py (99%)
rename chirp/{ => drivers}/ft817.py (99%)
rename chirp/{ => drivers}/ft857.py (99%)
rename chirp/{ => drivers}/ft90.py (99%)
rename chirp/{ => drivers}/ftm350.py (99%)
rename chirp/{ => drivers}/generic_csv.py (100%)
rename chirp/{ => drivers}/generic_tpe.py (96%)
rename chirp/{ => drivers}/generic_xml.py (100%)
rename chirp/{ => drivers}/h777.py (100%)
rename chirp/{ => drivers}/ic208.py (98%)
rename chirp/{ => drivers}/ic2100.py (98%)
rename chirp/{ => drivers}/ic2200.py (98%)
rename chirp/{ => drivers}/ic2720.py (98%)
rename chirp/{ => drivers}/ic2820.py (99%)
rename chirp/{ => drivers}/ic9x.py (99%)
rename chirp/{ => drivers}/ic9x_icf.py (96%)
rename chirp/{ => drivers}/ic9x_icf_ll.py (100%)
rename chirp/{ => drivers}/ic9x_ll.py (100%)
rename chirp/{ => drivers}/icf.py (100%)
rename chirp/{ => drivers}/icomciv.py (99%)
rename chirp/{ => drivers}/icq7.py (99%)
rename chirp/{ => drivers}/ict70.py (98%)
rename chirp/{ => drivers}/ict7h.py (97%)
rename chirp/{ => drivers}/ict8.py (97%)
rename chirp/{ => drivers}/icw32.py (98%)
rename chirp/{ => drivers}/icx8x.py (98%)
rename chirp/{ => drivers}/icx8x_ll.py (100%)
rename chirp/{ => drivers}/id31.py (99%)
rename chirp/{ => drivers}/id51.py (96%)
rename chirp/{ => drivers}/id800.py (99%)
rename chirp/{ => drivers}/id880.py (99%)
rename chirp/{ => drivers}/idrp.py (100%)
rename chirp/{ => drivers}/kenwood_hmk.py (97%)
rename chirp/{ => drivers}/kenwood_itm.py (97%)
rename chirp/{ => drivers}/kenwood_live.py (100%)
rename chirp/{ => drivers}/kguv8d.py (100%)
rename chirp/{ => drivers}/kyd.py (100%)
rename chirp/{ => drivers}/leixen.py (100%)
rename chirp/{ => drivers}/puxing.py (99%)
rename chirp/{ => drivers}/rfinder.py (100%)
rename chirp/{ => drivers}/template.py (100%)
rename chirp/{ => drivers}/th9800.py (99%)
rename chirp/{ => drivers}/th_uv3r.py (99%)
rename chirp/{ => drivers}/th_uv3r25.py (99%)
rename chirp/{ => drivers}/th_uvf8d.py (100%)
rename chirp/{ => drivers}/thd72.py (100%)
rename chirp/{ => drivers}/thuv1f.py (100%)
rename chirp/{ => drivers}/tk8102.py (100%)
rename chirp/{ => drivers}/tmv71.py (98%)
rename chirp/{ => drivers}/tmv71_ll.py (100%)
rename chirp/{ => drivers}/uv5r.py (100%)
rename chirp/{ => drivers}/uvb5.py (100%)
rename chirp/{ => drivers}/vx170.py (96%)
rename chirp/{ => drivers}/vx2.py (99%)
rename chirp/{ => drivers}/vx3.py (99%)
rename chirp/{ => drivers}/vx5.py (98%)
rename chirp/{ => drivers}/vx510.py (98%)
rename chirp/{ => drivers}/vx6.py (99%)
rename chirp/{ => drivers}/vx7.py (99%)
rename chirp/{ => drivers}/vx8.py (99%)
rename chirp/{ => drivers}/vxa700.py (100%)
rename chirp/{ => drivers}/wouxun.py (99%)
rename chirp/{ => drivers}/wouxun_common.py (100%)
rename chirp/{ => drivers}/yaesu_clone.py (100%)
rename {chirpui => chirp/ui}/__init__.py (100%)
rename {chirpui => chirp/ui}/bandplans.py (99%)
rename {chirpui => chirp/ui}/bankedit.py (99%)
rename {chirpui => chirp/ui}/clone.py (99%)
rename {chirpui => chirp/ui}/cloneprog.py (100%)
rename {chirpui => chirp/ui}/common.py (99%)
rename {chirpui => chirp/ui}/config.py (100%)
rename {chirpui => chirp/ui}/dstaredit.py (99%)
rename {chirpui => chirp/ui}/editorset.py (98%)
rename {chirpui => chirp/ui}/fips.py (100%)
rename {chirpui => chirp/ui}/importdialog.py (99%)
rename {chirpui => chirp/ui}/inputdialog.py (99%)
rename {chirpui => chirp/ui}/mainapp.py (99%)
rename {chirpui => chirp/ui}/memdetail.py (99%)
rename {chirpui => chirp/ui}/memedit.py (99%)
rename {chirpui => chirp/ui}/miscwidgets.py (100%)
rename {chirpui => chirp/ui}/radiobrowser.py (99%)
rename {chirpui => chirp/ui}/reporting.py (99%)
rename {chirpui => chirp/ui}/settingsedit.py (99%)
rename {chirpui => chirp/ui}/shiftdialog.py (100%)
--
1.9.1
1
2
Tested changes:
[Marco Filippi <iz3gme.marco(a)gmail.com>] Fix style issues in ft1d.py
This patch brings ft1d.py into conformance with PEP8 rules and removes
it from the blacklist.
improves #2355
[Marco Filippi <iz3gme.marco(a)gmail.com>] Fix style issues in ft857.py
This patch brings ft857.py into conformance with PEP8 rules and removes
it from the blacklist.
improves #2355
[Marco Filippi <iz3gme.marco(a)gmail.com>] Fix style issues in ft817.py
This patch brings ft817.py into conformance with PEP8 rules and removes
it from the blacklist.
improves #2355
[Zach Welch <zach(a)mandolincreekfarm.com>] Use logging in chirpui/*.py (#2347)
[Zach Welch <zach(a)mandolincreekfarm.com>] Use logging in chirp/*.py (#2347)
[Zach Welch <zach(a)mandolincreekfarm.com>] Use logging in chirp[cw] (#2347)
[Richard Cochran <ag6qr(a)sonic.net>] Support new model Yaesu FT-2900R, new driver ft2900.py (#358)
This adds driver ft2900.py to support the Yaesu FT-2900R radio.
At this time, support is limited to the 200 standard memories. No
banks, no settings, no band edge limits. Driver is loosely based
on FT-2800 driver, with some code borrowed from VX-7 and FT-60 drivers.
A sample .img file is being e-mailed to the dev list in a separate email.
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in tools (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in fips.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in reporting.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in miscwidgits.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in memedit.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in memdetail.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in mainapp.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in importdialog.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in editorset.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in common.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in settings.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in bitwise.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in chirp module (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in bandplans (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in pyPEG.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in elib_intl.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in chirp_common.py (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in make_supported.py (#2355)
Like run_tests, this script monkeys with the path to find the chirp
modules, so it gets a similar exception.
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in csvdump scripts (#2355)
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in unit tests (#2355)
The memedit unit tests needed an exception, as that module uses a lambda
to fake localization when importing the UI module.
[Zach Welch <zach(a)mandolincreekfarm.com>] Fix style issues in run_tests (#2355)
The run_tests script contains logic to set the path for importing the
chirp modules. This violates the style rule that all module-level
imports must be at the top of the file, so I added it as an exception
for this file.
[Zach Welch <zach(a)mandolincreekfarm.com>] Allow cpep8.py script to make exceptions (#2355)
This patch enhances the cpep8.py script with the ability to ignore a
list of style rules on per-file basis. There are cases where it may be
too disruptive to eliminate all style issues, so this mechanism allows
the style checker to enforce the remainder of the style rules. The new
--strict option will cause the script to ignore the exception list.
As a bonus, this change improves interactivity, so --verbose will cause
the name of the file to be printed as it is checked (rather than
printing one long list before it started). The downside: the pep8
module catches KeyboardInterrpt, so it's hard impossible to stop once it
gets started.
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
53 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 50d4a0d71fde9ce7f59310a88e7fb8926095e035
[workspace] $ hg log --template "<changeset node='{node}' author='{author|xmlescape}' rev='{rev}' date='{date}'><msg>{desc|xmlescape}</msg><added>{file_adds|stringify|xmlescape}</added><deleted>{file_dels|stringify|xmlescape}</deleted><files>{files|stringify|xmlescape}</files><parents>{parents}</parents></changeset>\n" --rev default:0 --follow --prune 50d4a0d71fde9ce7f59310a88e7fb8926095e035
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson2971085344772302748.sh
+ ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.058s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
real 0m6.073s
user 0m5.655s
sys 0m0.114s
================================================
Tests OK
Email was triggered for: Success
Sending email for trigger: Success
1
0
Tested changes:
[Zach Welch <zach(a)mandolincreekfarm.com>] Update cpep8 to use pep8 1.6.2 (#2355)
This patch updates the virtualenv version of pep8 to 1.6.2, chasing
down the new style errors that pop up in the already cleaned files.
[Zach Welch <zach(a)mandolincreekfarm.com>] Add cpep8.sh wrapper script (#2355)
This patch moves the virtualenv setup out of run_all_tests.sh, allowing
cpep8.py to be run on its own with the correct module versions. This
patch also moves the virtualenv temporary directory into tools/ and
adds it to the .hgignore file.
[Zach Welch <zach(a)mandolincreekfarm.com>] Improve cpep8.py (#2355)
This patch expands cpep8.manifest to contain all files, allowing the
cpep8.py script to use it instead of scanning for files. Scanning can
now be done with --scan. If both --scan and --update options are given,
the manifest file will be updated with the scan results.
Altogether, this should fix problems that Windows users were seeing,
caused by mismatches between the dynamic manifest and the blacklist
(due to different path separators).
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
13 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 53018968710141beb87d9e421cbdb68c7a79b440
[workspace] $ hg log --template "<changeset node='{node}' author='{author|xmlescape}' rev='{rev}' date='{date}'><msg>{desc|xmlescape}</msg><added>{file_adds|stringify|xmlescape}</added><deleted>{file_dels|stringify|xmlescape}</deleted><files>{files|stringify|xmlescape}</files><parents>{parents}</parents></changeset>\n" --rev default:0 --follow --prune 53018968710141beb87d9e421cbdb68c7a79b440
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson9178390503684165895.sh
+ ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... FAIL
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
======================================================================
FAIL: test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/var/lib/jenkins/jobs/chirp-test/workspace/tests/unit/test_platform.py", line 51, in test_serial_ports_sorted
self.assertEqual(ports, correct_order)
AssertionError: Lists differ: ['COM1', 'COM11', 'COM2', 'COM... != ['COM1', 'COM2', 'COM3', 'COM7...
First differing element 1:
COM11
COM2
- ['COM1', 'COM11', 'COM2', 'COM12', 'COM7', 'COM3', 'COM123']
+ ['COM1', 'COM2', 'COM3', 'COM7', 'COM11', 'COM12', 'COM123']
----------------------------------------------------------------------
Ran 151 tests in 0.091s
FAILED (failures=1)
FAIL: Please keep commit message lines to <80 columns
Checking for PEP8 regressions...
New python executable in ./tools/cpep8.venv/bin/python
Installing setuptools, pip...done.
real 0m4.832s
user 0m2.825s
sys 0m0.321s
================================================
Tests FAILED: style tests, unit tests
Build step 'Execute shell' marked build as failure
Email was triggered for: Failure
Sending email for trigger: Failure
2
2
02 Mar '15
# HG changeset patch
# User Marco Filippi <iz3gme.marco(a)gmail.com>
# Date 1425298395 -3600
# Mon Mar 02 13:13:15 2015 +0100
# Node ID bf8e866256f039aaf1b97c21366bbef26ec5cc8b
# Parent 9deae1ac816a7a0efd7a754b8e50546f95a97b1a
Fix style issues in ft817.py
This patch brings ft817.py into conformance with PEP8 rules and removes
it from the blacklist.
improves #2355
diff --git a/chirp/ft817.py b/chirp/ft817.py
--- a/chirp/ft817.py
+++ b/chirp/ft817.py
@@ -22,13 +22,15 @@
RadioSettingValueInteger, RadioSettingValueList, \
RadioSettingValueBoolean, RadioSettingValueString, \
RadioSettings
-import time, os, logging
+import time
+import logging
from textwrap import dedent
LOG = logging.getLogger(__name__)
CMD_ACK = 0x06
+
@directory.register
class FT817Radio(yaesu_clone.YaesuCloneModeRadio):
"""Yaesu FT-817"""
@@ -40,7 +42,7 @@
DUPLEX = ["", "-", "+", "split"]
# narrow modes has to be at end
MODES = ["LSB", "USB", "CW", "CWR", "AM", "FM", "DIG", "PKT", "NCW",
- "NCWR", "NFM"]
+ "NCWR", "NFM"]
TMODES = ["", "Tone", "TSQL", "DTCS"]
STEPSFM = [5.0, 6.25, 10.0, 12.5, 15.0, 20.0, 25.0, 50.0]
STEPSAM = [2.5, 5.0, 9.0, 10.0, 12.5, 25.0]
@@ -213,10 +215,9 @@
struct mem_struct sixtymeterchannels[5];
"""
_CALLSIGN_CHARSET = [chr(x) for x in range(ord("0"), ord("9") + 1) +
- range(ord("A"), ord("Z") + 1) +
- [ord(" ")]]
+ range(ord("A"), ord("Z") + 1) + [ord(" ")]]
_CALLSIGN_CHARSET_REV = dict(zip(_CALLSIGN_CHARSET,
- range(0, len(_CALLSIGN_CHARSET))))
+ range(0, len(_CALLSIGN_CHARSET))))
# WARNING Index are hard wired in memory management code !!!
SPECIAL_MEMORIES = {
@@ -307,19 +308,20 @@
if checksum.get_existing(data) != \
checksum.get_calculated(data):
raise Exception("Checksum Failed [%02X<>%02X] block %02X" %
- (checksum.get_existing(data),
- checksum.get_calculated(data), blocknum))
+ (checksum.get_existing(data),
+ checksum.get_calculated(data), blocknum))
# Chew away the block number and the checksum
data = data[1:block + 1]
else:
if lastblock and self._US_model:
raise Exception(_("Unable to read last block. "
- "This often happens when the selected model is US "
- "but the radio is a non-US one (or widebanded). "
- "Please choose the correct model and try again."))
+ "This often happens when the selected model "
+ "is US but the radio is a non-US one (or "
+ "widebanded). Please choose the correct "
+ "model and try again."))
else:
- raise Exception("Unable to read block %02X expected %i got %i" %
- (blocknum, block + 2, len(data)))
+ raise Exception("Unable to read block %02X expected %i got %i"
+ % (blocknum, block + 2, len(data)))
LOG.debug("Read %i" % len(data))
return data
@@ -360,7 +362,6 @@
"but the radio is a US one. "
"Please choose the correct model and try again."))
-
print "Clone completed in %i seconds" % (time.time() - start)
return memmap.MemoryMap(data)
@@ -383,8 +384,8 @@
for _i in range(0, repeat):
time.sleep(0.01)
checksum = yaesu_clone.YaesuChecksum(pos, pos + block - 1)
- LOG.debug("Block %i - will send from %i to %i byte " % \
- (blocks, pos, pos + block))
+ LOG.debug("Block %i - will send from %i to %i byte " %
+ (blocks, pos, pos + block))
LOG.debug(util.hexprint(chr(blocks)))
LOG.debug(util.hexprint(self.get_mmap()[pos:pos + block]))
LOG.debug(util.hexprint(chr(checksum.get_calculated(
@@ -537,7 +538,7 @@
return mem
def _set_special(self, mem):
- if mem.empty and not mem.number in self.SPECIAL_PMS.values():
+ if mem.empty and mem.number not in self.SPECIAL_PMS.values():
# can't delete special memories!
raise Exception("Sorry, special memory can't be deleted")
@@ -589,9 +590,9 @@
def _get_normal(self, number):
_mem = self._memobj.memory[number - 1]
used = (self._memobj.visible[(number - 1) / 8] >> (number - 1) % 8) \
- & 0x01
+ & 0x01
valid = (self._memobj.filled[(number - 1) / 8] >> (number - 1) % 8) \
- & 0x01
+ & 0x01
mem = chirp_common.Memory()
mem.number = number
@@ -605,9 +606,9 @@
def _set_normal(self, mem):
_mem = self._memobj.memory[mem.number - 1]
wasused = (self._memobj.visible[(mem.number - 1) / 8] >>
- (mem.number - 1) % 8) & 0x01
+ (mem.number - 1) % 8) & 0x01
wasvalid = (self._memobj.filled[(mem.number - 1) / 8] >>
- (mem.number - 1) % 8) & 0x01
+ (mem.number - 1) % 8) & 0x01
if mem.empty:
if mem.number == 1:
@@ -680,8 +681,8 @@
return mem
def _set_memory(self, mem, _mem):
- if len(mem.name) > 0: # not supported in chirp
- # so I make label visible if have one
+ if len(mem.name) > 0: # not supported in chirp
+ # so I make label visible if have one
_mem.tag_on_off = 1
else:
_mem.tag_on_off = 0
@@ -763,250 +764,303 @@
panelcontr = RadioSettingGroup("panelcontr", "Panel controls")
top = RadioSettings(basic, cw, packet,
- panelcontr, panel, extended, antenna)
+ panelcontr, panel, extended, antenna)
rs = RadioSetting("ars_144", "144 ARS",
- RadioSettingValueBoolean(_settings.ars_144))
+ RadioSettingValueBoolean(_settings.ars_144))
basic.append(rs)
rs = RadioSetting("ars_430", "430 ARS",
- RadioSettingValueBoolean(_settings.ars_430))
+ RadioSettingValueBoolean(_settings.ars_430))
basic.append(rs)
rs = RadioSetting("pkt9600_mic", "Paket 9600 mic level",
- RadioSettingValueInteger(0, 100, _settings.pkt9600_mic))
+ RadioSettingValueInteger(0, 100,
+ _settings.pkt9600_mic))
packet.append(rs)
options = ["enable", "disable"]
rs = RadioSetting("disable_amfm_dial", "AM&FM Dial",
- RadioSettingValueList(options,
- options[_settings.disable_amfm_dial]))
+ RadioSettingValueList(options,
+ options[
+ _settings.disable_amfm_dial
+ ]))
panel.append(rs)
rs = RadioSetting("am_mic", "AM mic level",
- RadioSettingValueInteger(0, 100, _settings.am_mic))
+ RadioSettingValueInteger(0, 100, _settings.am_mic))
basic.append(rs)
options = ["OFF", "1h", "2h", "3h", "4h", "5h", "6h"]
rs = RadioSetting("apo_time", "APO time",
- RadioSettingValueList(options, options[_settings.apo_time]))
+ RadioSettingValueList(options,
+ options[_settings.apo_time]))
basic.append(rs)
options = ["OFF", "Range", "All"]
rs = RadioSetting("arts_beep", "ARTS beep",
- RadioSettingValueList(options, options[_settings.arts_beep]))
+ RadioSettingValueList(options,
+ options[_settings.arts_beep]))
basic.append(rs)
options = ["OFF", "ON", "Auto"]
rs = RadioSetting("backlight", "Backlight",
- RadioSettingValueList(options, options[_settings.backlight]))
+ RadioSettingValueList(options,
+ options[_settings.backlight]))
panel.append(rs)
options = ["6h", "8h", "10h"]
rs = RadioSetting("batt_chg", "Battery charge",
- RadioSettingValueList(options, options[_settings.batt_chg]))
+ RadioSettingValueList(options,
+ options[_settings.batt_chg]))
basic.append(rs)
options = ["440Hz", "880Hz"]
rs = RadioSetting("beep_freq", "Beep frequency",
- RadioSettingValueList(options, options[_settings.beep_freq]))
+ RadioSettingValueList(options,
+ options[_settings.beep_freq]))
panel.append(rs)
rs = RadioSetting("beep_volume", "Beep volume",
- RadioSettingValueInteger(0, 100, _settings.beep_volume))
+ RadioSettingValueInteger(0, 100,
+ _settings.beep_volume))
panel.append(rs)
options = ["4800", "9600", "38400"]
rs = RadioSetting("cat_rate", "CAT rate",
- RadioSettingValueList(options, options[_settings.cat_rate]))
+ RadioSettingValueList(options,
+ options[_settings.cat_rate]))
basic.append(rs)
options = ["Blue", "Amber", "Violet"]
rs = RadioSetting("color", "Color",
- RadioSettingValueList(options, options[_settings.color]))
+ RadioSettingValueList(options,
+ options[_settings.color]))
panel.append(rs)
rs = RadioSetting("contrast", "Contrast",
- RadioSettingValueInteger(1, 12, _settings.contrast - 1))
+ RadioSettingValueInteger(1, 12,
+ _settings.contrast - 1))
panel.append(rs)
rs = RadioSetting("cw_delay", "CW delay (*10 ms)",
- RadioSettingValueInteger(1, 250, _settings.cw_delay))
+ RadioSettingValueInteger(1, 250,
+ _settings.cw_delay))
cw.append(rs)
rs = RadioSetting("cw_id", "CW id",
- RadioSettingValueBoolean(_settings.cw_id))
+ RadioSettingValueBoolean(_settings.cw_id))
cw.append(rs)
options = ["Normal", "Reverse"]
rs = RadioSetting("cw_paddle", "CW paddle",
- RadioSettingValueList(options, options[_settings.cw_paddle]))
+ RadioSettingValueList(options,
+ options[_settings.cw_paddle]))
cw.append(rs)
options = ["%i Hz" % i for i in range(300, 1001, 50)]
rs = RadioSetting("cw_pitch", "CW pitch",
- RadioSettingValueList(options, options[_settings.cw_pitch]))
+ RadioSettingValueList(options,
+ options[_settings.cw_pitch]))
cw.append(rs)
options = ["%i wpm" % i for i in range(4, 61)]
rs = RadioSetting("cw_speed", "CW speed",
- RadioSettingValueList(options, options[_settings.cw_speed]))
+ RadioSettingValueList(options,
+ options[_settings.cw_speed]))
cw.append(rs)
options = ["1:%1.1f" % (i / 10) for i in range(25, 46, 1)]
rs = RadioSetting("cw_weight", "CW weight",
- RadioSettingValueList(options, options[_settings.cw_weight]))
+ RadioSettingValueList(options,
+ options[_settings.cw_weight]))
cw.append(rs)
rs = RadioSetting("dig_disp", "Dig disp (*10 Hz)",
- RadioSettingValueInteger(-300, 300, _settings.dig_disp))
+ RadioSettingValueInteger(-300, 300,
+ _settings.dig_disp))
packet.append(rs)
rs = RadioSetting("dig_mic", "Dig mic",
- RadioSettingValueInteger(0, 100, _settings.dig_mic))
+ RadioSettingValueInteger(0, 100,
+ _settings.dig_mic))
packet.append(rs)
options = ["RTTY", "PSK31-L", "PSK31-U", "USER-L", "USER-U"]
rs = RadioSetting("dig_mode", "Dig mode",
- RadioSettingValueList(options, options[_settings.dig_mode]))
+ RadioSettingValueList(options,
+ options[_settings.dig_mode]))
packet.append(rs)
rs = RadioSetting("dig_shift", "Dig shift (*10 Hz)",
- RadioSettingValueInteger(-300, 300, _settings.dig_shift))
+ RadioSettingValueInteger(-300, 300,
+ _settings.dig_shift))
packet.append(rs)
rs = RadioSetting("fm_mic", "FM mic",
- RadioSettingValueInteger(0, 100, _settings.fm_mic))
+ RadioSettingValueInteger(0, 100,
+ _settings.fm_mic))
basic.append(rs)
options = ["Dial", "Freq", "Panel"]
rs = RadioSetting("lock_mode", "Lock mode",
- RadioSettingValueList(options, options[_settings.lock_mode]))
+ RadioSettingValueList(options,
+ options[_settings.lock_mode]))
panel.append(rs)
options = ["Fine", "Coarse"]
rs = RadioSetting("main_step", "Main step",
- RadioSettingValueList(options, options[_settings.main_step]))
+ RadioSettingValueList(options,
+ options[_settings.main_step]))
panel.append(rs)
rs = RadioSetting("mem_group", "Mem group",
- RadioSettingValueBoolean(_settings.mem_group))
+ RadioSettingValueBoolean(_settings.mem_group))
basic.append(rs)
rs = RadioSetting("mic_key", "Mic key",
- RadioSettingValueBoolean(_settings.mic_key))
+ RadioSettingValueBoolean(_settings.mic_key))
cw.append(rs)
rs = RadioSetting("mic_scan", "Mic scan",
- RadioSettingValueBoolean(_settings.mic_scan))
+ RadioSettingValueBoolean(_settings.mic_scan))
basic.append(rs)
options = ["Off", "SSB", "CW"]
rs = RadioSetting("op_filter", "Optional filter",
- RadioSettingValueList(options, options[_settings.op_filter]))
+ RadioSettingValueList(options,
+ options[_settings.op_filter]))
basic.append(rs)
rs = RadioSetting("pkt_mic", "Packet mic",
- RadioSettingValueInteger(0, 100, _settings.pkt_mic))
+ RadioSettingValueInteger(0, 100, _settings.pkt_mic))
packet.append(rs)
options = ["1200", "9600"]
rs = RadioSetting("pkt_rate", "Packet rate",
- RadioSettingValueList(options, options[_settings.pkt_rate]))
+ RadioSettingValueList(options,
+ options[_settings.pkt_rate]))
packet.append(rs)
options = ["Off", "3 sec", "5 sec", "10 sec"]
rs = RadioSetting("resume_scan", "Resume scan",
- RadioSettingValueList(options, options[_settings.resume_scan]))
+ RadioSettingValueList(options,
+ options[_settings.resume_scan])
+ )
basic.append(rs)
options = ["Cont", "Chk"]
rs = RadioSetting("scope", "Scope",
- RadioSettingValueList(options, options[_settings.scope]))
+ RadioSettingValueList(options,
+ options[_settings.scope]))
basic.append(rs)
rs = RadioSetting("sidetone", "Sidetone",
- RadioSettingValueInteger(0, 100, _settings.sidetone))
+ RadioSettingValueInteger(0, 100, _settings.sidetone))
cw.append(rs)
options = ["RF-Gain", "Squelch"]
rs = RadioSetting("sql_rf_gain", "Squelch/RF-Gain",
- RadioSettingValueList(options, options[_settings.sql_rf_gain]))
+ RadioSettingValueList(options,
+ options[_settings.sql_rf_gain])
+ )
panel.append(rs)
rs = RadioSetting("ssb_mic", "SSB Mic",
- RadioSettingValueInteger(0, 100, _settings.ssb_mic))
+ RadioSettingValueInteger(0, 100, _settings.ssb_mic))
basic.append(rs)
options = ["%i" % i for i in range(0, 21)]
options[0] = "Off"
rs = RadioSetting("tot_time", "Time-out timer",
- RadioSettingValueList(options, options[_settings.tot_time]))
+ RadioSettingValueList(options,
+ options[_settings.tot_time]))
basic.append(rs)
rs = RadioSetting("vox_delay", "VOX delay (*100 ms)",
- RadioSettingValueInteger(1, 25, _settings.vox_delay))
+ RadioSettingValueInteger(1, 25, _settings.vox_delay))
basic.append(rs)
rs = RadioSetting("vox_gain", "VOX Gain",
- RadioSettingValueInteger(0, 100, _settings.vox_gain))
+ RadioSettingValueInteger(0, 100, _settings.vox_gain))
basic.append(rs)
rs = RadioSetting("extended_menu", "Extended menu",
- RadioSettingValueBoolean(_settings.extended_menu))
+ RadioSettingValueBoolean(_settings.extended_menu))
extended.append(rs)
options = ["Tn-Rn", "Tn-Riv", "Tiv-Rn", "Tiv-Riv"]
rs = RadioSetting("dcs_inv", "DCS coding",
- RadioSettingValueList(options, options[_settings.dcs_inv]))
+ RadioSettingValueList(options,
+ options[_settings.dcs_inv]))
extended.append(rs)
rs = RadioSetting("r_lsb_car", "LSB Rx carrier point (*10 Hz)",
- RadioSettingValueInteger(-30, 30, _settings.r_lsb_car))
+ RadioSettingValueInteger(-30, 30,
+ _settings.r_lsb_car))
extended.append(rs)
rs = RadioSetting("r_usb_car", "USB Rx carrier point (*10 Hz)",
- RadioSettingValueInteger(-30, 30, _settings.r_usb_car))
+ RadioSettingValueInteger(-30, 30,
+ _settings.r_usb_car))
extended.append(rs)
rs = RadioSetting("t_lsb_car", "LSB Tx carrier point (*10 Hz)",
- RadioSettingValueInteger(-30, 30, _settings.t_lsb_car))
+ RadioSettingValueInteger(-30, 30,
+ _settings.t_lsb_car))
extended.append(rs)
rs = RadioSetting("t_usb_car", "USB Tx carrier point (*10 Hz)",
- RadioSettingValueInteger(-30, 30, _settings.t_usb_car))
+ RadioSettingValueInteger(-30, 30,
+ _settings.t_usb_car))
extended.append(rs)
options = ["Hi", "L3", "L2", "L1"]
rs = RadioSetting("tx_power", "TX power",
- RadioSettingValueList(options, options[_settings.tx_power]))
+ RadioSettingValueList(options,
+ options[_settings.tx_power]))
basic.append(rs)
options = ["Front", "Rear"]
rs = RadioSetting("hf_antenna", "HF",
- RadioSettingValueList(options, options[_settings.hf_antenna]))
+ RadioSettingValueList(options,
+ options[_settings.hf_antenna]))
antenna.append(rs)
rs = RadioSetting("sixm_antenna", "6M",
- RadioSettingValueList(options,
- options[_settings.sixm_antenna]))
+ RadioSettingValueList(options,
+ options[_settings.sixm_antenna]
+ ))
antenna.append(rs)
rs = RadioSetting("bc_antenna", "Broadcasting",
- RadioSettingValueList(options, options[_settings.bc_antenna]))
+ RadioSettingValueList(options,
+ options[_settings.bc_antenna]))
antenna.append(rs)
rs = RadioSetting("air_antenna", "Air band",
- RadioSettingValueList(options, options[_settings.air_antenna]))
+ RadioSettingValueList(options,
+ options[_settings.air_antenna])
+ )
antenna.append(rs)
rs = RadioSetting("vhf_antenna", "VHF",
- RadioSettingValueList(options, options[_settings.vhf_antenna]))
+ RadioSettingValueList(options,
+ options[_settings.vhf_antenna])
+ )
antenna.append(rs)
rs = RadioSetting("uhf_antenna", "UHF",
- RadioSettingValueList(options, options[_settings.uhf_antenna]))
+ RadioSettingValueList(options,
+ options[_settings.uhf_antenna])
+ )
antenna.append(rs)
st = RadioSettingValueString(0, 7, ''.join([self._CALLSIGN_CHARSET[x]
- for x in self._memobj.callsign]))
+ for x in self._memobj.callsign]))
st.set_charset(self._CALLSIGN_CHARSET)
rs = RadioSetting("callsign", "Callsign", st)
cw.append(rs)
rs = RadioSetting("spl", "Split",
- RadioSettingValueBoolean(_settings.spl))
+ RadioSettingValueBoolean(_settings.spl))
panelcontr.append(rs)
options = ["None", "Up", "Down"]
rs = RadioSetting("scn_mode", "Scan mode",
- RadioSettingValueList(options, options[_settings.scn_mode]))
+ RadioSettingValueList(options,
+ options[_settings.scn_mode]))
panelcontr.append(rs)
rs = RadioSetting("pri", "Priority",
- RadioSettingValueBoolean(_settings.pri))
+ RadioSettingValueBoolean(_settings.pri))
panelcontr.append(rs)
rs = RadioSetting("dw", "Dual watch",
- RadioSettingValueBoolean(_settings.dw))
+ RadioSettingValueBoolean(_settings.dw))
panelcontr.append(rs)
rs = RadioSetting("art", "Auto-range transponder",
- RadioSettingValueBoolean(_settings.art))
+ RadioSettingValueBoolean(_settings.art))
panelcontr.append(rs)
rs = RadioSetting("nb", "Noise blanker",
- RadioSettingValueBoolean(_settings.nb))
+ RadioSettingValueBoolean(_settings.nb))
panelcontr.append(rs)
options = ["Auto", "Fast", "Slow", "Off"]
rs = RadioSetting("agc", "AGC",
- RadioSettingValueList(options, options[_settings.agc]))
+ RadioSettingValueList(options, options[_settings.agc]
+ ))
panelcontr.append(rs)
options = ["PWR", "ALC", "SWR", "MOD"]
rs = RadioSetting("pwr_meter_mode", "Power meter mode",
- RadioSettingValueList(options,
- options[_settings.pwr_meter_mode]))
+ RadioSettingValueList(options,
+ options[
+ _settings.pwr_meter_mode
+ ]))
panelcontr.append(rs)
rs = RadioSetting("vox", "Vox",
- RadioSettingValueBoolean(_settings.vox))
+ RadioSettingValueBoolean(_settings.vox))
panelcontr.append(rs)
rs = RadioSetting("bk", "Semi break-in",
- RadioSettingValueBoolean(_settings.bk))
+ RadioSettingValueBoolean(_settings.bk))
cw.append(rs)
rs = RadioSetting("kyr", "Keyer",
- RadioSettingValueBoolean(_settings.kyr))
+ RadioSettingValueBoolean(_settings.kyr))
cw.append(rs)
options = ["enabled", "disabled"]
rs = RadioSetting("fst", "Fast",
- RadioSettingValueList(options, options[_settings.fst]))
+ RadioSettingValueList(options, options[_settings.fst]
+ ))
panelcontr.append(rs)
options = ["enabled", "disabled"]
rs = RadioSetting("lock", "Lock",
- RadioSettingValueList(options, options[_settings.lock]))
+ RadioSettingValueList(options,
+ options[_settings.lock]))
panelcontr.append(rs)
return top
@@ -1037,13 +1091,14 @@
elif setting == "callsign":
self._memobj.callsign = \
[self._CALLSIGN_CHARSET_REV[x] for x in
- str(element.value)]
+ str(element.value)]
else:
setattr(obj, setting, element.value)
except:
print element.get_name()
raise
+
@directory.register
class FT817NDRadio(FT817Radio):
"""Yaesu FT-817ND"""
@@ -1054,6 +1109,7 @@
# block 9 (130 Bytes long) is to be repeted 40 times
_block_lengths = [2, 40, 208, 182, 208, 182, 198, 53, 130, 118, 130]
+
@directory.register
class FT817NDUSRadio(FT817Radio):
"""Yaesu FT-817ND (US version)"""
@@ -1088,7 +1144,7 @@
mem.extd_number = number
_mem = self._memobj.sixtymeterchannels[-self.LAST_SPECIAL60M_INDEX +
- mem.number]
+ mem.number]
mem = self._get_memory(mem, _mem)
@@ -1115,7 +1171,7 @@
raise errors.RadioError("Mode {mode} is not valid "
"in 60m channels".format(mode=mem.mode))
_mem = self._memobj.sixtymeterchannels[-self.LAST_SPECIAL60M_INDEX +
- mem.number]
+ mem.number]
self._set_memory(mem, _mem)
def get_memory(self, number):
@@ -1139,6 +1195,7 @@
top = FT817Radio.get_settings(self)
basic = top[0]
rs = RadioSetting("emergency", "Emergency",
- RadioSettingValueBoolean(self._memobj.settings.emergency))
+ RadioSettingValueBoolean(
+ self._memobj.settings.emergency))
basic.append(rs)
return top
diff --git a/tools/cpep8.blacklist b/tools/cpep8.blacklist
--- a/tools/cpep8.blacklist
+++ b/tools/cpep8.blacklist
@@ -22,7 +22,6 @@
./chirp/ft50_ll.py
./chirp/ft60.py
./chirp/ft7800.py
-./chirp/ft817.py
./chirp/ft857.py
./chirp/ft90.py
./chirp/ftm350.py
1
2
These patches convert the chirp[cw] scripts, the main chirp modules, and
the chirpui modules to use the new logging facilities. I took an
educated guess at the correct levels to use. The only files left to
update are the drivers, which I am postponing until after they are moved
into their own subdirectory.
This series applies on top of the previous series that fixes all of the
style issues.
Zach Welch (3):
Use logging in chirp[cw] (#2347)
Use logging in chirp/*.py (#2347)
Use logging in chirpui/*.py (#2347)
chirp/bitwise.py | 10 +++++++---
chirp/chirp_common.py | 4 ++--
chirp/detect.py | 10 ++++++----
chirp/directory.py | 7 +++----
chirp/generic_csv.py | 12 +++++++-----
chirp/generic_xml.py | 18 ++++++++++++------
chirp/import_logic.py | 5 ++++-
chirp/memmap.py | 5 +----
chirp/platform.py | 17 ++++++++++-------
chirp/radioreference.py | 15 +++++++++------
chirp/settings.py | 1 -
chirpc | 16 ++++++++--------
chirpui/bandplans.py | 9 +++++++--
chirpui/bankedit.py | 6 +++++-
chirpui/clone.py | 11 +++++++----
chirpui/common.py | 33 +++++++++++++++++----------------
chirpui/dstaredit.py | 13 ++++++++-----
chirpui/editorset.py | 7 +++++--
chirpui/importdialog.py | 28 ++++++++++++++++------------
chirpui/inputdialog.py | 11 +++++++----
chirpui/memdetail.py | 5 ++++-
chirpui/memedit.py | 29 ++++++++++++++++-------------
chirpui/miscwidgets.py | 11 +++++++----
chirpui/radiobrowser.py | 5 ++++-
chirpui/reporting.py | 6 +++---
chirpui/settingsedit.py | 9 ++++++---
chirpui/shiftdialog.py | 11 +++++++----
chirpw | 9 ++++++---
28 files changed, 194 insertions(+), 129 deletions(-)
--
1.9.1
1
3
# HG changeset patch
# User Zach Welch <zach(a)mandolincreekfarm.com>
Ignore .git directory (#2359)
diff --git a/.hgignore b/.hgignore
index 4ba935a..4f64a15 100644
--- a/.hgignore
+++ b/.hgignore
@@ -4,4 +4,5 @@
.*\.rej$
dist
build/bdist
-tests/logs/
\ No newline at end of file
+tests/logs/
+.git/
1
1
Here is an image file for the Yaesu_FT-2900R, to be placed in the ./tests/image directory. This is to accompany my recent patch entitled
"Support new model Yaesu FT-2900R, new driver ft2900.py (#358)"
1
0
This series of patches address the style issues in all of the Python
files except for the radio drivers. All of them are trivial patches,
as 99% of the changes are adjusting whitespace in one form or another.
I did introduce temporary variables here or there or rewrite a lambda to
a def, but I double-checked those spots carefully (and all tests pass).
The most notable change is the first patch to allow exceptions, as some
allowance was needed in a few files.
Zach Welch (22):
Allow cpep8.py script to make exceptions (#2355)
Fix style issues in run_tests (#2355)
Fix style issues in unit tests (#2355)
Fix style issues in csvdump scripts (#2355)
Fix style issues in make_supported.py (#2355)
Fix style issues in chirp_common.py (#2355)
Fix style issues in bitwise.py (#2355)
Fix style issues in settings.py (#2355)
Fix style issues in elib_intl.py (#2355)
Fix style issues in pyPEG.py (#2355)
Fix style issues in bandplans (#2355)
Fix style issues in chirp module (#2355)
Fix style issues in common.py (#2355)
Fix style issues in editorset.py (#2355)
Fix style issues in importdialog.py (#2355)
Fix style issues in mainapp.py (#2355)
Fix style issues in memdetail.py (#2355)
Fix style issues in memedit.py (#2355)
Fix style issues in miscwidgits.py (#2355)
Fix style issues in reporting.py (#2355)
Fix style issues in fips.py (#2355)
Fix style issues in tools (#2355)
chirp/__init__.py | 4 +-
chirp/bandplan_au.py | 5 +-
chirp/bandplan_iaru_r1.py | 19 +-
chirp/bandplan_na.py | 25 +-
chirp/bitwise.py | 145 +++++-----
chirp/chirp_common.py | 270 ++++++++++--------
chirp/elib_intl.py | 575 ++++++++++++++++++++-------------------
chirp/pyPEG.py | 127 ++++++---
chirp/settings.py | 46 ++--
chirpui/common.py | 53 ++--
chirpui/editorset.py | 46 ++--
chirpui/fips.py | 373 +++++++++++++------------
chirpui/importdialog.py | 92 ++++---
chirpui/mainapp.py | 303 ++++++++++++---------
chirpui/memdetail.py | 114 ++++----
chirpui/memedit.py | 284 ++++++++++---------
chirpui/miscwidgets.py | 104 +++----
chirpui/reporting.py | 22 +-
csvdump/csvapp.py | 36 +--
csvdump/csvdump.py | 55 ++--
share/make_supported.py | 25 +-
tests/run_tests | 173 +++++++-----
tests/unit/test_import_logic.py | 11 +-
tests/unit/test_memedit_edits.py | 11 +-
tests/unit/test_settings.py | 7 +-
tools/bitdiff.py | 171 +++++++-----
tools/cpep8.blacklist | 29 --
tools/cpep8.exceptions | 7 +
tools/cpep8.py | 40 ++-
tools/img2thd72.py | 36 +--
30 files changed, 1776 insertions(+), 1432 deletions(-)
create mode 100644 tools/cpep8.exceptions
--
1.9.1
1
22
These patches improve CHIRP's pep8 checking. The first makes the
cpep8.py script work on Windows by eliminating the dynamic manifest
generation in favor of a static file. The second patch factors the
virtualenv out of run_all_tests.sh into a new cpep8.sh script. Finally,
the third patch bumps the pep8 requirement from 1.4.6 to 1.6.2 and
chases down the new style issues that it caused.
Zach Welch (3):
Improve cpep8.py (#2355)
Add cpep8.sh wrapper script (#2355)
Update cpep8 to use pep8 1.6.2 (#2355)
.hgignore | 3 +-
chirp/generic_xml.py | 2 +-
chirp/platform.py | 14 ++++--
chirp/template.py | 8 +--
chirp/xml_ll.py | 26 +++++-----
chirpc | 7 +--
chirpui/clone.py | 2 +-
chirpw | 16 +++---
run_all_tests.sh | 24 +--------
setup.py | 4 +-
tools/cpep8.manifest | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++
tools/cpep8.py | 39 +++++++++++----
tools/cpep8.sh | 21 ++++++++
13 files changed, 231 insertions(+), 74 deletions(-)
create mode 100755 tools/cpep8.sh
--
1.9.1
1
3