From b0f3a0737d3fd23ee51f9ea4ad6d454faa2256d3 Mon Sep 17 00:00:00 2001 From: Nico Tonnhofer Date: Thu, 10 Jan 2019 22:48:48 +0100 Subject: [PATCH] python3: use configparser also for python 2.7 Python 2.7 needs to install configparser. e.g. via pip install configparser. --- configtool/settings.py | 79 +++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/configtool/settings.py b/configtool/settings.py index 5025b4c..8b9b803 100644 --- a/configtool/settings.py +++ b/configtool/settings.py @@ -1,6 +1,20 @@ from __future__ import print_function +from six import iteritems + +import time +import sys + +try: + import configparser +except ImportError: + print( + "ImportError: No module named configparser\n\n" + "configparser is not installed. This program requires configparser to run.\n" + "Your package manager may help you." + ) + time.sleep(10) + sys.exit(-1) -import ConfigParser import os from configtool.data import BSIZESMALL, offsetTcLabel @@ -33,7 +47,7 @@ class Settings: # Runtime settings self.verbose = 0 - self.cfg = ConfigParser.ConfigParser() + self.cfg = configparser.ConfigParser() self.cfg.optionxform = str self.loaded = self.readConfig(ini) @@ -52,36 +66,28 @@ class Settings: return False if self.cfg.has_section(self.section): - for opt, value in self.cfg.items(self.section): - value = value.replace("\n", " ") - if opt == "arduinodir": - self.arduinodir = value - elif opt == "cflags": - self.cflags = value - elif opt == "ldflags": - self.ldflags = value - elif opt == "programmer": - self.programmer = value - elif opt == "port": - self.port = value - elif opt == "objcopyflags": - self.objcopyflags = value - elif opt == "programflags": - self.programflags = value - elif opt == "t0": - self.t0 = value - elif opt == "r1": - self.r1 = value - elif opt == "numtemps": - self.numTemps = value - elif opt == "maxadc": - self.maxAdc = value - elif opt == "minadc": - self.minAdc = value - elif opt == "uploadspeed": - self.uploadspeed = value - else: - print("Unknown %s option: %s - ignoring." % (self.section, opt)) + cfg = self.cfg[self.section] + values = self.getValues() + + def cfg_get(key): + val = cfg.get(key, values[key]) + val = val.replace("\n", " ") + return val + + self.arduinodir = cfg_get("arduinodir") + self.cflags = cfg_get("cflags") + self.ldflags = cfg_get("ldflags") + self.objcopyflags = cfg_get("objcopyflags") + self.programflags = cfg_get("programflags") + self.programmer = cfg_get("programmer") + self.port = cfg_get("port") + self.t0 = cfg_get("t0") + self.r1 = cfg_get("r1") + self.numTemps = cfg_get("numtemps") + self.maxAdc = cfg_get("maxadc") + self.minAdc = cfg_get("minadc") + self.uploadspeed = cfg_get("uploadspeed") + else: print("Missing %s section - assuming defaults." % self.section) return False @@ -94,6 +100,7 @@ class Settings: "cflags": str(self.cflags), "ldflags": str(self.ldflags), "objcopyflags": str(self.objcopyflags), + "programflags": str(self.programflags), "programmer": str(self.programmer), "port": str(self.port), "t0": str(self.t0), @@ -111,15 +118,15 @@ class Settings: self.section = "configtool" try: self.cfg.add_section(self.section) - except ConfigParser.DuplicateSectionError: + except configparser.DuplicateSectionError: pass values = self.getValues() - for k in values.keys(): - self.cfg.set(self.section, k, values[k]) + for k, v in iteritems(values): + self.cfg[self.section][k] = v.replace("%", "%%") try: - cfp = open(inifile, "wb") + cfp = open(inifile, "w") except: print("Unable to open settings file %s for writing." % inifile) return False