configfile: Use Python2's ConfigParser when running on Python2

The backport of Python3's configparser causes issues when there is
unicode characters in the config file.  To avoid introducing new
errors, go back to using the Python2 version of ConfigParser when
running on Python2.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2021-10-09 19:34:08 -04:00
parent 21d5a34d22
commit c56c34fa1c
3 changed files with 8 additions and 6 deletions

View File

@ -3,7 +3,7 @@
# Copyright (C) 2016-2021 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
import os, glob, re, time, logging, configparser, io
import sys, os, glob, re, time, logging, configparser, io
error = configparser.Error
@ -255,9 +255,11 @@ class PrinterConfig:
self._parse_config_buffer(buffer, filename, fileconfig)
visited.remove(path)
def _build_config_wrapper(self, data, filename):
cp = (';', '#')
if sys.version_info.major >= 3:
fileconfig = configparser.RawConfigParser(
strict=False, comment_prefixes=cp, inline_comment_prefixes=cp)
strict=False, inline_comment_prefixes=(';', '#'))
else:
fileconfig = configparser.RawConfigParser()
self._parse_config(data, filename, fileconfig, set())
return ConfigWrapper(self.printer, fileconfig, {}, 'printer')
def _build_config_string(self, config):

View File

@ -98,7 +98,8 @@ def setup_python2_wrappers():
if sys.version_info.major >= 3:
return
# Add module hacks so that common Python3 module imports work in Python2
import Queue, io, StringIO, time
import ConfigParser, Queue, io, StringIO, time
sys.modules["configparser"] = ConfigParser
sys.modules["queue"] = Queue
io.StringIO = StringIO.StringIO
time.process_time = time.clock

View File

@ -7,4 +7,3 @@ pyserial==3.4
greenlet==1.1.2
Jinja2==2.11.3
python-can==3.3.4
configparser==4.0.2