From 50123ec4d8c85335d8a56de071ec839f17aadc61 Mon Sep 17 00:00:00 2001 From: Satoru SATOH Date: Sat, 14 Mar 2015 19:32:25 +0900 Subject: [PATCH] reorder imports to rules in PEP8 and remove alises as much as possible --- anyconfig/api.py | 39 ++++----- anyconfig/backend/backends.py | 44 +++++----- anyconfig/backend/base.py | 17 ++-- anyconfig/backend/ini_.py | 7 +- anyconfig/backend/json_.py | 6 +- anyconfig/backend/tests/backends.py | 30 ++++--- anyconfig/backend/tests/base.py | 19 ++-- anyconfig/backend/tests/json_.py | 36 ++++---- anyconfig/backend/tests/yaml_.py | 60 +++++++------ anyconfig/backend/xml_.py | 7 +- anyconfig/backend/yaml_.py | 3 +- anyconfig/cli.py | 9 +- anyconfig/globals.py | 5 +- anyconfig/mergeabledict.py | 25 +++--- anyconfig/template.py | 1 - anyconfig/tests/api.py | 130 ++++++++++++++-------------- anyconfig/tests/cli.py | 14 +-- anyconfig/tests/common.py | 2 +- anyconfig/tests/mergeabledict.py | 63 +++++++------- anyconfig/tests/parser.py | 4 +- anyconfig/tests/template.py | 10 +-- anyconfig/tests/utils.py | 8 +- anyconfig/utils.py | 4 +- 23 files changed, 277 insertions(+), 266 deletions(-) diff --git a/anyconfig/api.py b/anyconfig/api.py index e712d77d..24025971 100644 --- a/anyconfig/api.py +++ b/anyconfig/api.py @@ -4,16 +4,14 @@ # """Public APIs of anyconfig module. """ - import logging -import anyconfig.globals as G -import anyconfig.mergeabledict as M -import anyconfig.backend.backends as Backends -import anyconfig.backend.json_ as BJ -import anyconfig.parser as P -import anyconfig.template as AT -import anyconfig.utils as U +import anyconfig.backend.backends +import anyconfig.backend.json_ +import anyconfig.mergeabledict +import anyconfig.parser +import anyconfig.template +import anyconfig.utils # pylint: disable=W0611 # Import some global constants will be re-exported: @@ -25,10 +23,10 @@ # pylint: disable=C0103 # Re-export: -list_types = Backends.list_types # flake8: noqa +list_types = anyconfig.backend.backends.list_types # flake8: noqa # aliases: -container = M.MergeableDict +container = anyconfig.mergeabledict.MergeableDict # pylint: enable=C0103 logger = logging.getLogger(__name__) @@ -48,12 +46,12 @@ def find_loader(config_path, forced_type=None): :return: ConfigParser-inherited class object """ if forced_type is not None: - cparser = Backends.find_by_type(forced_type) + cparser = anyconfig.backend.backends.find_by_type(forced_type) if not cparser: logger.error("No parser found for given type: %s", forced_type) return None else: - cparser = Backends.find_by_file(config_path) + cparser = anyconfig.backend.backends.find_by_file(config_path) if not cparser: logger.error("No parser found for given file: %s", config_path) return None @@ -80,7 +78,7 @@ def single_load(config_path, forced_type=None, ignore_missing=False, anyconfig.mergeabledict.MergeableDict by default) supports merge operations. """ - config_path = U.ensure_expandusr(config_path) + config_path = anyconfig.utils.ensure_expandusr(config_path) cparser = find_loader(config_path, forced_type) if cparser is None: @@ -90,7 +88,7 @@ def single_load(config_path, forced_type=None, ignore_missing=False, if template: try: logger.debug("Compiling: %s", config_path) - config_content = AT.render(config_path, context) + config_content = anyconfig.template.render(config_path, context) return cparser.loads(config_content, ignore_missing=ignore_missing, **kwargs) except: @@ -133,7 +131,7 @@ def multi_load(paths, forced_type=None, merge=MS_DICTS, marker='*', assert merge in MERGE_STRATEGIES, "Invalid merge strategy: " + merge if marker in paths: - paths = U.sglob(paths) + paths = anyconfig.utils.sglob(paths) config = container.create(context) if context else container() for path in paths: @@ -171,7 +169,7 @@ def load(path_specs, forced_type=None, merge=MS_DICTS, marker='*', anyconfig.mergeabledict.MergeableDict by default) supports merge operations. """ - if marker in path_specs or U.is_iterable(path_specs): + if marker in path_specs or anyconfig.utils.is_iterable(path_specs): return multi_load(path_specs, forced_type, merge, marker, ignore_missing, template, context, **kwargs) else: @@ -195,16 +193,17 @@ def loads(config_content, forced_type=None, template=True, context={}, operations. """ if forced_type is None: - return P.parse(config_content) + return anyconfig.parser.parse(config_content) cparser = find_loader(None, forced_type) if cparser is None: - return P.parse(config_content) + return anyconfig.parser.parse(config_content) if template: try: logger.debug("Compiling") - config_content = AT.render_s(config_content, context) + config_content = anyconfig.template.render_s(config_content, + context) except: logger.warn("Failed to compile and fallback to no template " "mode: '%s'", config_content[:50] + '...') @@ -225,7 +224,7 @@ def _find_dumper(config_path, forced_type=None): if cparser is None or not getattr(cparser, "dump", False): logger.warn("Dump method not implemented. Fallback to " "JsonConfigParser") - cparser = BJ.JsonConfigParser() + cparser = anyconfig.backend.json_.JsonConfigParser() return cparser diff --git a/anyconfig/backend/backends.py b/anyconfig/backend/backends.py index bb96b252..a1b000da 100644 --- a/anyconfig/backend/backends.py +++ b/anyconfig/backend/backends.py @@ -1,23 +1,23 @@ # -# Copyright (C) 2011 - 2013 Satoru SATOH +# Copyright (C) 2011 - 2015 Satoru SATOH # License: MIT # -from anyconfig.compat import cmp -# pylint: disable=W0622 -from itertools import groupby -from operator import methodcaller - -import anyconfig.backend.ini_ as BINI -import anyconfig.backend.json_ as BJSON -import anyconfig.backend.xml_ as BXML -import anyconfig.backend.yaml_ as BYAML -import anyconfig.utils as U +import itertools +import operator import pkg_resources +import anyconfig.backend.ini_ +import anyconfig.backend.json_ +import anyconfig.backend.xml_ +import anyconfig.backend.yaml_ +import anyconfig.compat +import anyconfig.utils -_CPs = [p for p in [BINI.IniConfigParser, BJSON.JsonConfigParser, - BYAML.YamlConfigParser, BXML.XmlConfigParser, - ] if p.supports()] + +_CPs = [p for p in [anyconfig.backend.ini_.IniConfigParser, + anyconfig.backend.json_.JsonConfigParser, + anyconfig.backend.xml_.XmlConfigParser, + anyconfig.backend.yaml_.YamlConfigParser] if p.supports()] for e in pkg_resources.iter_entry_points("anyconfig_backends"): try: @@ -29,7 +29,7 @@ def cmp_cps(lhs, rhs): """Compare config parsers by these priorities. """ - return cmp(lhs.priority(), rhs.priority()) + return anyconfig.compat.cmp(lhs.priority(), rhs.priority()) def fst(tpl): @@ -49,7 +49,7 @@ def snd(tpl): def groupby_key(xs, kf): - return groupby(sorted(xs, key=kf), key=kf) + return itertools.groupby(sorted(xs, key=kf), key=kf) def uniq(iterable): @@ -69,19 +69,21 @@ def list_parsers_by_type(cps=_CPs): """ :return: List (generator) of (config_type, [config_parser]) """ - return ((t, sorted(p, key=methodcaller("priority"))) for t, p in - groupby_key(cps, methodcaller("type"))) + return ((t, sorted(p, key=operator.methodcaller("priority"))) for t, p + in groupby_key(cps, operator.methodcaller("type"))) def _list_xppairs(xps): - return sorted((snd(xp) for xp in xps), key=methodcaller("priority")) + return sorted((snd(xp) for xp in xps), + key=operator.methodcaller("priority")) def list_parsers_by_extension(cps=_CPs): """ :return: List (generator) of (config_ext, [config_parser]) """ - cps_by_ext = U.concat(([(x, p) for x in p.extensions()] for p in cps)) + cps_by_ext = anyconfig.utils.concat(([(x, p) for x in p.extensions()] for p + in cps)) return ((x, _list_xppairs(xps)) for x, xps in groupby_key(cps_by_ext, fst)) @@ -92,7 +94,7 @@ def find_by_file(config_file, cps=_CPs): :param config_file: Config file path """ - ext = U.get_file_extension(config_file) + ext = anyconfig.utils.get_file_extension(config_file) for x, ps in list_parsers_by_extension(cps): if x == ext: return ps[-1] diff --git a/anyconfig/backend/base.py b/anyconfig/backend/base.py index 11a0f539..0e1f6315 100644 --- a/anyconfig/backend/base.py +++ b/anyconfig/backend/base.py @@ -1,15 +1,13 @@ # -# Copyright (C) 2012, 2013 Satoru SATOH +# Copyright (C) 2012 - 2015 Satoru SATOH # License: MIT # - import logging import os -from anyconfig.compat import StringIO - -import anyconfig.mergeabledict as D -import anyconfig.utils as U +import anyconfig.compat +import anyconfig.mergeabledict +import anyconfig.utils SUPPORTED = False @@ -54,7 +52,7 @@ class ConfigParser(object): _type = None _priority = 0 # 0 (lowest priority) .. 99 (highest priority) _extensions = [] - _container = D.MergeableDict + _container = anyconfig.mergeabledict.MergeableDict _supported = False _load_opts = [] @@ -78,7 +76,8 @@ def supports(cls, config_file=None): return cls._supported else: return cls._supported and \ - U.get_file_extension(config_file) in cls._extensions + anyconfig.utils.get_file_extension(config_file) \ + in cls._extensions @classmethod def container(cls): @@ -110,7 +109,7 @@ def loads(cls, config_content, **kwargs): :return: cls.container() object holding config parameters """ - config_fp = StringIO(config_content) + config_fp = anyconfig.compat.StringIO(config_content) create = cls.container().create return create(cls.load_impl(config_fp, **mk_opt_args(cls._load_opts, kwargs))) diff --git a/anyconfig/backend/ini_.py b/anyconfig/backend/ini_.py index c1aafbca..997e52b2 100644 --- a/anyconfig/backend/ini_.py +++ b/anyconfig/backend/ini_.py @@ -1,16 +1,15 @@ # -# Copyright (C) 2011 - 2013 Satoru SATOH +# Copyright (C) 2011 - 2015 Satoru SATOH # License: MIT # - import logging import sys -from anyconfig.compat import configparser, iteritems - import anyconfig.backend.base as Base import anyconfig.parser as P +from anyconfig.compat import configparser, iteritems + logger = logging.getLogger(__name__) SUPPORTED = True # It should be available w/ python dist always. diff --git a/anyconfig/backend/json_.py b/anyconfig/backend/json_.py index a3111e3a..6d84eeb9 100644 --- a/anyconfig/backend/json_.py +++ b/anyconfig/backend/json_.py @@ -1,11 +1,11 @@ # -# Copyright (C) 2011 - 2014 Satoru SATOH +# Copyright (C) 2011 - 2015 Satoru SATOH # License: MIT # # Ref. python -c "import json; help(json)" # import anyconfig.backend.base as Base -import anyconfig.compat as C +import anyconfig.compat SUPPORTED = True @@ -30,7 +30,7 @@ def dict_to_container(json_obj_dict): # It seems that 'encoding' argument is not allowed in json.load[s] and # json.dump[s] in JSON module in python 3.x. -if not C.IS_PYTHON_3: +if not anyconfig.compat.IS_PYTHON_3: _LOAD_OPTS.append("encoding") _DUMP_OPTS.append("encoding") diff --git a/anyconfig/backend/tests/backends.py b/anyconfig/backend/tests/backends.py index 5ed52494..0d13f7f5 100644 --- a/anyconfig/backend/tests/backends.py +++ b/anyconfig/backend/tests/backends.py @@ -1,11 +1,15 @@ # -# Copyright (C) 2012 - 2014 Satoru SATOH +# Copyright (C) 2012 - 2015 Satoru SATOH # License: MIT # -import anyconfig.backend.backends as T import random import unittest +import anyconfig.backend.backends as TT +import anyconfig.backend.ini_ as BINI +import anyconfig.backend.json_ as BJSON +import anyconfig.backend.yaml_ as BYAML + class Test_00_pure_functions(unittest.TestCase): @@ -15,14 +19,14 @@ def test_10_find_by_file(self): jsn_cfs = ["/a/b/c.jsn", "/a/b/c.json", "/a/b/c.js"] yml_cfs = ["/a/b/c.yml", "/a/b/c.yaml"] - self.assertTrue(ini_cf, T.BINI.IniConfigParser) - self.assertTrue(T.find_by_file(unknown_cf) is None) + self.assertTrue(ini_cf, BINI.IniConfigParser) + self.assertTrue(TT.find_by_file(unknown_cf) is None) for f in jsn_cfs: - self.assertTrue(f, T.BJSON.JsonConfigParser) + self.assertTrue(f, BJSON.JsonConfigParser) for f in yml_cfs: - self.assertTrue(f, T.BYAML.YamlConfigParser) + self.assertTrue(f, BYAML.YamlConfigParser) def test_20_find_by_type(self): ini_t = "ini" @@ -30,21 +34,21 @@ def test_20_find_by_type(self): yml_t = "yaml" unknown_t = "unknown_type" - self.assertTrue(ini_t, T.BINI.IniConfigParser) - self.assertTrue(jsn_t, T.BJSON.JsonConfigParser) - self.assertTrue(yml_t, T.BYAML.YamlConfigParser) - self.assertTrue(T.find_by_type(unknown_t) is None) + self.assertTrue(ini_t, BINI.IniConfigParser) + self.assertTrue(jsn_t, BJSON.JsonConfigParser) + self.assertTrue(yml_t, BYAML.YamlConfigParser) + self.assertTrue(TT.find_by_type(unknown_t) is None) def test_30_list_types(self): - types = T.list_types() + types = TT.list_types() self.assertTrue(isinstance(types, list)) self.assertTrue(bool(list)) # ensure it's not empty. def test_40_cmp_cps(self): - cps = T._CPs + cps = TT._CPs if cps: - x = T.cmp_cps(random.choice(cps), random.choice(cps)) + x = TT.cmp_cps(random.choice(cps), random.choice(cps)) self.assertTrue(x in (-1, 0, 1)) # vim:sw=4:ts=4:et: diff --git a/anyconfig/backend/tests/base.py b/anyconfig/backend/tests/base.py index 12ef5748..65246308 100644 --- a/anyconfig/backend/tests/base.py +++ b/anyconfig/backend/tests/base.py @@ -1,20 +1,23 @@ # -# Copyright (C) 2012 - 2014 Satoru SATOH +# Copyright (C) 2012 - 2015 Satoru SATOH # License: MIT # -import anyconfig.tests.common as C -import anyconfig.backend.base as TT # stands for test target import os import os.path import unittest +import anyconfig.backend.base as TT # stands for test target +import anyconfig.mergeabledict +import anyconfig.tests.common + class Test_00_ConfigParser(unittest.TestCase): def test_10_set_container(self): - TT.ConfigParser.set_container(dict) - self.assertEquals(TT.ConfigParser.container(), dict) - TT.ConfigParser.set_container(TT.D.MergeableDict) + cp = TT.ConfigParser + cp.set_container(dict) + self.assertEquals(cp.container(), dict) + cp.set_container(anyconfig.mergeabledict.MergeableDict) def test_10_type(self): self.assertEquals(TT.ConfigParser.type(), TT.ConfigParser._type) @@ -53,10 +56,10 @@ def test_50_dumps_impl(self): class Test_10_effectful_functions(unittest.TestCase): def setUp(self): - self.workdir = C.setup_workdir() + self.workdir = anyconfig.tests.common.setup_workdir() def tearDown(self): - C.cleanup_workdir(self.workdir) + anyconfig.tests.common.cleanup_workdir(self.workdir) def test_10_mk_dump_dir_if_not_exist(self): dumpdir = os.path.join(self.workdir, "dumpdir") diff --git a/anyconfig/backend/tests/json_.py b/anyconfig/backend/tests/json_.py index 551337b1..7cf3571c 100644 --- a/anyconfig/backend/tests/json_.py +++ b/anyconfig/backend/tests/json_.py @@ -1,13 +1,13 @@ # -# Copyright (C) 2012, 2013 Satoru SATOH +# Copyright (C) 2012 - 2015 Satoru SATOH # License: MIT # -import anyconfig.backend.json_ as T - import os import tempfile import unittest +import anyconfig.backend.json_ as TT + CONF_0 = """{ "a": 0, @@ -31,53 +31,53 @@ def tearDown(self): os.remove(self.config_path) def test_00_supports(self): - self.assertFalse(T.JsonConfigParser.supports("/a/b/c/d.ini")) - self.assertTrue(T.JsonConfigParser.supports("/a/b/c/d.json")) + self.assertFalse(TT.JsonConfigParser.supports("/a/b/c/d.ini")) + self.assertTrue(TT.JsonConfigParser.supports("/a/b/c/d.json")) def test_10_loads(self): - c = T.JsonConfigParser.loads(CONF_0) + c = TT.JsonConfigParser.loads(CONF_0) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c['sect0']['c'], ['x', 'y', 'z']) def test_20_load(self): - c = T.JsonConfigParser.load(self.config_path) + c = TT.JsonConfigParser.load(self.config_path) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c['sect0']['c'], ['x', 'y', 'z']) def test_20_load__optional_kwargs(self): - c = T.JsonConfigParser.load(self.config_path, parse_int=None) + c = TT.JsonConfigParser.load(self.config_path, parse_int=None) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c['sect0']['c'], ['x', 'y', 'z']) def test_30_dumps(self): - c = T.JsonConfigParser.loads(CONF_0) - s = T.JsonConfigParser.dumps(c) - c = T.JsonConfigParser.loads(s) + c = TT.JsonConfigParser.loads(CONF_0) + s = TT.JsonConfigParser.dumps(c) + c = TT.JsonConfigParser.loads(s) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c['sect0']['c'], ['x', 'y', 'z']) def test_40_dump(self): - c = T.JsonConfigParser.loads(CONF_0) - T.JsonConfigParser.dump(c, self.config_path) - c = T.JsonConfigParser.load(self.config_path) + c = TT.JsonConfigParser.loads(CONF_0) + TT.JsonConfigParser.dump(c, self.config_path) + c = TT.JsonConfigParser.load(self.config_path) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c['sect0']['c'], ['x', 'y', 'z']) def test_50_dump_w_backend_specific_options(self): - c = T.JsonConfigParser.loads(CONF_0) - T.JsonConfigParser.dump(c, self.config_path, parse_int=None, - indent=3) - c = T.JsonConfigParser.load(self.config_path) + c = TT.JsonConfigParser.loads(CONF_0) + TT.JsonConfigParser.dump(c, self.config_path, parse_int=None, + indent=3) + c = TT.JsonConfigParser.load(self.config_path) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) diff --git a/anyconfig/backend/tests/yaml_.py b/anyconfig/backend/tests/yaml_.py index 4e0201e8..bf64a231 100644 --- a/anyconfig/backend/tests/yaml_.py +++ b/anyconfig/backend/tests/yaml_.py @@ -1,15 +1,13 @@ # -# Copyright (C) 2012 Satoru SATOH +# Copyright (C) 2012 - 2015 Satoru SATOH # License: MIT # -import anyconfig.backend.yaml_ as T -# import anyconfig.tests.common as C - import os -# import sys import tempfile import unittest +import anyconfig.backend.yaml_ as TT + CONF_0 = """ a: 0 @@ -19,7 +17,7 @@ c: ["x", "y", "z"] """ -if T.SUPPORTED: +if TT.SUPPORTED: import yaml class Test_YamlConfigParser(unittest.TestCase): @@ -33,87 +31,87 @@ def tearDown(self): os.remove(self.config_path) def test_00_supports(self): - self.assertFalse(T.YamlConfigParser.supports("/a/b/c/d.ini")) - self.assertFalse(T.YamlConfigParser.supports("/a/b/c/d.json")) - self.assertTrue(T.YamlConfigParser.supports("/a/b/c/d.yml")) + self.assertFalse(TT.YamlConfigParser.supports("/a/b/c/d.ini")) + self.assertFalse(TT.YamlConfigParser.supports("/a/b/c/d.json")) + self.assertTrue(TT.YamlConfigParser.supports("/a/b/c/d.yml")) def test_10_loads(self): - c = T.YamlConfigParser.loads(CONF_0) + c = TT.YamlConfigParser.loads(CONF_0) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_12_loads__safe(self): - c = T.YamlConfigParser.loads(CONF_0, safe=True) + c = TT.YamlConfigParser.loads(CONF_0, safe=True) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_20_load(self): - c = T.YamlConfigParser.load(self.config_path) + c = TT.YamlConfigParser.load(self.config_path) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_22_load__safe(self): - c = T.YamlConfigParser.load(self.config_path, safe=True) + c = TT.YamlConfigParser.load(self.config_path, safe=True) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_20_load__w_options(self): - c = T.YamlConfigParser.load(self.config_path, - Loader=yaml.loader.Loader) + c = TT.YamlConfigParser.load(self.config_path, + Loader=yaml.loader.Loader) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_30_dumps(self): - c = T.YamlConfigParser.loads(CONF_0) - s = T.YamlConfigParser.dumps(c) - c = T.YamlConfigParser.loads(s) + c = TT.YamlConfigParser.loads(CONF_0) + s = TT.YamlConfigParser.dumps(c) + c = TT.YamlConfigParser.loads(s) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_32_dumps__safe(self): - c = T.YamlConfigParser.loads(CONF_0) - s = T.YamlConfigParser.dumps(c, safe=True) - c = T.YamlConfigParser.loads(s) + c = TT.YamlConfigParser.loads(CONF_0) + s = TT.YamlConfigParser.dumps(c, safe=True) + c = TT.YamlConfigParser.loads(s) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_40_dump(self): - c = T.YamlConfigParser.loads(CONF_0) - T.YamlConfigParser.dump(c, self.config_path) - c = T.YamlConfigParser.load(self.config_path) + c = TT.YamlConfigParser.loads(CONF_0) + TT.YamlConfigParser.dump(c, self.config_path) + c = TT.YamlConfigParser.load(self.config_path) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_42_dump__safe(self): - c = T.YamlConfigParser.loads(CONF_0) - T.YamlConfigParser.dump(c, self.config_path, safe=True) - c = T.YamlConfigParser.load(self.config_path) + c = TT.YamlConfigParser.loads(CONF_0) + TT.YamlConfigParser.dump(c, self.config_path, safe=True) + c = TT.YamlConfigParser.load(self.config_path) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) self.assertEquals(c["sect0"]['c'], ['x', 'y', 'z']) def test_40_dump__w_options(self): - c = T.YamlConfigParser.loads(CONF_0) - T.YamlConfigParser.dump(c, self.config_path, - Dumper=yaml.dumper.Dumper) - c = T.YamlConfigParser.load(self.config_path) + c = TT.YamlConfigParser.loads(CONF_0) + TT.YamlConfigParser.dump(c, self.config_path, + Dumper=yaml.dumper.Dumper) + c = TT.YamlConfigParser.load(self.config_path) self.assertEquals(c['a'], 0, str(c)) self.assertEquals(c['b'], "bbb", c) diff --git a/anyconfig/backend/xml_.py b/anyconfig/backend/xml_.py index ddcf61bd..0020e8b3 100644 --- a/anyconfig/backend/xml_.py +++ b/anyconfig/backend/xml_.py @@ -1,5 +1,5 @@ # -# Copyright (C) 2011 - 2014 Satoru SATOH +# Copyright (C) 2011 - 2015 Satoru SATOH # License: MIT # # pylint: disable=R0921 @@ -7,7 +7,7 @@ import logging import anyconfig.backend.base as Base -import anyconfig.compat as AC +import anyconfig.compat logger = logging.getLogger(__name__) @@ -66,7 +66,8 @@ def etree_to_container(root, container): tree[root.tag] = container() if root.attrib: - tree[root.tag]["attrs"] = container(AC.iteritems(root.attrib)) + tree[root.tag]["attrs"] = \ + container(anyconfig.compat.iteritems(root.attrib)) if root.text and root.text.strip(): tree[root.tag]["text"] = root.text.strip() diff --git a/anyconfig/backend/yaml_.py b/anyconfig/backend/yaml_.py index b387e28f..b6dc5ee1 100644 --- a/anyconfig/backend/yaml_.py +++ b/anyconfig/backend/yaml_.py @@ -1,8 +1,7 @@ # -# Copyright (C) 2011 - 2013 Satoru SATOH +# Copyright (C) 2011 - 2015 Satoru SATOH # License: MIT # - import logging import anyconfig.backend.base as Base diff --git a/anyconfig/cli.py b/anyconfig/cli.py index 13b9511e..c4fe9295 100644 --- a/anyconfig/cli.py +++ b/anyconfig/cli.py @@ -3,8 +3,8 @@ # License: MIT # import anyconfig.api as A -import anyconfig.compat as C -import anyconfig.globals as G +import anyconfig.compat +import anyconfig.globals import codecs import locale @@ -15,7 +15,7 @@ _ENCODING = locale.getdefaultlocale()[1] -if C.IS_PYTHON_3: +if anyconfig.compat.IS_PYTHON_3: import io _ENCODING = _ENCODING.lower() @@ -92,7 +92,8 @@ def option_parser(defaults=None, usage=USAGE): "example, '--set a.b.c=1' to a config {'a': {'b': {'c': 0, " "'d': 1}}} gives {'a': {'b': {'c': 1, 'd': 1}}}.") - parser = optparse.OptionParser(usage, version="%%prog %s" % G.VERSION) + parser = optparse.OptionParser(usage, version="%%prog %s" % + anyconfig.globals.VERSION) parser.set_defaults(**defaults) parser.add_option("-L", "--list", help="List supported config types", diff --git a/anyconfig/globals.py b/anyconfig/globals.py index 4d29db07..f2e10d72 100644 --- a/anyconfig/globals.py +++ b/anyconfig/globals.py @@ -1,12 +1,9 @@ # -# Copyright (C) 2013, 2014 Satoru SATOH +# Copyright (C) 2013 - 2015 Satoru SATOH # License: MIT # """anyconfig globals. """ -import logging -import os - AUTHOR = 'Satoru SATOH ' VERSION = "0.0.5" diff --git a/anyconfig/mergeabledict.py b/anyconfig/mergeabledict.py index 21bec52c..2f911a45 100644 --- a/anyconfig/mergeabledict.py +++ b/anyconfig/mergeabledict.py @@ -1,5 +1,5 @@ # -# Copyright (C) 2011 - 2014 Red Hat, Inc. +# Copyright (C) 2011 - 2015 Red Hat, Inc. # Copyright (C) 2011 - 2013 Satoru SATOH # License: MIT # @@ -7,14 +7,16 @@ """ from __future__ import absolute_import from .compat import iteritems -from . import utils as U -from . import parser as P +from .parser import PATH_SEPS import collections import copy import functools import operator +import anyconfig.parser +import anyconfig.utils + # TODO: Keep items' order: # from collections import OrderedDict as dict @@ -27,7 +29,7 @@ MERGE_STRATEGIES = (MS_REPLACE, MS_NO_REPLACE, MS_DICTS, MS_DICTS_AND_LISTS) -def get(dic, path, seps=P.PATH_SEPS): +def get(dic, path, seps=PATH_SEPS): """ getter for nested dicts. @@ -50,14 +52,15 @@ def get(dic, path, seps=P.PATH_SEPS): True """ try: - return (functools.reduce(operator.getitem, P.parse_path(path, seps), + return (functools.reduce(operator.getitem, + anyconfig.parser.parse_path(path, seps), dic), '') except (TypeError, KeyError) as e: return (None, str(e)) -def _mk_nested_dic(path, val, seps=P.PATH_SEPS): +def _mk_nested_dic(path, val, seps=PATH_SEPS): """ Make a nested dict iteratively. @@ -71,13 +74,13 @@ def _mk_nested_dic(path, val, seps=P.PATH_SEPS): {'a': {'b': {'c': 1}}} """ ret = None - for key in reversed(P.parse_path(path, seps)): + for key in reversed(anyconfig.parser.parse_path(path, seps)): ret = {key: val if ret is None else ret.copy()} return ret -def set_(dic, path, val, seps=P.PATH_SEPS, strategy=None): +def set_(dic, path, val, seps=PATH_SEPS, strategy=None): """ setter for nested dicts. @@ -121,7 +124,7 @@ def convert_to(mdict): """ if is_mergeabledict_or_dict(mdict): return dict((k, convert_to(v)) for k, v in iteritems(mdict)) - elif U.is_iterable(mdict): + elif anyconfig.utils.is_iterable(mdict): return type(mdict)(convert_to(v) for v in mdict) else: return mdict @@ -135,7 +138,7 @@ def create_from(dic): """ if is_mergeabledict_or_dict(dic): return MergeableDict((k, create_from(v)) for k, v in iteritems(dic)) - elif U.is_iterable(dic): + elif anyconfig.utils.is_iterable(dic): return type(dic)(create_from(v) for v in dic) else: return dic @@ -247,7 +250,7 @@ def update_w_merge(self, other, merge_lists=False): # update recursively. self[k].update_w_merge(v, merge_lists) else: - if merge_lists and U.is_iterable(v): + if merge_lists and anyconfig.utils.is_iterable(v): v0 = self.get(k, None) if v0 is None: self[k] = [x for x in list(v)] diff --git a/anyconfig/template.py b/anyconfig/template.py index 6535275a..619349a2 100644 --- a/anyconfig/template.py +++ b/anyconfig/template.py @@ -4,7 +4,6 @@ # Author: Satoru SATOH # License: MIT # - import logging import os diff --git a/anyconfig/tests/api.py b/anyconfig/tests/api.py index 430c99a9..9abef21c 100644 --- a/anyconfig/tests/api.py +++ b/anyconfig/tests/api.py @@ -3,7 +3,12 @@ # License: MIT # from logging import CRITICAL -import anyconfig.api as A + +import os +import os.path +import unittest + +import anyconfig.api as TT import anyconfig.template as AT import anyconfig.tests.common as C @@ -12,10 +17,6 @@ import anyconfig.backend.xml_ as BXML import anyconfig.backend.yaml_ as BYAML -import os -import os.path -import unittest - class Test_10_pure_functions(unittest.TestCase): @@ -23,45 +24,46 @@ def test_10_find_loader__w_forced_type(self): cpath = "dummy.conf" # These parsers should be supported. - self.assertEquals(A.find_loader(cpath, "ini"), BINI.IniConfigParser) - self.assertEquals(A.find_loader(cpath, "json"), BJSON.JsonConfigParser) + self.assertEquals(TT.find_loader(cpath, "ini"), BINI.IniConfigParser) + self.assertEquals(TT.find_loader(cpath, "json"), + BJSON.JsonConfigParser) if BYAML.SUPPORTED: - self.assertEquals(A.find_loader(cpath, "yaml"), + self.assertEquals(TT.find_loader(cpath, "yaml"), BYAML.YamlConfigParser) if BXML.SUPPORTED: - self.assertEquals(A.find_loader(cpath, "xml"), + self.assertEquals(TT.find_loader(cpath, "xml"), BXML.XmlConfigParser) def test_12_find_loader__w_forced_type__none(self): - A.set_loglevel(CRITICAL) # suppress the logging msg "[Error] ..." + TT.set_loglevel(CRITICAL) # suppress the logging msg "[Error] ..." cpath = "dummy.conf" - self.assertEquals(A.find_loader(cpath, "type_not_exist"), None) + self.assertEquals(TT.find_loader(cpath, "type_not_exist"), None) def test_20_find_loader__by_file(self): - self.assertEquals(A.find_loader("dummy.ini"), BINI.IniConfigParser) - self.assertEquals(A.find_loader("dummy.json"), BJSON.JsonConfigParser) - self.assertEquals(A.find_loader("dummy.jsn"), BJSON.JsonConfigParser) + self.assertEquals(TT.find_loader("dummy.ini"), BINI.IniConfigParser) + self.assertEquals(TT.find_loader("dummy.json"), BJSON.JsonConfigParser) + self.assertEquals(TT.find_loader("dummy.jsn"), BJSON.JsonConfigParser) if BYAML.SUPPORTED: - self.assertEquals(A.find_loader("dummy.yaml"), + self.assertEquals(TT.find_loader("dummy.yaml"), BYAML.YamlConfigParser) - self.assertEquals(A.find_loader("dummy.yml"), + self.assertEquals(TT.find_loader("dummy.yml"), BYAML.YamlConfigParser) if BXML.SUPPORTED: - self.assertEquals(A.find_loader("dummy.xml"), + self.assertEquals(TT.find_loader("dummy.xml"), BXML.XmlConfigParser) def test_22_find_loader__by_file__none(self): # see self.test_12_find_loader__w_forced_type__none - A.set_loglevel(CRITICAL) - self.assertEquals(A.find_loader("dummy.ext_not_found"), None) + TT.set_loglevel(CRITICAL) + self.assertEquals(TT.find_loader("dummy.ext_not_found"), None) def test_30_dumps_and_loads(self): a = dict(name="a", a=1, b=dict(b=[1, 2], c="C")) - a1 = A.loads(A.dumps(a, "json"), "json") + a1 = TT.loads(TT.dumps(a, "json"), "json") self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], a["a"]) @@ -70,7 +72,8 @@ def test_30_dumps_and_loads(self): def test_30_dumps_and_loads__w_options(self): a = dict(name="a", a=1, b=dict(b=[1, 2], c="C")) - a1 = A.loads(A.dumps(a, "json", indent=2), "json", ensure_ascii=False) + a1 = TT.loads(TT.dumps(a, "json", indent=2), "json", + ensure_ascii=False) self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], a["a"]) @@ -79,7 +82,7 @@ def test_30_dumps_and_loads__w_options(self): def test_32_dumps_and_loads__w_options__no_dumper(self): a = dict(name="a", a=1, b=dict(b=[1, 2], c="C")) - a1 = A.loads(A.dumps(a, "type_not_exist"), "json") + a1 = TT.loads(TT.dumps(a, "type_not_exist"), "json") self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], a["a"]) @@ -90,7 +93,7 @@ def test_40_loads_wo_type(self): a = dict(requires=["bash", "zsh"]) a_s = "requires:bash,zsh" - a1 = A.loads(a_s) + a1 = TT.loads(a_s) self.assertEquals(a1["requires"], a["requires"]) @@ -98,7 +101,7 @@ def test_42_loads_w_type_not_exist(self): a = dict(requires=["bash", "zsh"]) a_s = "requires:bash,zsh" - a1 = A.loads(a_s, "type_not_exist") + a1 = TT.loads(a_s, "type_not_exist") self.assertEquals(a1["requires"], a["requires"]) @@ -110,7 +113,7 @@ def test_44_loads_w_type__template(self): a_s = "requires: [{{ requires|join(', ') }}]" context = dict(requires=["bash", "zsh"], ) - a1 = A.loads(a_s, forced_type="yaml", template=True, context=context) + a1 = TT.loads(a_s, forced_type="yaml", template=True, context=context) self.assertEquals(a1["requires"], a["requires"]) @@ -128,10 +131,10 @@ def test_10_dump_and_single_load(self): a_path = os.path.join(self.workdir, "a.json") - A.dump(a, a_path) + TT.dump(a, a_path) self.assertTrue(os.path.exists(a_path)) - a1 = A.single_load(a_path) + a1 = TT.single_load(a_path) self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], a["a"]) @@ -139,15 +142,15 @@ def test_10_dump_and_single_load(self): self.assertEquals(a1["b"]["c"], a["b"]["c"]) def test_12_dump_and_single_load__no_parser(self): - self.assertEquals(A.single_load("dummy.ext_not_exist"), None) + self.assertEquals(TT.single_load("dummy.ext_not_exist"), None) def test_14_single_load__ignore_missing(self): - null_cntnr = A.container() + null_cntnr = TT.container() cpath = os.path.join(os.curdir, "conf_file_should_not_exist") assert not os.path.exists(cpath) - self.assertEquals(A.single_load(cpath, forced_type="ini", - ignore_missing=True), + self.assertEquals(TT.single_load(cpath, forced_type="ini", + ignore_missing=True), null_cntnr) def test_16_single_load__template(self): @@ -167,7 +170,7 @@ def test_16_single_load__template(self): c: {{ b.c }} """) - a1 = A.single_load(a_path, template=True, context=a) + a1 = TT.single_load(a_path, template=True, context=a) self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], a["a"]) @@ -193,7 +196,7 @@ def test_18_single_load__templates(self): c: {{ b.c }} """) - a1 = A.single_load(a_path, template=True, context=a) + a1 = TT.single_load(a_path, template=True, context=a) self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], a["a"]) @@ -208,14 +211,14 @@ def test_20_dump_and_multi_load(self): b_path = os.path.join(self.workdir, "b.json") g_path = os.path.join(self.workdir, "*.json") - A.dump(a, a_path) + TT.dump(a, a_path) self.assertTrue(os.path.exists(a_path)) - A.dump(b, b_path) + TT.dump(b, b_path) self.assertTrue(os.path.exists(b_path)) - a0 = A.multi_load(g_path, merge=A.MS_DICTS) - a02 = A.multi_load([g_path, b_path], merge=A.MS_DICTS) + a0 = TT.multi_load(g_path, merge=TT.MS_DICTS) + a02 = TT.multi_load([g_path, b_path], merge=TT.MS_DICTS) self.assertEquals(a0["name"], a["name"]) self.assertEquals(a0["a"], b["a"]) @@ -229,7 +232,7 @@ def test_20_dump_and_multi_load(self): self.assertEquals(a02["b"]["c"], a["b"]["c"]) self.assertEquals(a02["b"]["d"], b["b"]["d"]) - a1 = A.multi_load([a_path, b_path], merge=A.MS_DICTS) + a1 = TT.multi_load([a_path, b_path], merge=TT.MS_DICTS) self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], b["a"]) @@ -237,7 +240,7 @@ def test_20_dump_and_multi_load(self): self.assertEquals(a1["b"]["c"], a["b"]["c"]) self.assertEquals(a1["b"]["d"], b["b"]["d"]) - a2 = A.multi_load([a_path, b_path], merge=A.MS_DICTS_AND_LISTS) + a2 = TT.multi_load([a_path, b_path], merge=TT.MS_DICTS_AND_LISTS) self.assertEquals(a2["name"], a["name"]) self.assertEquals(a2["a"], b["a"]) @@ -245,7 +248,7 @@ def test_20_dump_and_multi_load(self): self.assertEquals(a2["b"]["c"], a["b"]["c"]) self.assertEquals(a2["b"]["d"], b["b"]["d"]) - a3 = A.multi_load(os.path.join(self.workdir, "*.json")) + a3 = TT.multi_load(os.path.join(self.workdir, "*.json")) self.assertEquals(a3["name"], a["name"]) self.assertEquals(a3["a"], b["a"]) @@ -253,7 +256,7 @@ def test_20_dump_and_multi_load(self): self.assertEquals(a3["b"]["c"], a["b"]["c"]) self.assertEquals(a3["b"]["d"], b["b"]["d"]) - a4 = A.multi_load([a_path, b_path], merge=A.MS_REPLACE) + a4 = TT.multi_load([a_path, b_path], merge=TT.MS_REPLACE) self.assertEquals(a4["name"], a["name"]) self.assertEquals(a4["a"], b["a"]) @@ -261,7 +264,7 @@ def test_20_dump_and_multi_load(self): self.assertFalse("c" in a4["b"]) self.assertEquals(a4["b"]["d"], b["b"]["d"]) - a5 = A.multi_load([a_path, b_path], merge=A.MS_NO_REPLACE) + a5 = TT.multi_load([a_path, b_path], merge=TT.MS_NO_REPLACE) self.assertEquals(a5["name"], a["name"]) self.assertEquals(a5["a"], a["a"]) @@ -270,12 +273,12 @@ def test_20_dump_and_multi_load(self): self.assertFalse("d" in a5["b"]) def test_22_multi_load__ignore_missing(self): - null_cntnr = A.container() + null_cntnr = TT.container() cpath = os.path.join(os.curdir, "conf_file_should_not_exist") assert not os.path.exists(cpath) - self.assertEquals(A.multi_load([cpath], forced_type="ini", - ignore_missing=True), + self.assertEquals(TT.multi_load([cpath], forced_type="ini", + ignore_missing=True), null_cntnr) def test_24_multi_load__templates(self): @@ -285,8 +288,8 @@ def test_24_multi_load__templates(self): a = dict(a=1, b=dict(b=[0, 1], c="C"), name="a") b = dict(a=2, b=dict(b=[1, 2, 3, 4, 5], d="D")) - ma = A.container.create(a) - ma.update(b, A.MS_DICTS) + ma = TT.container.create(a) + ma.update(b, TT.MS_DICTS) a_path = os.path.join(self.workdir, "a.yml") b_path = os.path.join(self.workdir, "b.yml") @@ -313,9 +316,10 @@ def test_24_multi_load__templates(self): d: {{ b.d }} """) - a0 = A.multi_load(g_path, merge=A.MS_DICTS, template=True, context=ma) - a02 = A.multi_load([g_path, b_path], merge=A.MS_DICTS, - template=True, context=ma) + a0 = TT.multi_load(g_path, merge=TT.MS_DICTS, template=True, + context=ma) + a02 = TT.multi_load([g_path, b_path], merge=TT.MS_DICTS, + template=True, context=ma) self.assertEquals(a0["name"], a["name"]) self.assertEquals(a0["a"], b["a"]) @@ -336,20 +340,20 @@ def test_30_dump_and_load(self): a_path = os.path.join(self.workdir, "a.json") b_path = os.path.join(self.workdir, "b.json") - A.dump(a, a_path) + TT.dump(a, a_path) self.assertTrue(os.path.exists(a_path)) - A.dump(b, b_path) + TT.dump(b, b_path) self.assertTrue(os.path.exists(b_path)) - a1 = A.load(a_path) + a1 = TT.load(a_path) self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], a["a"]) self.assertEquals(a1["b"]["b"], a["b"]["b"]) self.assertEquals(a1["b"]["c"], a["b"]["c"]) - a2 = A.load(os.path.join(self.workdir, '*.json')) + a2 = TT.load(os.path.join(self.workdir, '*.json')) self.assertEquals(a2["name"], a["name"]) self.assertEquals(a2["a"], b["a"]) @@ -357,7 +361,7 @@ def test_30_dump_and_load(self): self.assertEquals(a2["b"]["c"], a["b"]["c"]) self.assertEquals(a2["b"]["d"], b["b"]["d"]) - a3 = A.load([a_path, b_path]) + a3 = TT.load([a_path, b_path]) self.assertEquals(a3["name"], a["name"]) self.assertEquals(a3["a"], b["a"]) @@ -372,20 +376,20 @@ def test_32_dump_and_load__w_options(self): a_path = os.path.join(self.workdir, "a.json") b_path = os.path.join(self.workdir, "b.json") - A.dump(a, a_path, indent=2) + TT.dump(a, a_path, indent=2) self.assertTrue(os.path.exists(a_path)) - A.dump(b, b_path, indent=2) + TT.dump(b, b_path, indent=2) self.assertTrue(os.path.exists(b_path)) - a1 = A.load(a_path, parse_int=int) + a1 = TT.load(a_path, parse_int=int) self.assertEquals(a1["name"], a["name"]) self.assertEquals(a1["a"], a["a"]) self.assertEquals(a1["b"]["b"], a["b"]["b"]) self.assertEquals(a1["b"]["c"], a["b"]["c"]) - a2 = A.load(os.path.join(self.workdir, '*.json'), parse_int=int) + a2 = TT.load(os.path.join(self.workdir, '*.json'), parse_int=int) self.assertEquals(a2["name"], a["name"]) self.assertEquals(a2["a"], b["a"]) @@ -393,7 +397,7 @@ def test_32_dump_and_load__w_options(self): self.assertEquals(a2["b"]["c"], a["b"]["c"]) self.assertEquals(a2["b"]["d"], b["b"]["d"]) - a3 = A.load([a_path, b_path], parse_int=int) + a3 = TT.load([a_path, b_path], parse_int=int) self.assertEquals(a3["name"], a["name"]) self.assertEquals(a3["a"], b["a"]) @@ -402,12 +406,12 @@ def test_32_dump_and_load__w_options(self): self.assertEquals(a3["b"]["d"], b["b"]["d"]) def test_34_load__ignore_missing(self): - null_cntnr = A.container() + null_cntnr = TT.container() cpath = os.path.join(os.curdir, "conf_file_should_not_exist") assert not os.path.exists(cpath) - self.assertEquals(A.load([cpath], forced_type="ini", - ignore_missing=True), + self.assertEquals(TT.load([cpath], forced_type="ini", + ignore_missing=True), null_cntnr) # vim:sw=4:ts=4:et: diff --git a/anyconfig/tests/cli.py b/anyconfig/tests/cli.py index 02a9f324..7e52cef3 100644 --- a/anyconfig/tests/cli.py +++ b/anyconfig/tests/cli.py @@ -2,16 +2,16 @@ # Copyright (C) 2013 Satoru SATOH # License: MIT # -import anyconfig.cli as TT -import anyconfig.api as A -import anyconfig.template as AT -import anyconfig.tests.common as C - import os import os.path import subprocess import unittest +import anyconfig.cli as TT +import anyconfig.api as A +import anyconfig.template +import anyconfig.tests.common as C + def run(args=[]): """ @@ -163,7 +163,7 @@ def test_62_output_wo_output_option_and_otype_w_itype(self): self.run_and_check_exit_code(["--itype", "json", input], 0) def test_70_multi_inputs__w_template(self): - if not AT.TEMPLATE_SUPPORT: + if not anyconfig.template.TEMPLATE_SUPPORT: return a = dict(name="a", a=1, b=dict(b=[1, 2], c="C")) @@ -202,7 +202,7 @@ def test_72_single_input__no_template(self): self.assertTrue(os.path.exists(output)) def test_74_multi_inputs__w_template(self): - if not AT.TEMPLATE_SUPPORT: + if not anyconfig.template.TEMPLATE_SUPPORT: return curdir = C.selfdir() diff --git a/anyconfig/tests/common.py b/anyconfig/tests/common.py index 042dd138..6f159b45 100644 --- a/anyconfig/tests/common.py +++ b/anyconfig/tests/common.py @@ -1,5 +1,5 @@ # -# Copyright (C) 2011 - 2014 Satoru SATOH +# Copyright (C) 2011 - 2015 Satoru SATOH # import imp import os.path diff --git a/anyconfig/tests/mergeabledict.py b/anyconfig/tests/mergeabledict.py index a14bace3..62764b81 100644 --- a/anyconfig/tests/mergeabledict.py +++ b/anyconfig/tests/mergeabledict.py @@ -1,33 +1,33 @@ # # Copyright (C) 2011 - 2013 Satoru SATOH # -import anyconfig.mergeabledict as T import unittest +import anyconfig.mergeabledict as TT class Test_00_utility_functions(unittest.TestCase): def test_create_from__convert_to(self): a = dict(name="a", a=1, b=dict(b=[1, 2], c="C"), e=[3, 4]) - b = T.create_from(a) - c = T.convert_to(b) + b = TT.create_from(a) + c = TT.convert_to(b) - self.assertTrue(isinstance(b, T.MergeableDict)) + self.assertTrue(isinstance(b, TT.MergeableDict)) self.assertTrue(isinstance(c, dict)) - self.assertFalse(isinstance(c, T.MergeableDict)) + self.assertFalse(isinstance(c, TT.MergeableDict)) class Test_10_MergeableDict(unittest.TestCase): def test_update__w_merge_dicts(self): - a = T.MergeableDict(name="a", a=1, - b=T.MergeableDict(b=[1, 2], c="C"), - e=[3, 4]) - b = T.MergeableDict(a=2, b=T.MergeableDict(b=[1, 2, 3], d="D")) + a = TT.MergeableDict(name="a", a=1, + b=TT.MergeableDict(b=[1, 2], c="C"), + e=[3, 4]) + b = TT.MergeableDict(a=2, b=TT.MergeableDict(b=[1, 2, 3], d="D")) - ref = T.MergeableDict(**a.copy()) + ref = TT.MergeableDict(**a.copy()) ref['a'] = 2 - ref['b'] = T.MergeableDict(b=[1, 2, 3], c="C", d="D") + ref['b'] = TT.MergeableDict(b=[1, 2, 3], c="C", d="D") ref['e'] = [3, 4] a.update(b) @@ -35,52 +35,55 @@ def test_update__w_merge_dicts(self): self.assertEquals(a, ref) def test_update__w_merge_dicts_and_lists(self): - a = T.MergeableDict(name="a", a=1, b=T.MergeableDict(b=[1, 2], c="C")) - b = T.MergeableDict(a=2, b=T.MergeableDict(b=[3, 4], d="D", e=[1, 2])) + a = TT.MergeableDict(name="a", a=1, + b=TT.MergeableDict(b=[1, 2], c="C")) + b = TT.MergeableDict(a=2, + b=TT.MergeableDict(b=[3, 4], d="D", e=[1, 2])) - ref = T.MergeableDict(**a.copy()) + ref = TT.MergeableDict(**a.copy()) ref['a'] = 2 - ref['b'] = T.MergeableDict(b=[1, 2, 3, 4], c="C", d="D", e=[1, 2]) + ref['b'] = TT.MergeableDict(b=[1, 2, 3, 4], c="C", d="D", e=[1, 2]) - a.update(b, T.MS_DICTS_AND_LISTS) + a.update(b, TT.MS_DICTS_AND_LISTS) self.assertEquals(a, ref) def test_update__w_replace(self): - a = T.MergeableDict(name="a", a=1, b=T.MergeableDict(b=[1, 2], c="C")) - b = T.MergeableDict(a=2, b=T.MergeableDict(b=[3, 4, 5], d="D")) + a = TT.MergeableDict(name="a", a=1, + b=TT.MergeableDict(b=[1, 2], c="C")) + b = TT.MergeableDict(a=2, b=TT.MergeableDict(b=[3, 4, 5], d="D")) - ref = T.MergeableDict(**a.copy()) + ref = TT.MergeableDict(**a.copy()) ref['a'] = 2 ref['b'] = b['b'] ref['b']['c'] = a['b']['c'] - a.update(b, T.MS_REPLACE) + a.update(b, TT.MS_REPLACE) self.assertEquals(a, ref) def test_update__w_replace__not_a_dict(self): - a = T.MergeableDict() - a.update(1, T.MS_REPLACE) + a = TT.MergeableDict() + a.update(1, TT.MS_REPLACE) # FIXME: It does not work. # self.assertEquals(a, 1) def test_update__wo_replace(self): - a = T.MergeableDict(a=1, b=T.MergeableDict(b=[1, 2], c="C")) - b = T.MergeableDict(name="foo", a=2, - b=T.MergeableDict(b=[3, 4, 5], d="D")) + a = TT.MergeableDict(a=1, b=TT.MergeableDict(b=[1, 2], c="C")) + b = TT.MergeableDict(name="foo", a=2, + b=TT.MergeableDict(b=[3, 4, 5], d="D")) - ref = T.MergeableDict(**a.copy()) + ref = TT.MergeableDict(**a.copy()) ref['name'] = b['name'] - a.update(b, T.MS_NO_REPLACE) + a.update(b, TT.MS_NO_REPLACE) self.assertEquals(a, ref) def test_update__w_None(self): - a = T.MergeableDict(name="a", a=1, b=T.MergeableDict(b=[1, 2], c="C")) - ref = T.MergeableDict(**a.copy()) - + a = TT.MergeableDict(name="a", a=1, + b=TT.MergeableDict(b=[1, 2], c="C")) + ref = TT.MergeableDict(**a.copy()) a.update(None) self.assertEquals(a, ref) diff --git a/anyconfig/tests/parser.py b/anyconfig/tests/parser.py index 91102960..fad3ff48 100644 --- a/anyconfig/tests/parser.py +++ b/anyconfig/tests/parser.py @@ -1,9 +1,9 @@ # -# Copyright (C) 2011, 2012 Satoru SATOH +# Copyright (C) 2011 - 2015 Satoru SATOH # License: MIT # -import anyconfig.parser as TT import unittest +import anyconfig.parser as TT # format: input, expected_result diff --git a/anyconfig/tests/template.py b/anyconfig/tests/template.py index 5b5384ad..2fe641a0 100644 --- a/anyconfig/tests/template.py +++ b/anyconfig/tests/template.py @@ -2,12 +2,12 @@ # Copyright (C) 2013 Satoru SATOH # License: MIT # -import anyconfig.template as TT -import anyconfig.tests.common as C - import os.path import unittest +import anyconfig.template as TT +import anyconfig.tests.common + C_1 = """A char is 'a'. A char is 'b'. @@ -26,13 +26,13 @@ class Test_20_render_templates(unittest.TestCase): templates = TMPLS def setUp(self): - self.workdir = C.setup_workdir() + self.workdir = anyconfig.tests.common.setup_workdir() for fn, tmpl_s, _c in self.templates: f = os.path.join(self.workdir, fn) open(f, 'w').write(tmpl_s) def tearDown(self): - C.cleanup_workdir(self.workdir) + anyconfig.tests.common.cleanup_workdir(self.workdir) def test_10_render_impl__wo_paths(self): if TT.TEMPLATE_SUPPORT: diff --git a/anyconfig/tests/utils.py b/anyconfig/tests/utils.py index b45db035..5342dd9d 100644 --- a/anyconfig/tests/utils.py +++ b/anyconfig/tests/utils.py @@ -2,15 +2,15 @@ # Copyright (C) 2012 Satoru SATOH # License: MIT # -import anyconfig.utils as U import unittest +import anyconfig.utils as TT class Test_functions(unittest.TestCase): def test_00_get_file_extension(self): - self.assertEquals(U.get_file_extension("/a/b/c"), '') - self.assertEquals(U.get_file_extension("/a/b.txt"), "txt") - self.assertEquals(U.get_file_extension("/a/b/c.tar.xz"), "xz") + self.assertEquals(TT.get_file_extension("/a/b/c"), '') + self.assertEquals(TT.get_file_extension("/a/b.txt"), "txt") + self.assertEquals(TT.get_file_extension("/a/b/c.tar.xz"), "xz") # vim:sw=4:ts=4:et: diff --git a/anyconfig/utils.py b/anyconfig/utils.py index 0212f7d1..a9e6ad5a 100644 --- a/anyconfig/utils.py +++ b/anyconfig/utils.py @@ -4,12 +4,12 @@ # """Misc utility routines for anyconfig module. """ -import anyconfig.compat - import glob import os.path import types +import anyconfig.compat + def get_file_extension(file_path): """