remove pep8 validation errors
authorEmmanuel Garette <egarette@cadoles.com>
Fri, 24 Jul 2015 15:54:10 +0000 (17:54 +0200)
committerEmmanuel Garette <egarette@cadoles.com>
Fri, 24 Jul 2015 15:54:10 +0000 (17:54 +0200)
37 files changed:
test/autopath.py
test/test_cache.py
test/test_choice_option.py
test/test_config.py
test/test_config_api.py
test/test_config_big_example.py [deleted file]
test/test_config_domain.py
test/test_config_ip.py
test/test_dereference.py
test/test_dyn_optiondescription.py
test/test_freeze.py
test/test_mandatory.py
test/test_metaconfig.py
test/test_multi.py
test/test_option.py
test/test_option_calculation.py
test/test_option_consistency.py
test/test_option_default.py
test/test_option_owner.py
test/test_option_setting.py
test/test_option_type.py
test/test_option_username.py
test/test_option_validator.py
test/test_option_with_special_name.py
test/test_parsing_group.py
test/test_permissive.py
test/test_requires.py
test/test_reverse_from_path.py [deleted file]
test/test_slots.py
test/test_state.py
test/test_storage.py
test/test_submulti.py
test/test_symlink.py
tiramisu/config.py
tiramisu/option/optiondescription.py
tiramisu/storage/dictionary/setting.py
tiramisu/storage/dictionary/value.py

index 11c5057..8820560 100644 (file)
@@ -7,8 +7,8 @@ checkout)
 from os.path import dirname, abspath, join, normpath
 import sys
 
-HERE = dirname(abspath(__file__))
-PATH = normpath(join(HERE, '..', 'tiramisu'))
-if PATH not in sys.path:
-    sys.path.insert(1, PATH)
-
+def do_autopath():
+    HERE = dirname(abspath(__file__))
+    PATH = normpath(join(HERE, '..', 'tiramisu'))
+    if PATH not in sys.path:
+        sys.path.insert(1, PATH)
index 5fe4472..2eb2268 100644 (file)
@@ -1,5 +1,7 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from tiramisu import setting
 setting.expires_time = 1
 from tiramisu.option import IntOption, OptionDescription
@@ -20,9 +22,10 @@ def make_description():
 
 def test_cache_config():
     od1 = make_description()
-    assert od1.impl_already_build_caches() == False
+    assert od1.impl_already_build_caches() is False
     c = Config(od1)
-    assert od1.impl_already_build_caches() == True
+    assert od1.impl_already_build_caches() is True
+    c
 
 
 def test_cache():
index 470f247..9b3d504 100644 (file)
@@ -1,5 +1,6 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
 
 from tiramisu.setting import owners
 from tiramisu.option import ChoiceOption, StrOption, OptionDescription
index 8c41305..7e743ba 100644 (file)
@@ -2,8 +2,9 @@
 
 """theses tests are much more to test that config, option description, vs...
 **it's there** and answers via attribute access"""
+from autopath import do_autopath
+do_autopath()
 
-import autopath
 from py.test import raises
 
 from tiramisu.config import Config, SubConfig
@@ -165,6 +166,7 @@ def test_config_impl_get_path_by_opt():
     dummy = config.unwrap_from_path('gc.dummy')
     boo = config.unwrap_from_path('bool')
     unknown = IntOption('test', '')
+    unknown
     assert config.cfgimpl_get_description().impl_get_path_by_opt(boo) == 'bool'
     assert config.cfgimpl_get_description().impl_get_path_by_opt(dummy) == 'gc.dummy'
     raises(AttributeError, "config.cfgimpl_get_description().impl_get_path_by_opt(unknown)")
@@ -236,11 +238,13 @@ def test_values_not_setitem():
     d1 = OptionDescription('od', '', [g1, g2, g3, g4, g5])
     root = OptionDescription('root', '', [d1])
     config = Config(root)
+    config
     raises(ConfigError, "config.cfgimpl_get_values()[g1] = 2")
 
 
 def test_duplicated_option():
     g1 = IntOption('g1', '', 1)
+    g1
     #in same OptionDescription
     raises(ConflictError, "d1 = OptionDescription('od', '', [g1, g1])")
 
@@ -250,12 +254,14 @@ def test_duplicated_option_diff_od():
     d1 = OptionDescription('od1', '', [g1])
     #in different OptionDescription
     d2 = OptionDescription('od2', '', [g1, d1])
+    d2
     raises(ConflictError, 'Config(d2)')
 
 
 def test_cannot_assign_value_to_option_description():
     descr = make_description()
     cfg = Config(descr)
+    cfg
     raises(TypeError, "cfg.gc = 3")
 
 
index 920b7e5..1c4ad06 100644 (file)
@@ -1,5 +1,7 @@
 "configuration objects global API"
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.config import Config
@@ -197,6 +199,7 @@ def test_find_multi():
 def test_does_not_find_in_config():
     descr = make_description()
     conf = Config(descr)
+    conf
     raises(AttributeError, "conf.find(byname='IDontExist')")
 
 
@@ -266,14 +269,21 @@ def test_impl_getpaths():
 
 
 def test_invalid_option():
+    ChoiceOption('a', '', ('1', '2'))
     raises(TypeError, "ChoiceOption('a', '', [1, 2])")
     raises(TypeError, "ChoiceOption('a', '', 1)")
     raises(ValueError, "ChoiceOption('a', '', (1,), 3)")
+    FloatOption('a', '')
     raises(ValueError, "FloatOption('a', '', 'string')")
+    UnicodeOption('a', '')
     raises(ValueError, "UnicodeOption('a', '', 1)")
+    u = UnicodeOption('a', '')
+    SymLinkOption('a', u)
     raises(ValueError, "SymLinkOption('a', 'string')")
+    IPOption('a', '')
     raises(ValueError, "IPOption('a', '', 1)")
     raises(ValueError, "IPOption('a', '', 'string')")
+    PortOption('a', '')
     raises(ValueError, "PortOption('a', '', 'string')")
     raises(ValueError, "PortOption('a', '', '11:12:13', allow_range=True)")
     raises(ValueError, "PortOption('a', '', 11111111111111111111)")
@@ -282,9 +292,13 @@ def test_invalid_option():
     raises(ValueError, "PortOption('a', '', allow_zero=True, allow_wellknown=False, allow_registred=False, allow_private=True)")
     raises(ValueError, "PortOption('a', '', allow_zero=True, allow_wellknown=False, allow_registred=True, allow_private=True)")
     raises(ValueError, "PortOption('a', '', allow_zero=False, allow_wellknown=False, allow_registred=False, allow_private=False)")
+    NetworkOption('a', '')
     raises(ValueError, "NetworkOption('a', '', 'string')")
+    NetmaskOption('a', '')
     raises(ValueError, "NetmaskOption('a', '', 'string')")
+    BroadcastOption('a', '')
     raises(ValueError, "BroadcastOption('a', '', 'string')")
+    DomainnameOption('a', '')
     raises(ValueError, "DomainnameOption('a', '', 'string')")
     raises(ValueError, "DomainnameOption('a', '', type_='string')")
     raises(ValueError, "DomainnameOption('a', '', allow_ip='string')")
diff --git a/test/test_config_big_example.py b/test/test_config_big_example.py
deleted file mode 100644 (file)
index b6613b1..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-##just a proof of concept with a lot of options and option groups
-#import autopath
-#from tiramisu.config import *
-#from tiramisu.option import *
-
-#all_modules = ['amon', 'sphynx', 'zephir']
-
-#example__optiondescription = OptionDescription("objspace", "Object Space Options", [
-#    ChoiceOption("name", "Object Space name",
-#                 ["std", "flow", "thunk", "dump", "taint"],
-#                 "std"),
-
-#    OptionDescription("opcodes", "opcodes to enable in the interpreter", [
-#        BoolOption("CALL_LIKELY_BUILTIN", "emit a special bytecode for likely calls to builtin functions",
-#                   default=False,
-#                   requires=[("translation.stackless", False)]),
-#        BoolOption("CALL_METHOD", "emit a special bytecode for expr.name()",
-#                   default=False),
-#        ]),
-
-#    BoolOption("nofaking", "disallow faking in the object space",
-#               default=False,
-#               requires=[
-#                   ("objspace.usemodules.posix", True),
-#                   ("objspace.usemodules.time", True),
-#                   ("objspace.usemodules.errno", True)],
-#               ),
-
-#    OptionDescription("usemodules", "Which Modules should be used", [
-#        BoolOption(modname, "use module %s" % (modname, ),
-#                   default=True,
-#                   requires= [('amon', False)],
-#                   )
-#        for modname in all_modules]),
-
-#    BoolOption("allworkingmodules", "use as many working modules as possible",
-#               default=True,
-#               ),
-
-#    BoolOption("translationmodules",
-#          "use only those modules that are needed to run translate.py on pypy",
-#               default=False,
-#               ),
-
-#    BoolOption("geninterp", "specify whether geninterp should be used",
-#               default=True),
-
-#    BoolOption("logbytecodes",
-#               "keep track of bytecode usage",
-#               default=False),
-
-#    BoolOption("usepycfiles", "Write and read pyc files when importing",
-#               default=True),
-
-#    BoolOption("lonepycfiles", "Import pyc files with no matching py file",
-#               default=False,
-#               requires=[("objspace.usepycfiles", True)]),
-
-#    StrOption("soabi",
-#              "Tag to differentiate extension modules built for different Python interpreters",
-#              default=None),
-
-#    BoolOption("honor__builtins__",
-#               "Honor the __builtins__ key of a module dictionary",
-#               default=False),
-
-#    BoolOption("disable_call_speedhacks",
-#               "make sure that all calls go through space.call_args",
-#               default=False),
-
-#    BoolOption("timing",
-#               "timing of various parts of the interpreter (simple profiling)",
-#               default=False),
-
-#    OptionDescription("std", "Standard Object Space Options", [
-#        BoolOption("withtproxy", "support transparent proxies",
-#                   default=True),
-
-#        BoolOption("withsmallint", "use tagged integers",
-#                   default=False,
-#                   requires=[("objspace.std.withprebuiltint", False),
-#                             ("translation.taggedpointers", True)]),
-
-#        BoolOption("withprebuiltint", "prebuild commonly used int objects",
-#                   default=False),
-
-#        IntOption("prebuiltintfrom", "lowest integer which is prebuilt",
-#                  default=-5),
-
-#        IntOption("prebuiltintto", "highest integer which is prebuilt",
-#                  default=100),
-
-#        BoolOption("withstrjoin", "use strings optimized for addition",
-#                   default=False),
-
-#        BoolOption("withstrslice", "use strings optimized for slicing",
-#                   default=False),
-
-#        BoolOption("withstrbuf", "use strings optimized for addition (ver 2)",
-#                   default=False),
-
-#        BoolOption("withprebuiltchar",
-#                   "use prebuilt single-character string objects",
-#                   default=False),
-
-#        BoolOption("sharesmallstr",
-#                   "always reuse the prebuilt string objects "
-#                   "(the empty string and potentially single-char strings)",
-#                   default=False),
-
-#        BoolOption("withrope", "use ropes as the string implementation",
-#                   default=False,
-#                   requires=[("objspace.std.withstrslice", False),
-#                             ("objspace.std.withstrjoin", False),
-#                             ("objspace.std.withstrbuf", False)],
-#                   ),
-
-#        BoolOption("withropeunicode", "use ropes for the unicode implementation",
-#                   default=False,
-#                   requires=[("objspace.std.withrope", True)]),
-
-#        BoolOption("withcelldict",
-#                   "use dictionaries that are optimized for being used as module dicts",
-#                   default=False,
-#                   requires=[("objspace.opcodes.CALL_LIKELY_BUILTIN", False),
-#                             ("objspace.honor__builtins__", False)]),
-
-#        BoolOption("withdictmeasurement",
-#                   "create huge files with masses of information "
-#                   "about dictionaries",
-#                   default=False),
-
-#        BoolOption("withmapdict",
-#                   "make instances really small but slow without the JIT",
-#                   default=False,
-#                   requires=[("objspace.std.getattributeshortcut", True),
-#                             ("objspace.std.withtypeversion", True),
-#                       ]),
-
-#        BoolOption("withrangelist",
-#                   "enable special range list implementation that does not "
-#                   "actually create the full list until the resulting "
-#                   "list is mutated",
-#                   default=False),
-
-#        BoolOption("withtypeversion",
-#                   "version type objects when changing them",
-#                   default=False,
-#                   # weakrefs needed, because of get_subclasses()
-#                   requires=[("translation.rweakref", True)]),
-
-#        BoolOption("withmethodcache",
-#                   "try to cache method lookups",
-#                   default=False,
-#                   requires=[("objspace.std.withtypeversion", True),
-#                             ("translation.rweakref", True)]),
-#        BoolOption("withmethodcachecounter",
-#                   "try to cache methods and provide a counter in __pypy__. "
-#                   "for testing purposes only.",
-#                   default=False,
-#                   requires=[("objspace.std.withmethodcache", True)]),
-#        IntOption("methodcachesizeexp",
-#                  " 2 ** methodcachesizeexp is the size of the of the method cache ",
-#                  default=11),
-#        BoolOption("optimized_int_add",
-#                   "special case the addition of two integers in BINARY_ADD",
-#                   default=False),
-#        BoolOption("optimized_comparison_op",
-#                   "special case the comparison of integers",
-#                   default=False),
-#        BoolOption("optimized_list_getitem",
-#                   "special case the 'list[integer]' expressions",
-#                   default=False),
-#        BoolOption("builtinshortcut",
-#                   "a shortcut for operations between built-in types",
-#                   default=False),
-#        BoolOption("getattributeshortcut",
-#                   "track types that override __getattribute__",
-#                   default=False),
-#        BoolOption("newshortcut",
-#                   "cache and shortcut calling __new__ from builtin types",
-#                   default=False),        
-
-#        BoolOption("logspaceoptypes",
-#                   "a instrumentation option: before exit, print the types seen by "
-#                   "certain simpler bytecodes",
-#                   default=False),
-#        ChoiceOption("multimethods", "the multimethod implementation to use",
-#                     ["doubledispatch", "mrd"],
-#                     default="mrd"),
-#        BoolOption("immutable_builtintypes",
-#                   "Forbid the changing of builtin types", default=True),
-#     ]),
-#])
-
-## ____________________________________________________________
-
-#def get_combined_translation_config(other_optdescr=None,
-#                                    existing_config=None,
-#                                    overrides=None,
-#                                    translating=False):
-#    if overrides is None:
-#        overrides = {}
-#    d = BoolOption("translating",
-#                   "indicates whether we are translating currently",
-#                   default=False)
-#    if other_optdescr is None:
-#        children = []
-#        newname = ""
-#    else:
-#        children = [other_optdescr]
-#        newname = other_optdescr._name
-#    descr = OptionDescription("eole", "all options", children)
-#    config = Config(descr, **overrides)
-#    if translating:
-#        config.translating = True
-#    if existing_config is not None:
-#        for child in existing_config._cfgimpl_descr._children:
-#            if child._name == newname:
-#                continue
-#            value = getattr(existing_config, child._name)
-#            config._cfgimpl_values[child._name] = value
-#    return config
-
-#def get_example_config(overrides=None, translating=False):
-#    return get_combined_translation_config(
-#            example__optiondescription, overrides=overrides,
-#            translating=translating)
-
-## ____________________________________________________________
-
-#def test_example_option():
-#    config = get_example_config()
-#    result = ['objspace.name', 'objspace.opcodes.CALL_LIKELY_BUILTIN',
-#    'objspace.opcodes.CALL_METHOD', 'objspace.nofaking',
-#    'objspace.usemodules.amon', 'objspace.usemodules.sphynx',
-#    'objspace.usemodules.zephir', 'objspace.allworkingmodules',
-#    'objspace.translationmodules', 'objspace.geninterp',
-#    'objspace.logbytecodes', 'objspace.usepycfiles', 'objspace.lonepycfiles',
-#    'objspace.soabi', 'objspace.honor__builtins__',
-#    'objspace.disable_call_speedhacks', 'objspace.timing',
-#    'objspace.std.withtproxy', 'objspace.std.withsmallint',
-#    'objspace.std.withprebuiltint', 'objspace.std.prebuiltintfrom',
-#    'objspace.std.prebuiltintto', 'objspace.std.withstrjoin',
-#    'objspace.std.withstrslice', 'objspace.std.withstrbuf',
-#    'objspace.std.withprebuiltchar', 'objspace.std.sharesmallstr',
-#    'objspace.std.withrope', 'objspace.std.withropeunicode',
-#    'objspace.std.withcelldict', 'objspace.std.withdictmeasurement',
-#    'objspace.std.withmapdict', 'objspace.std.withrangelist',
-#    'objspace.std.withtypeversion', 'objspace.std.withmethodcache',
-#    'objspace.std.withmethodcachecounter', 'objspace.std.methodcachesizeexp',
-#    'objspace.std.optimized_int_add', 'objspace.std.optimized_comparison_op',
-#    'objspace.std.optimized_list_getitem', 'objspace.std.builtinshortcut',
-#    'objspace.std.getattributeshortcut', 'objspace.std.newshortcut',
-#    'objspace.std.logspaceoptypes', 'objspace.std.multimethods',
-#    'objspace.std.immutable_builtintypes']
-
-#    assert config.getpaths(allpaths=True) == result 
index 30b9e00..f3a5b56 100644 (file)
@@ -1,4 +1,6 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 import warnings
 from py.test import raises
 
index 581cbd2..b4359f4 100644 (file)
@@ -1,4 +1,6 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 from tiramisu.config import Config
 from tiramisu.option import IPOption, NetworkOption, NetmaskOption, \
@@ -27,6 +29,7 @@ def test_ip():
     c = Config(od)
     raises(ValueError, "c.a = '192.000.023.01'")
 
+
 def test_ip_default():
     a = IPOption('a', '', '88.88.88.88')
     od = OptionDescription('od', '', [a])
index e23c065..f8776b5 100644 (file)
@@ -1,6 +1,6 @@
 # coding: utf-8
-import autopath
-#from py.test import raises
+from autopath import do_autopath
+do_autopath()
 
 from tiramisu.config import Config, GroupConfig, MetaConfig
 from tiramisu.option import BoolOption, IntOption, StrOption, OptionDescription, submulti
@@ -9,6 +9,7 @@ import weakref
 
 IS_DEREFABLE = True
 
+
 def test_deref_storage():
     b = BoolOption('b', '')
     o = OptionDescription('od', '', [b])
index 5b830e5..89da108 100644 (file)
@@ -1,5 +1,6 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
 
 from tiramisu.setting import groups, owners
 from tiramisu.option import BoolOption, StrOption, ChoiceOption, IPOption, \
@@ -85,6 +86,7 @@ def test_unknown_dyndescription():
     od = OptionDescription('od', '', [dod])
     od2 = OptionDescription('od', '', [od])
     cfg = Config(od2)
+    cfg
     raises(AttributeError, "cfg.od.dodval3")
     raises(AttributeError, "cfg.od.dodval1.novalue")
 
@@ -711,6 +713,7 @@ def test_consistency_external_dyndescription():
     st2 = StrOption('st2', '')
     dod = DynOptionDescription('dod', '', [st1, st2], callback=return_list)
     od = OptionDescription('od', '', [dod, st])
+    od
     raises(ConfigError, "st.impl_add_consistency('not_equal', st2)")
 
 
@@ -722,6 +725,7 @@ def test_consistency_notsame_dyndescription():
     tst2 = StrOption('tst2', '')
     tdod = DynOptionDescription('tdod', '', [tst1, tst2], callback=return_list)
     od = OptionDescription('od', '', [dod, tdod])
+    od
     raises(ConfigError, "st1.impl_add_consistency('not_equal', tst1)")
 
 
@@ -1279,30 +1283,35 @@ def test_invalid_conflict_dyndescription():
     st = StrOption('st', '')
     dod = DynOptionDescription('dod', '', [st], callback=return_list)
     dodinvalid = StrOption('dodinvalid', '')
+    dod, dodinvalid
     raises(ConflictError, "OptionDescription('od', '', [dod, dodinvalid])")
 
 
 def test_invalid_subod_dyndescription():
     st2 = StrOption('st2', '')
     od1 = OptionDescription('od1', '', [st2])
+    od1
     raises(ConfigError, "DynOptionDescription('dod', '', [od1], callback=return_list)")
 
 
 def test_invalid_subdynod_dyndescription():
     st2 = StrOption('st2', '')
     od1 = DynOptionDescription('od1', '', [st2], callback=return_list)
+    od1
     raises(ConfigError, "DynOptionDescription('dod', '', [od1], callback=return_list)")
 
 
 def test_invalid_symlink_dyndescription():
     st = StrOption('st', '')
     st2 = SymLinkOption('st2', st)
+    st2
     raises(ConfigError, "DynOptionDescription('dod', '', [st, st2], callback=return_list)")
 
 
 def test_nocallback_dyndescription():
     st = StrOption('st', '')
     st2 = StrOption('st2', '')
+    st, st2
     raises(ConfigError, "DynOptionDescription('dod', '', [st, st2])")
 
 
@@ -1311,6 +1320,7 @@ def test_invalid_samevalue_dyndescription():
     dod = DynOptionDescription('dod', '', [st], callback=return_same_list)
     od = OptionDescription('od', '', [dod])
     cfg = Config(od)
+    cfg
     raises(ConfigError, "print cfg")
 
 
@@ -1319,4 +1329,5 @@ def test_invalid_name_dyndescription():
     dod = DynOptionDescription('dod', '', [st], callback=return_wrong_list)
     od = OptionDescription('od', '', [dod])
     cfg = Config(od)
+    cfg
     raises(ValueError, "print cfg")
index 9b0f71e..3d9a923 100644 (file)
@@ -1,6 +1,7 @@
 # coding: utf-8
 "frozen and hidden values"
-import autopath
+from autopath import do_autopath
+do_autopath()
 
 from tiramisu.setting import owners
 from tiramisu.option import ChoiceOption, BoolOption, IntOption, FloatOption, \
index 374e2aa..69ea2ad 100644 (file)
@@ -1,4 +1,6 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from time import sleep
 
 #from py.test import raises
index f472d17..b395fcb 100644 (file)
@@ -1,4 +1,5 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
 
 from py.test import raises
 
@@ -177,6 +178,7 @@ def test_not_meta():
     conf2 = Config(od2, name='conf2')
     conf3 = Config(od2)
     conf4 = Config(od2, name='conf2')
+    conf3, conf4
     raises(ValueError, "GroupConfig(conf1)")
     #same name
     raises(ConflictError, "GroupConfig([conf2, conf4])")
@@ -215,6 +217,7 @@ def test_meta_unconsistent():
     conf2 = Config(od2, name='conf2')
     conf3 = Config(od2, name='conf3')
     conf4 = Config(od1, name='conf4')
+    conf3, conf4
     meta = MetaConfig([conf1, conf2])
     meta.cfgimpl_get_settings().setowner(owners.meta)
     raises(TypeError, 'MetaConfig("string")')
index 42fd8e1..6d06011 100644 (file)
@@ -1,5 +1,7 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from tiramisu.value import Multi
 from tiramisu.option import IntOption, OptionDescription
 from tiramisu.config import Config
@@ -13,7 +15,7 @@ def test_multi():
     i = IntOption('int', '', multi=True)
     o = OptionDescription('od', '', [i])
     c = Config(o)
-    multi = Multi([1,2,3], weakref.ref(c), i, 'int')
+    multi = Multi([1, 2, 3], weakref.ref(c), i, 'int')
     raises(ValueError, "Multi([1,2,3], c, i, 'int')")
     raises(ValueError, "Multi(multi, weakref.ref(c), i, 'int')")
     assert c is multi._getcontext()
index 64985ea..90113e0 100644 (file)
@@ -1,7 +1,9 @@
 """these tests are here to create some :class:`tiramisu.option.Option`'s
 and to compare them
 """
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.option import IntOption, OptionDescription
index 6b12387..694e524 100644 (file)
@@ -1,4 +1,6 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.config import Config
index 9be2507..c6a0f09 100644 (file)
@@ -1,4 +1,6 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.setting import owners, groups
index 6aaf631..dfe2b97 100644 (file)
@@ -1,5 +1,7 @@
 "test all types of option default values for options, add new option in a descr"
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.config import Config
index 4b8fdb0..6065051 100644 (file)
@@ -1,4 +1,6 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.setting import owners
index 9b4e511..b1c1e85 100644 (file)
@@ -1,5 +1,7 @@
 "config.set() or config.setoption() or option.setoption()"
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.setting import owners
index 3537d6d..c80cc83 100644 (file)
@@ -1,6 +1,8 @@
 # coding: utf-8
 "frozen and hidden values"
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.config import Config
index 472e9cd..88c800b 100644 (file)
@@ -1,5 +1,7 @@
 "configuration objects global API"
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.config import Config
index c30bcaa..d7af41d 100644 (file)
@@ -1,4 +1,6 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 import warnings
 from py.test import raises
 
index 483aca0..63fe82f 100644 (file)
@@ -1,5 +1,7 @@
 #this test is much more to test that **it's there** and answers attribute access
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.config import Config
index dc299d7..36d06d4 100644 (file)
@@ -1,5 +1,7 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from tiramisu.setting import groups, owners
 from tiramisu.config import Config
 from tiramisu.option import ChoiceOption, BoolOption, IntOption, \
index 615fef7..99d3ac9 100644 (file)
@@ -1,5 +1,7 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.option import IntOption, OptionDescription
index c6d1032..02d1d36 100644 (file)
@@ -1,5 +1,7 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from copy import copy
 from tiramisu import setting
 setting.expires_time = 1
diff --git a/test/test_reverse_from_path.py b/test/test_reverse_from_path.py
deleted file mode 100644 (file)
index be43cac..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#import autopath
-#from py.test import raises
-
-#from tool import reverse_from_paths
-
-#def make_description():
-#    gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
-#    gcdummy = BoolOption('dummy', 'dummy', default=False)
-#    objspaceoption = ChoiceOption('objspace', 'Object space',
-#                                ['std', 'thunk'], 'std')
-#    booloption = BoolOption('bool', 'Test boolean option', default=True)
-#    intoption = IntOption('int', 'Test int option', default=0)
-#    floatoption = FloatOption('float', 'Test float option', default=2.3)
-#    stroption = StrOption('str', 'Test string option', default="abc")
-#    boolop = BoolOption('boolop', 'Test boolean option op', default=True)
-#    wantref_option = BoolOption('wantref', 'Test requires', default=False)
-#    wantframework_option = BoolOption('wantframework', 'Test requires',
-#                                      default=False)
-#
-#    gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
-#    descr = OptionDescription('tiram', '', [gcgroup, booloption, objspaceoption,
-#                                           wantref_option, stroption,
-#                                           wantframework_option,
-#                                           intoption, boolop])
-#    return descr
-
-#def test_rebuild():
-#    # pouvoir faire une comparaison avec equal
-#    d = {"s1.s2.s3.s4.a": True, "int": 43, "s2.b":True, "s3.c": True, "s3.d":[1,2,3]}
-#    cfg = reverse_from_paths(d)
-#    assert cfg.s1.s2.s3.s4.a == True
-#    assert cfg.int == 43
-#    assert cfg.s2.b == True
-#    assert cfg.s3.c == True
-#    assert cfg.s3.d == [1,2,3]
-
-#    assert config.getpaths() == ['gc.name', 'gc.dummy', 'gc.float', 'bool',
-#                                 'objspace', 'wantref', 'str', 'wantframework',
-#                                 'int', 'boolop']
-
-#    assert config.getpaths(include_groups=False) == ['gc.name', 'gc.dummy', 'gc.float', 'bool', 'objspace', 'wantref', 'str', 'wantframework', 'int', 'boolop']
-#    assert config.getpaths(include_groups=True) == ['gc', 'gc.name', 'gc.dummy', 'gc.float', 'bool', 'objspace', 'wantref', 'str', 'wantframework', 'int', 'boolop']
index 225ccce..d3bfdd0 100644 (file)
@@ -1,5 +1,7 @@
 ## coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from py.test import raises
 
 from tiramisu.config import Config, SubConfig
@@ -110,6 +112,7 @@ def test_slots_option_readonly_name():
     p = DomainnameOption('p', '')
     q = DomainnameOption('q', '')
     m = OptionDescription('m', '', [a, b, c, d, e, f, g, h, i, j, k, l, o, p, q])
+    m
     raises(AttributeError, "a._name = 'a'")
     raises(AttributeError, "b._name = 'b'")
     raises(AttributeError, "c._name = 'c'")
@@ -154,6 +157,7 @@ def test_slots_setting():
     od2 = OptionDescription('a', '', [od1])
     c = Config(od2)
     s = c.cfgimpl_get_settings()
+    s
     raises(AttributeError, "s.x = 1")
 
 
@@ -162,4 +166,5 @@ def test_slots_value():
     od2 = OptionDescription('a', '', [od1])
     c = Config(od2)
     v = c.cfgimpl_get_values()
+    v
     raises(AttributeError, "v.x = 1")
index 1a5d5bf..22931a1 100644 (file)
@@ -1,4 +1,5 @@
-import autopath
+from autopath import do_autopath
+do_autopath()
 
 from tiramisu.option import BoolOption, UnicodeOption, SymLinkOption, \
     IntOption, IPOption, NetmaskOption, StrOption, OptionDescription, \
@@ -53,7 +54,7 @@ def _diff_opt(opt1, opt2):
         try:
             val1 = getattr(opt1, attr)
             msg1 = "exists"
-        except Exception, err:
+        except:
             err1 = True
             msg1 = "not exists"
 
@@ -189,6 +190,7 @@ def test_diff_opt():
 
 def test_only_optiondescription():
     b = BoolOption('b', '')
+    b
     raises(SystemError, "a = dumps(b)")
 
 
index fd3d743..8906c9e 100644 (file)
@@ -1,5 +1,7 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 #from py.test import raises
 
 from tiramisu.config import Config
index 6b5108f..ab9c03b 100644 (file)
@@ -1,5 +1,7 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
+
 from tiramisu.setting import groups, owners
 from tiramisu.config import Config
 from tiramisu.option import StrOption, OptionDescription, submulti
index 7f86837..648d752 100644 (file)
@@ -1,5 +1,6 @@
 # coding: utf-8
-import autopath
+from autopath import do_autopath
+do_autopath()
 
 from tiramisu.option import BoolOption, StrOption, SymLinkOption, \
     OptionDescription
@@ -109,6 +110,7 @@ def test_symlink_master():
     ip_admin_eth0 = SymLinkOption('ip_admin_eth0', a)
     netmask_admin_eth0 = StrOption('netmask_admin_eth0', "", multi=True)
     interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
+    interface1
     raises(ValueError, 'interface1.impl_set_group_type(groups.master)')
 
 
@@ -117,4 +119,5 @@ def test_symlink_slaves():
     ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True)
     netmask_admin_eth0 = SymLinkOption('netmask_admin_eth0', a)
     interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
+    interface1
     raises(ValueError, 'interface1.impl_set_group_type(groups.master)')
index 546a522..5ecbd8c 100644 (file)
@@ -20,7 +20,6 @@
 # ____________________________________________________________
 "options handler global entry point"
 import weakref
-from copy import copy
 
 
 from tiramisu.error import PropertiesOptionError, ConfigError, ConflictError
@@ -603,9 +602,16 @@ class _CommonConfig(SubConfig):
         fake_config = Config(self._impl_descr, persistent=False,
                              force_storages=get_storages_validation(),
                              force_settings=self.cfgimpl_get_settings())
-        fake_config.cfgimpl_get_values()._p_._values = copy(self.cfgimpl_get_values()._p_.get_modified_values())
+        fake_config.cfgimpl_get_values()._p_._values = self.cfgimpl_get_values()._p_.get_modified_values()
         return fake_config
 
+    def duplicate(self):
+        config = Config(self._impl_descr)
+        config.cfgimpl_get_values()._p_._values = self.cfgimpl_get_values()._p_.get_modified_values()
+        config.cfgimpl_get_settings()._p_._properties = self.cfgimpl_get_settings()._p_.get_modified_properties()
+        config.cfgimpl_get_settings()._p_._permissives = self.cfgimpl_get_settings()._p_.get_modified_permissives()
+        return config
+
 
 # ____________________________________________________________
 class Config(_CommonConfig):
index 81851a5..8a3831e 100644 (file)
@@ -302,6 +302,10 @@ class OptionDescription(BaseOption, StorageOptionDescription):
     def __getattr__(self, name, context=undefined):
         if name.startswith('_'):  # or name.startswith('impl_'):
             return object.__getattribute__(self, name)
+        if '.' in name:
+            path = name.split('.')[0]
+            subpath = '.'.join(name.split('.')[1:])
+            return self.__getattr__(path, context=context).__getattr__(subpath, context=context)
         return self._getattr(name, context=context)
 
 
index fb76109..0422314 100644 (file)
@@ -15,6 +15,7 @@
 # You should have received a copy of the GNU Lesser General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 # ____________________________________________________________
+from copy import copy
 from ..util import Cache
 
 
@@ -58,10 +59,10 @@ class Settings(Cache):
         """return all modified settings in a dictionary
         example: {'path1': set(['prop1', 'prop2'])}
         """
-        return self._properties
+        return copy(self._properties)
 
     def get_modified_permissives(self):
         """return all modified permissives in a dictionary
         example: {'path1': set(['perm1', 'perm2'])}
         """
-        return self._permissives
+        return copy(self._permissives)
index f0ffe3a..15b91fd 100644 (file)
@@ -15,7 +15,7 @@
 # You should have received a copy of the GNU Lesser General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 # ____________________________________________________________
-
+from copy import copy
 from ..util import Cache
 
 
@@ -58,7 +58,7 @@ class Values(Cache):
         """return all values in a dictionary
         example: {'path1': (owner, 'value1'), 'path2': (owner, 'value2')}
         """
-        return self._values
+        return copy(self._values)
 
     # owner
     def setowner(self, path, owner):