# HG changeset patch # User Franz Glasner # Date 1639605545 -3600 # Node ID 9fcdc42a04573342ab3605126484bd79fe4a5763 # Parent 32e228696a638027520652a7855949ecd0d83c28 len-support for jailed configurations: implement a proper __len__() method diff -r 32e228696a63 -r 9fcdc42a0457 configmix/config.py --- a/configmix/config.py Wed Dec 15 09:34:16 2021 +0100 +++ b/configmix/config.py Wed Dec 15 22:59:05 2021 +0100 @@ -943,6 +943,9 @@ def __iter__(self): return iter(self._base.getvarl_s(*self._path)) + def __len__(self): + return len(self._base.getvarl(*self._path)) + if PY2: def __nonzero__(self): diff -r 32e228696a63 -r 9fcdc42a0457 docs/apidoc.rst --- a/docs/apidoc.rst Wed Dec 15 09:34:16 2021 +0100 +++ b/docs/apidoc.rst Wed Dec 15 22:59:05 2021 +0100 @@ -33,7 +33,7 @@ .. autoclass:: _JailedConfiguration :members: :undoc-members: - :special-members: __getitem__, __getattr__, __bool__, __iter__ + :special-members: __getitem__, __getattr__, __len__, __bool__, __iter__ Module :mod:`configmix.constants` diff -r 32e228696a63 -r 9fcdc42a0457 tests/test.py --- a/tests/test.py Wed Dec 15 09:34:16 2021 +0100 +++ b/tests/test.py Wed Dec 15 22:59:05 2021 +0100 @@ -1738,21 +1738,25 @@ cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key7")) self.assertFalse(jcfg) + self.assertEqual(0, len(jcfg)) def test_boolean_context_list_true(self): cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key8")) self.assertTrue(jcfg) + self.assertEqual(3, len(jcfg)) def test_boolean_context_dict_false(self): cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key9")) self.assertFalse(jcfg) + self.assertEqual(0, len(jcfg)) def test_boolean_context_dict_true(self): cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2")) self.assertTrue(jcfg) + self.assertEqual(6, len(jcfg)) def test_list_by_index(self): cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))