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', ...)])")
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])
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)
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')
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])
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])
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', ...)])")
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])