def parseExtensionArgs(self, ax_args): """Parse attribute exchange key/value arguments into this object. @param ax_args: The attribute exchange fetch_response arguments, with namespacing removed. @type ax_args: Dict[six.text_type, six.text_type] @returns: None @raises ValueError: If the message has bad values for particular fields @raises KeyError: If the namespace mapping is bad or required arguments are missing """ self._checkMode(ax_args) aliases = NamespaceMap() for key, value in six.iteritems(ax_args): if key.startswith('type.'): type_uri = value alias = key[5:] checkAlias(alias) aliases.addAlias(type_uri, alias) for type_uri, alias in aliases.items(): try: count_s = ax_args['count.' + alias] except KeyError: value = ax_args['value.' + alias] if value == '': values = [] else: values = [value] else: count = int(count_s) values = [] for i in range(1, count + 1): value_key = 'value.%s.%d' % (alias, i) value = ax_args[value_key] values.append(value) self.data[type_uri] = values
def test_iteration(self): nsm = NamespaceMap() uripat = 'http://example.com/foo%r' nsm.add(uripat % 0) for n in range(1, 23): self.assertIn(uripat % (n - 1), nsm) self.assertTrue(nsm.isDefined(uripat % (n - 1))) nsm.add(uripat % n) for (uri, alias) in nsm.items(): self.assertEqual(uri[22:], alias[3:]) for (uri, alias) in nsm.iteritems(): self.assertEqual(uri[22:], alias[3:]) self.assertEqual(len(tuple(nsm.iterAliases())), 23) self.assertEqual(len(tuple(nsm.iterNamespaceURIs())), 23)