# HG changeset patch # User Zach Welch zach@mandolincreekfarm.com # Fake Node ID 88a26664c446bc143ce4085fd8ae296c3ebafeff
Use logging in chirp/*.py (#2347)
diff --git a/chirp/bitwise.py b/chirp/bitwise.py index 544ac4f..39efe8f 100644 --- a/chirp/bitwise.py +++ b/chirp/bitwise.py @@ -59,10 +59,13 @@
import struct import os +import logging
from chirp import bitwise_grammar from chirp.memmap import MemoryMap
+LOG = logging.getLogger(__name__) +
class ParseError(Exception): """Indicates an error parsing a definition""" @@ -770,8 +773,8 @@ class Processor: bitsleft -= bits
if bitsleft: - print "WARNING: %i trailing bits unaccounted for in %s" % \ - (bitsleft, bitfield) + LOG.warn("WARNING: %i trailing bits unaccounted for in %s" % + (bitsleft, bitfield))
return bytes
@@ -866,7 +869,8 @@ class Processor: elif name == "seek": self._offset += int(value, 0) elif name == "printoffset": - print "%s: %i (0x%08X)" % (value[1:-1], self._offset, self._offset) + LOG.debug("%s: %i (0x%08X)" % + (value[1:-1], self._offset, self._offset))
def parse_block(self, lang): for t, d in lang: diff --git a/chirp/chirp_common.py b/chirp/chirp_common.py index 1566cc5..16cbf40 100644 --- a/chirp/chirp_common.py +++ b/chirp/chirp_common.py @@ -423,8 +423,8 @@ class Memory: try: self.number = int(vals[0]) except: - print "Loc: %s" % vals[0] - raise errors.InvalidDataError("Location is not a valid integer") + raise errors.InvalidDataError( + "Location '%s' is not a valid integer" % vals[0])
self.name = vals[1]
diff --git a/chirp/detect.py b/chirp/detect.py index 580670f..b590fb5 100644 --- a/chirp/detect.py +++ b/chirp/detect.py @@ -14,10 +14,13 @@ # along with this program. If not, see http://www.gnu.org/licenses/.
import serial +import logging
from chirp import errors, icf, directory, ic9x_ll from chirp import kenwood_live, icomciv
+LOG = logging.getLogger(__name__) +
def _icom_model_data_to_rclass(md): for _rtype, rclass in directory.DRV_TO_RADIO.items(): @@ -40,7 +43,7 @@ def _detect_icom_radio(ser): md = icf.get_model_data(ser) return _icom_model_data_to_rclass(md) except errors.RadioError, e: - print e + LOG.error(e)
# ICOM IC-91/92 Live-mode radios @ 4800/38400 baud
@@ -77,9 +80,8 @@ def detect_icom_radio(port):
ser.close()
- print "Auto-detected %s %s on %s" % (result.VENDOR, - result.MODEL, - port) + LOG.info("Auto-detected %s %s on %s" % + (result.VENDOR, result.MODEL, port))
return result
diff --git a/chirp/directory.py b/chirp/directory.py index 7b529e6..d89708f 100644 --- a/chirp/directory.py +++ b/chirp/directory.py @@ -45,7 +45,7 @@ def enable_reregistrations(): exception""" global ALLOW_DUPS if not ALLOW_DUPS: - print "NOTE: driver re-registration enabled" + LOG.info("driver re-registration enabled") ALLOW_DUPS = True
@@ -106,8 +106,7 @@ def icf_to_image(icf_file, img_file): f.write(img_data) f.close() else: - print "Unsupported model data:" - print util.hexprint(mdata) + LOG.error("Unsupported model data: %s" % util.hexprint(mdata)) raise Exception("Unsupported model")
@@ -128,7 +127,7 @@ def get_radio_by_image(image_file): if os.path.exists(image_file) and icf.is_icf_file(image_file): tempf = tempfile.mktemp() icf_to_image(image_file, tempf) - print "Auto-converted %s -> %s" % (image_file, tempf) + LOG.info("Auto-converted %s -> %s" % (image_file, tempf)) image_file = tempf
if os.path.exists(image_file): diff --git a/chirp/generic_csv.py b/chirp/generic_csv.py index 66a6005..e7c3c93 100644 --- a/chirp/generic_csv.py +++ b/chirp/generic_csv.py @@ -15,9 +15,12 @@
import os import csv +import logging
from chirp import chirp_common, errors, directory
+LOG = logging.getLogger(__name__) +
class OmittedHeaderError(Exception): """Internal exception to signal that a column has been omitted""" @@ -190,9 +193,8 @@ class CSVRadio(chirp_common.FileBackedRadio, chirp_common.IcomDstarSupport): continue
if len(header) > len(line): - print "Line %i has %i columns, expected %i" % (lineno, - len(line), - len(header)) + LOG.error("Line %i has %i columns, expected %i", + lineno, len(line), len(header)) self.errors.append("Column number mismatch on line %i" % lineno) continue @@ -202,7 +204,7 @@ class CSVRadio(chirp_common.FileBackedRadio, chirp_common.IcomDstarSupport): if mem.number is None: raise Exception("Invalid Location field" % lineno) except Exception, e: - print "Line %i: %s" % (lineno, e) + LOG.error("Line %i: %s", lineno, e) self.errors.append("Line %i: %s" % (lineno, e)) continue
@@ -211,7 +213,7 @@ class CSVRadio(chirp_common.FileBackedRadio, chirp_common.IcomDstarSupport): good += 1
if not good: - print self.errors + LOG.error(self.errors) raise errors.InvalidDataError("No channels found")
def save(self, filename=None): diff --git a/chirp/generic_xml.py b/chirp/generic_xml.py index 8f96278..06c5da9 100644 --- a/chirp/generic_xml.py +++ b/chirp/generic_xml.py @@ -15,9 +15,12 @@
import os import libxml2 +import logging
from chirp import chirp_common, errors, xml_ll, platform, directory
+LOG = logging.getLogger(__name__) +
def validate_doc(doc): """Validate the document""" @@ -30,8 +33,8 @@ def validate_doc(doc): ctx = libxml2.schemaNewParserCtxt(path) schema = ctx.schemaParse() except libxml2.parserError, e: - print "Unable to load schema: %s" % e - print "Path: %s" % path + LOG.error("Unable to load schema: %s" % e) + LOG.error("Path: %s" % path) raise errors.RadioError("Unable to load schema")
del ctx @@ -43,16 +46,19 @@ def validate_doc(doc): errs.append("ERROR: %s" % msg)
def _wrn(msg, *_args): - print "WARNING: %s" % msg warnings.append("WARNING: %s" % msg)
validctx = schema.schemaNewValidCtxt() validctx.setValidityErrorHandler(_err, _wrn) err = validctx.schemaValidateDoc(doc) - print os.linesep.join(warnings) + for w in warnings: + LOG.warn(w) if err: - print "---DOC---\n%s\n------" % doc.serialize(format=1) - print os.linesep.join(errs) + for l in ["--- DOC ---", + doc.serialize(format=1).split("\n"), + "-----------", + errs]: + LOG.error(l) raise errors.RadioError("Schema error")
diff --git a/chirp/import_logic.py b/chirp/import_logic.py index 04f81ba..c2ed867 100644 --- a/chirp/import_logic.py +++ b/chirp/import_logic.py @@ -13,8 +13,11 @@ # 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 logging from chirp import chirp_common, errors
+LOG = logging.getLogger(__name__) +
class ImportError(Exception): """An import error""" @@ -255,7 +258,7 @@ def import_bank(dst_radio, src_radio, dst_mem, src_mem): for index in src_indexes: try: bank = dst_banks[index] - print "Adding memory to bank %s" % bank + LOG.debug("Adding memory to bank %s" % bank) dst_bm.add_memory_to_mapping(dst_mem, bank) if isinstance(dst_bm, chirp_common.MappingModelIndexInterface): dst_bm.set_memory_index(dst_mem, bank, diff --git a/chirp/memmap.py b/chirp/memmap.py index 73285bf..af0706c 100644 --- a/chirp/memmap.py +++ b/chirp/memmap.py @@ -24,7 +24,7 @@ class MemoryMap: def __init__(self, data): self._data = list(data)
- def printable(self, start=None, end=None, printit=True): + def printable(self, start=None, end=None): """Return a printable representation of the memory map""" if not start: start = 0 @@ -34,9 +34,6 @@ class MemoryMap:
string = util.hexprint(self._data[start:end])
- if printit: - print string - return string
def get(self, start, length=1): diff --git a/chirp/platform.py b/chirp/platform.py index fc142c8..32285a5 100644 --- a/chirp/platform.py +++ b/chirp/platform.py @@ -17,8 +17,11 @@ import os import sys import glob import re +import logging from subprocess import Popen
+LOG = logging.getLogger(__name__) +
def win32_comports_bruteforce(): import win32file @@ -265,7 +268,7 @@ class UnixPlatform(Platform): # time, however, I'll throw it here if sys.platform == "darwin": if "DISPLAY" not in os.environ: - print "Forcing DISPLAY for MacOS" + LOG.info("Forcing DISPLAY for MacOS") os.environ["DISPLAY"] = ":0"
os.environ["PANGO_RC_FILE"] = "../Resources/etc/pango/pangorc" @@ -282,13 +285,13 @@ class UnixPlatform(Platform): pid2 = os.fork() if pid2 == 0: editor = _unix_editor() - print "calling `%s %s'" % (editor, path) + LOG.debug("calling `%s %s'" % (editor, path)) os.execlp(editor, editor, path) else: sys.exit(0) else: os.waitpid(pid1, 0) - print "Exec child exited" + LOG.debug("Exec child exited")
def open_html_file(self, path): os.system("firefox '%s'" % path) @@ -350,7 +353,7 @@ class Win32Platform(Platform): ports = list(comports()) except Exception, e: if comports != win32_comports_bruteforce: - print "Failed to detect win32 serial ports: %s" % e + LOG.error("Failed to detect win32 serial ports: %s" % e) ports = win32_comports_bruteforce() return natural_sorted([port for port, name, url in ports])
@@ -366,7 +369,7 @@ class Win32Platform(Platform): try: fname, _, _ = win32gui.GetOpenFileNameW(Filter=typestrs) except Exception, e: - print "Failed to get filename: %s" % e + LOG.error("Failed to get filename: %s" % e) return None
return str(fname) @@ -397,7 +400,7 @@ class Win32Platform(Platform): DefExt=def_ext, Filter=typestrs) except Exception, e: - print "Failed to get filename: %s" % e + LOG.error("Failed to get filename: %s" % e) return None
return str(fname) @@ -409,7 +412,7 @@ class Win32Platform(Platform): pidl, _, _ = shell.SHBrowseForFolder() fname = shell.SHGetPathFromIDList(pidl) except Exception, e: - print "Failed to get directory: %s" % e + LOG.error("Failed to get directory: %s" % e) return None
return str(fname) diff --git a/chirp/radioreference.py b/chirp/radioreference.py index e7bae27..d52284e 100644 --- a/chirp/radioreference.py +++ b/chirp/radioreference.py @@ -13,7 +13,11 @@ # 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 logging from chirp import chirp_common, errors + +LOG = logging.getLogger(__name__) + try: from suds.client import Client from suds import WebFault @@ -78,9 +82,9 @@ class RadioReferenceRadio(chirp_common.NetworkSourceRadio): status.max += len(county.agencyList)
for cat in county.cats: - print "Fetching category:", cat.cName + LOG.debug("Fetching category:", cat.cName) for subcat in cat.subcats: - print "\t", subcat.scName + LOG.debug("\t", subcat.scName) result = self._client.service.getSubcatFreqs(subcat.scid, self._auth) self._freqs += result @@ -92,9 +96,9 @@ class RadioReferenceRadio(chirp_common.NetworkSourceRadio): for cat in agency.cats: status.max += len(cat.subcats) for cat in agency.cats: - print "Fetching category:", cat.cName + LOG.debug("Fetching category:", cat.cName) for subcat in cat.subcats: - print "\t", subcat.scName + LOG.debug("\t", subcat.scName) result = self._client.service.getSubcatFreqs(subcat.scid, self._auth) self._freqs += result @@ -146,8 +150,7 @@ class RadioReferenceRadio(chirp_common.NetworkSourceRadio): mem.tmode = "DTCS" mem.dtcs = int(tone) else: - print "Error: unsupported tone" - print freq + LOG.error("Error: unsupported tone: %s" % freq) try: mem.mode = self._get_mode(freq.mode) except KeyError: diff --git a/chirp/settings.py b/chirp/settings.py index 5d8f3ee..a435d1f 100644 --- a/chirp/settings.py +++ b/chirp/settings.py @@ -114,7 +114,6 @@ class RadioSettingValueFloat(RadioSettingValue): if value is None: value = self._current fmt_string = "%%.%if" % self._pre - print fmt_string return fmt_string % value
def set_value(self, value):