[chirp_devel] [PATCH 05/11] Fix pylint issues in logger.py (#159)
Zachary T Welch
Sun Mar 8 16:54:19 PDT 2015
# HG changeset patch
# User Zachary T Welch <zach at mandolincreekfarm.com>
# Fake Node ID 3c190b762714618ac4489532b6bdae2d760162b2
Fix pylint issues in logger.py (#159)
In addition to style/documentation clean ups, this fixes a call to an
undefined routine (set_log_verbosity) that was renamed (set_log_level).
diff --git a/chirp/logger.py b/chirp/logger.py
index 6e841bc..dc4884a 100644
--- a/chirp/logger.py
+++ b/chirp/logger.py
@@ -25,11 +25,11 @@ import os
import sys
import logging
import argparse
-import platform
-from chirp import CHIRP_VERSION
+from chirp import CHIRP_VERSION, platform
def version_string():
+ """Return a string containing the versions of CHIRP, OS, and Python."""
args = (CHIRP_VERSION,
platform.get_platform().os_version_string(),
sys.version.split()[0])
@@ -37,12 +37,15 @@ def version_string():
class VersionAction(argparse.Action):
+ """Defines a class for printing the version string."""
def __call__(self, parser, namespace, value, option_string=None):
+ """Print the version string"""
print version_string()
sys.exit(1)
def add_version_argument(parser):
+ """Add the --version argument to the given argument parser."""
parser.add_argument("--version", action=VersionAction, nargs=0,
help="Print version and exit")
@@ -56,6 +59,20 @@ log_level_names = {"critical": logging.CRITICAL,
class Logger(object):
+ """Singleton for managing CHIRP logging
+
+ Set CHIRP_DEBUG in the environment for early console debugging.
+ It can be a number or a name; otherwise, the logging level is
+ set to 'debug' in order to maintain backward compatibility.
+
+ Likewise, set CHIRP_LOG in the environment to the name of a log
+ file. CHIRP_LOG_LEVEL controls the logging level.
+
+ If we're on Win32 or MacOS, we don't use the console; instead,
+ we create 'debug.log', redirect all output there, and set the
+ console logging handler level to DEBUG. To test this on Linux,
+ set CHIRP_DEBUG_LOG in the environment.
+ """
log_format = '[%(asctime)s] %(name)s - %(levelname)s: %(message)s'
@@ -66,9 +83,6 @@ class Logger(object):
self.LOG = logging.getLogger(__name__)
- # Set CHIRP_DEBUG in environment for early console debugging.
- # It can be a number or a name; otherwise, level is set to 'debug'
- # in order to maintain backward compatibility.
CHIRP_DEBUG = os.getenv("CHIRP_DEBUG")
self.early_level = logging.WARNING
if CHIRP_DEBUG:
@@ -80,10 +94,6 @@ class Logger(object):
except KeyError:
self.early_level = logging.DEBUG
- # If we're on Win32 or MacOS, we don't use the console; instead,
- # we create 'debug.log', redirect all output there, and set the
- # console logging handler level to DEBUG. To test this on Linux,
- # set CHIRP_DEBUG_LOG in the environment.
console_stream = None
console_format = '%(levelname)s: %(message)s'
if hasattr(sys, "frozen") or not os.isatty(0) \
@@ -102,14 +112,13 @@ class Logger(object):
self.console.setFormatter(logging.Formatter(console_format))
self.logger.addHandler(self.console)
- # Set CHIRP_LOG in environment to the name of log file.
logname = os.getenv("CHIRP_LOG")
self.logfile = None
if logname is not None:
self.create_log_file(logname)
level = os.getenv("CHIRP_LOG_LEVEL")
if level is not None:
- self.set_log_verbosity(level)
+ self.set_log_level(level)
else:
self.set_log_level(logging.DEBUG)
@@ -117,10 +126,11 @@ class Logger(object):
self.LOG.debug(version_string())
def create_log_file(self, name):
+ """Create the log file specified by name."""
if self.logfile is None:
self.logname = name
# always truncate the log file
- with file(name, "w") as fh:
+ with file(name, "w") as _:
pass
self.logfile = logging.FileHandler(name)
format_str = self.log_format
@@ -130,6 +140,7 @@ class Logger(object):
self.logger.error("already logging to " + self.logname)
def set_verbosity(self, level):
+ """Set the logging level of the console"""
self.LOG.debug("verbosity=%d", level)
if level > logging.CRITICAL:
level = logging.CRITICAL
@@ -137,12 +148,14 @@ class Logger(object):
self.console.setLevel(level)
def set_log_level(self, level):
+ """Set the logging level of the log file"""
self.LOG.debug("log level=%d", level)
if level > logging.CRITICAL:
level = logging.CRITICAL
self.logfile.setLevel(level)
def set_log_level_by_name(self, level):
+ """Set the logging level of the log file using a name"""
self.set_log_level(log_level_names[level])
instance = None
@@ -156,6 +169,7 @@ def is_visible(level):
def add_arguments(parser):
+ """Adds logging arguments to the given argument parser."""
parser.add_argument("-q", "--quiet", action="count", default=0,
help="Decrease verbosity")
parser.add_argument("-v", "--verbose", action="count", default=0,
@@ -168,6 +182,14 @@ def add_arguments(parser):
def handle_options(options):
+ """Handles the logging command line options.
+
+ If --verbose or --quiet were given, calculate the new logging level
+ for the console.
+
+ If --log-file was given, create the log file. If --log-level
+ was given, adjust the log file level.
+ """
logger = Logger.instance
if options.verbose or options.quiet:
diff --git a/tools/cpep8.lintful b/tools/cpep8.lintful
index c3a2ebe..02ac62e 100644
--- a/tools/cpep8.lintful
+++ b/tools/cpep8.lintful
@@ -93,7 +93,6 @@
./chirp/elib_intl.py
./chirp/errors.py
./chirp/import_logic.py
-./chirp/logger.py
./chirp/memmap.py
./chirp/platform.py
./chirp/pyPEG.py
More information about the chirp_devel
mailing list