コード例 #1
0
 def test_repr_recursive(self):
     # See issue #9826
     od = OrderedDict.fromkeys('abc')
     od['x'] = od
     self.assertEqual(
         repr(od),
         "OrderedDict([('a', None), ('b', None), ('c', None), ('x', ...)])")
コード例 #2
0
ファイル: test_ordereddict.py プロジェクト: ce-williams/cralg
 def test_views(self):
     s = 'the quick brown fox jumped over a lazy dog yesterday before dawn'.split(
     )
     od = OrderedDict.fromkeys(s)
     self.assertEqual(list(od.viewkeys()), s)
     self.assertEqual(list(od.viewvalues()), [None for k in s])
     self.assertEqual(list(od.viewitems()), [(k, None) for k in s])
コード例 #3
0
 def test_detect_deletion_during_iteration(self):
     od = OrderedDict.fromkeys('abc')
     it = iter(od)
     key = next(it)
     del od[key]
     with self.assertRaises(Exception):
         # Note, the exact exception raised is not guaranteed
         # The only guarantee that the next() will not succeed
         next(it)
コード例 #4
0
 def test_detect_deletion_during_iteration(self):
     od = OrderedDict.fromkeys('abc')
     it = iter(od)
     key = next(it)
     del od[key]
     with self.assertRaises(Exception):
         # Note, the exact exception raised is not guaranteed
         # The only guarantee that the next() will not succeed
         next(it)
コード例 #5
0
 def test_move_to_end(self):
     od = OrderedDict.fromkeys('abcde')
     self.assertEqual(list(od), list('abcde'))
     od.move_to_end('c')
     self.assertEqual(list(od), list('abdec'))
     od.move_to_end('c', 0)
     self.assertEqual(list(od), list('cabde'))
     od.move_to_end('c', 0)
     self.assertEqual(list(od), list('cabde'))
     od.move_to_end('e')
     self.assertEqual(list(od), list('cabde'))
     with self.assertRaises(KeyError):
         od.move_to_end('x')
コード例 #6
0
 def test_move_to_end(self):
     od = OrderedDict.fromkeys('abcde')
     self.assertEqual(list(od), list('abcde'))
     od.move_to_end('c')
     self.assertEqual(list(od), list('abdec'))
     od.move_to_end('c', 0)
     self.assertEqual(list(od), list('cabde'))
     od.move_to_end('c', 0)
     self.assertEqual(list(od), list('cabde'))
     od.move_to_end('e')
     self.assertEqual(list(od), list('cabde'))
     with self.assertRaises(KeyError):
         od.move_to_end('x')
コード例 #7
0
    def __init__(self,
                 form_versions,
                 lang=UNSPECIFIED_TRANSLATION,
                 group_sep="/",
                 hierarchy_in_labels=False,
                 version_id_keys=[],
                 multiple_select="both",
                 copy_fields=(),
                 force_index=False,
                 title="submissions"):

        self.lang = lang
        self.group_sep = group_sep
        self.title = title
        self.versions = form_versions
        self.copy_fields = copy_fields
        self.force_index = force_index
        self.herarchy_in_labels = hierarchy_in_labels
        self.version_id_keys = version_id_keys

        # If some fields need to be arbitrarly copied, add them
        # to the first section
        if copy_fields:
            first_version = next(iter(form_versions.values()))
            first_section = next(iter(first_version.sections.values()))
            for name in copy_fields:
                dumb_field = CopyField(name, section=first_section)
                first_section.fields[name] = dumb_field

        # this deals with merging all form versions headers and labels
        params = (lang, group_sep, hierarchy_in_labels, multiple_select)
        res = self.get_fields_and_labels_for_all_versions(*params)
        self.sections, self.labels = res

        self.reset()

        # Some cache to improve perfs on large datasets
        self._row_cache = {}
        self._empty_row = {}

        for section_name, fields in self.sections.items():
            self._row_cache[section_name] = OrderedDict.fromkeys(fields, '')
            self._empty_row[section_name] = dict(self._row_cache[section_name])
コード例 #8
0
ファイル: export.py プロジェクト: kobotoolbox/formpack
    def __init__(self, form_versions, lang=UNSPECIFIED_TRANSLATION,
                 group_sep="/", hierarchy_in_labels=False,
                 version_id_keys=[],
                 multiple_select="both", copy_fields=(), force_index=False,
                 title="submissions"):

        self.lang = lang
        self.group_sep = group_sep
        self.title = title
        self.versions = form_versions
        self.copy_fields = copy_fields
        self.force_index = force_index
        self.herarchy_in_labels = hierarchy_in_labels
        self.version_id_keys = version_id_keys

        # If some fields need to be arbitrarly copied, add them
        # to the first section
        if copy_fields:
            first_version = next(iter(form_versions.values()))
            first_section = next(iter(first_version.sections.values()))
            for name in copy_fields:
                dumb_field = CopyField(name, section=first_section)
                first_section.fields[name] = dumb_field

        # this deals with merging all form versions headers and labels
        params = (lang, group_sep, hierarchy_in_labels, multiple_select)
        res = self.get_fields_and_labels_for_all_versions(*params)
        self.sections, self.labels = res

        self.reset()

        # Some cache to improve perfs on large datasets
        self._row_cache = {}
        self._empty_row = {}

        for section_name, fields in self.sections.items():
            self._row_cache[section_name] = OrderedDict.fromkeys(fields, '')
            self._empty_row[section_name] = dict(self._row_cache[section_name])
コード例 #9
0
 def test_views(self):
     s = 'the quick brown fox jumped over a lazy dog yesterday before dawn'.split()
     od = OrderedDict.fromkeys(s)
     self.assertEqual(list(od.viewkeys()),  s)
     self.assertEqual(list(od.viewvalues()),  [None for k in s])
     self.assertEqual(list(od.viewitems()),  [(k, None) for k in s])
コード例 #10
0
 def test_repr_recursive(self):
     # See issue #9826
     od = OrderedDict.fromkeys('abc')
     od['x'] = od
     self.assertEqual(repr(od),
         "OrderedDict([('a', None), ('b', None), ('c', None), ('x', ...)])")
コード例 #11
0
ファイル: export.py プロジェクト: tiffanyneel/formpack
    def __init__(self, formpack, form_versions, lang=UNSPECIFIED_TRANSLATION,
                 group_sep="/", hierarchy_in_labels=False,
                 version_id_keys=[],
                 multiple_select="both", copy_fields=(), force_index=False,
                 title="submissions", tag_cols_for_header=None):
        """

        :param formpack: FormPack
        :param form_versions: OrderedDict
        :param lang: string, False (`constants.UNSPECIFIED_TRANSLATION`), or
            None (`constants.UNTRANSLATED`).
        :param group_sep: bool.
        :param hierarchy_in_labels: bool.
        :param version_id_keys: list.
        :param multiple_select: string.
        :param copy_fields: tuple. It can be a mix of strings and
            `schema.fields.*CopyFields` classes (e.g.
            `ValidationStatusCopyField`)
        :param force_index: bool.
        :param title: string
        :param tag_cols_for_header: list
        """

        self.formpack = formpack
        self.lang = lang
        self.group_sep = group_sep
        self.title = title
        self.versions = form_versions
        self.copy_fields = copy_fields
        self.force_index = force_index
        self.herarchy_in_labels = hierarchy_in_labels
        self.version_id_keys = version_id_keys
        self.__r_groups_submission_mapping_values = {}

        if tag_cols_for_header is None:
            tag_cols_for_header = []
        self.tag_cols_for_header = tag_cols_for_header

        # If some fields need to be arbitrarily copied, add them
        # to the first section
        if copy_fields:
            for version in iter(form_versions.values()):
                first_section = next(iter(version.sections.values()))
                for copy_field in copy_fields:
                    if isclass(copy_field):
                        dumb_field = copy_field(section=first_section)
                    else:
                        dumb_field = CopyField(copy_field, section=first_section)
                    first_section.fields[dumb_field.name] = dumb_field

        # this deals with merging all form versions headers and labels
        params = (
            lang, group_sep, hierarchy_in_labels, multiple_select,
            tag_cols_for_header,
        )
        res = self.get_fields_labels_tags_for_all_versions(*params)
        self.sections, self.labels, self.tags = res

        self.reset()

        # Some cache to improve perfs on large datasets
        self._row_cache = {}
        self._empty_row = {}

        for section_name, fields in self.sections.items():
            self._row_cache[section_name] = OrderedDict.fromkeys(fields, '')
            self._empty_row[section_name] = dict(self._row_cache[section_name])