commit: 7a8392286ce3c5b2d33abe2de98922997307c182 Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Sun May 22 07:48:10 2016 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Tue May 24 06:27:58 2016 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=7a839228
portage.util.configparser: Provide common code to handle cp imports Provide a common code unit to handle portable *ConfigParser imports for all supported Python versions. Reviewed-by: Zac Medico <zmedico <AT> gentoo.org> pym/portage/_sets/__init__.py | 10 ++-------- pym/portage/repository/config.py | 9 +-------- pym/portage/util/_desktop_entry.py | 7 ++----- pym/portage/util/configparser.py | 22 ++++++++++++++++++++++ 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/pym/portage/_sets/__init__.py b/pym/portage/_sets/__init__.py index 3203521..ec42f7c 100644 --- a/pym/portage/_sets/__init__.py +++ b/pym/portage/_sets/__init__.py @@ -9,14 +9,6 @@ __all__ = ["SETPREFIX", "get_boolean", "SetConfigError", import io import logging import sys -try: - from configparser import NoOptionError, ParsingError - if sys.hexversion >= 0x3020000: - from configparser import ConfigParser as SafeConfigParser - else: - from configparser import SafeConfigParser -except ImportError: - from ConfigParser import SafeConfigParser, NoOptionError, ParsingError import portage from portage import os from portage import load_mod @@ -29,6 +21,8 @@ from portage.const import _ENABLE_SET_CONFIG from portage.exception import PackageSetNotFound from portage.localization import _ from portage.util import writemsg_level +from portage.util.configparser import (SafeConfigParser, + NoOptionError, ParsingError) SETPREFIX = "@" diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py index 00319fe..9039886 100644 --- a/pym/portage/repository/config.py +++ b/pym/portage/repository/config.py @@ -9,14 +9,6 @@ import warnings import sys import re -try: - from configparser import Error as ConfigParserError - if sys.hexversion >= 0x3020000: - from configparser import ConfigParser as SafeConfigParser - else: - from configparser import SafeConfigParser -except ImportError: - from ConfigParser import SafeConfigParser, Error as ConfigParserError import portage from portage import eclass_cache, os from portage.const import (MANIFEST2_HASH_FUNCTIONS, MANIFEST2_REQUIRED_HASH, @@ -25,6 +17,7 @@ from portage.eapi import eapi_allows_directories_on_profile_level_and_repository from portage.env.loaders import KeyValuePairFileLoader from portage.util import (normalize_path, read_corresponding_eapi_file, shlex_split, stack_lists, writemsg, writemsg_level, _recursive_file_list) +from portage.util.configparser import SafeConfigParser, ConfigParserError from portage.util._path import isdir_raise_eaccess from portage.util.path import first_existing from portage.localization import _ diff --git a/pym/portage/util/_desktop_entry.py b/pym/portage/util/_desktop_entry.py index 0b49547..95a015e 100644 --- a/pym/portage/util/_desktop_entry.py +++ b/pym/portage/util/_desktop_entry.py @@ -6,14 +6,11 @@ import re import subprocess import sys -try: - from configparser import Error as ConfigParserError, RawConfigParser -except ImportError: - from ConfigParser import Error as ConfigParserError, RawConfigParser - import portage from portage import _encodings, _unicode_encode, _unicode_decode from portage.util import writemsg +from portage.util.configparser import ConfigParserError, RawConfigParser + def parse_desktop_entry(path): """ diff --git a/pym/portage/util/configparser.py b/pym/portage/util/configparser.py new file mode 100644 index 0000000..d305052 --- /dev/null +++ b/pym/portage/util/configparser.py @@ -0,0 +1,22 @@ +# Copyright 2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +__all__ = ['ConfigParserError', 'NoOptionError', 'ParsingError', + 'RawConfigParser', 'SafeConfigParser'] + +# the following scary compatibility thing provides two classes: +# - SafeConfigParser that provides safe interpolation for values, +# - RawConfigParser that provides no interpolation for values. + +import sys + +try: + from configparser import (Error as ConfigParserError, + NoOptionError, ParsingError, RawConfigParser) + if sys.hexversion >= 0x3020000: + from configparser import ConfigParser as SafeConfigParser + else: + from configparser import SafeConfigParser +except ImportError: + from ConfigParser import (Error as ConfigParserError, + NoOptionError, ParsingError, RawConfigParser, SafeConfigParser)