From c57abd3c29cedcca00821d2a0d5708f10977f3c6 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Sat, 14 Jul 2012 19:04:37 -0700 Subject: [PATCH] Remove DotExpandedDict, which was undocumented and unused. --- django/utils/datastructures.py | 32 ------------------- tests/regressiontests/utils/datastructures.py | 18 ++--------- tests/regressiontests/utils/tests.py | 2 +- 3 files changed, 3 insertions(+), 49 deletions(-) diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py index 69be07ba7e..16741ba36b 100644 --- a/django/utils/datastructures.py +++ b/django/utils/datastructures.py @@ -412,38 +412,6 @@ class MultiValueDict(dict): """ return dict((key, self[key]) for key in self) -class DotExpandedDict(dict): - """ - A special dictionary constructor that takes a dictionary in which the keys - may contain dots to specify inner dictionaries. It's confusing, but this - example should make sense. - - >>> d = DotExpandedDict({'person.1.firstname': ['Simon'], \ - 'person.1.lastname': ['Willison'], \ - 'person.2.firstname': ['Adrian'], \ - 'person.2.lastname': ['Holovaty']}) - >>> d - {'person': {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}} - >>> d['person'] - {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}} - >>> d['person']['1'] - {'lastname': ['Willison'], 'firstname': ['Simon']} - - # Gotcha: Results are unpredictable if the dots are "uneven": - >>> DotExpandedDict({'c.1': 2, 'c.2': 3, 'c': 1}) - {'c': 1} - """ - def __init__(self, key_to_list_mapping): - for k, v in key_to_list_mapping.items(): - current = self - bits = k.split('.') - for bit in bits[:-1]: - current = current.setdefault(bit, {}) - # Now assign value to current position - try: - current[bits[-1]] = v - except TypeError: # Special-case if current isn't a dict. - current = {bits[-1]: v} class ImmutableList(tuple): """ diff --git a/tests/regressiontests/utils/datastructures.py b/tests/regressiontests/utils/datastructures.py index 000f7f76a1..1af5018f3b 100644 --- a/tests/regressiontests/utils/datastructures.py +++ b/tests/regressiontests/utils/datastructures.py @@ -6,8 +6,8 @@ import copy import pickle from django.test import SimpleTestCase -from django.utils.datastructures import (DictWrapper, DotExpandedDict, - ImmutableList, MultiValueDict, MultiValueDictKeyError, MergeDict, SortedDict) +from django.utils.datastructures import (DictWrapper, ImmutableList, + MultiValueDict, MultiValueDictKeyError, MergeDict, SortedDict) class SortedDictTests(SimpleTestCase): @@ -251,20 +251,6 @@ class MultiValueDictTests(SimpleTestCase): self.assertEqual({}, MultiValueDict().dict()) -class DotExpandedDictTests(SimpleTestCase): - - def test_dotexpandeddict(self): - - d = DotExpandedDict({'person.1.firstname': ['Simon'], - 'person.1.lastname': ['Willison'], - 'person.2.firstname': ['Adrian'], - 'person.2.lastname': ['Holovaty']}) - - self.assertEqual(d['person']['1']['lastname'], ['Willison']) - self.assertEqual(d['person']['2']['lastname'], ['Holovaty']) - self.assertEqual(d['person']['2']['firstname'], ['Adrian']) - - class ImmutableListTests(SimpleTestCase): def test_sort(self): diff --git a/tests/regressiontests/utils/tests.py b/tests/regressiontests/utils/tests.py index f5ca06ef1e..a7deeeefae 100644 --- a/tests/regressiontests/utils/tests.py +++ b/tests/regressiontests/utils/tests.py @@ -16,7 +16,7 @@ from .decorators import DecoratorFromMiddlewareTests from .functional import FunctionalTestCase from .timesince import TimesinceTests from .datastructures import (MultiValueDictTests, SortedDictTests, - DictWrapperTests, ImmutableListTests, DotExpandedDictTests, MergeDictTests) + DictWrapperTests, ImmutableListTests, MergeDictTests) from .tzinfo import TzinfoTests from .datetime_safe import DatetimeTests from .baseconv import TestBaseConv