def test_custom_lookup_ns_fallback(self): class TestElement1(etree.ElementBase): FIND_ME = "custom" class TestElement2(etree.ElementBase): FIND_ME = "nsclasses" class MyLookup(etree.CustomElementClassLookup): def lookup(self, t, d, ns, name): if name == 'c1': return TestElement1 lookup = etree.ElementNamespaceClassLookup( MyLookup() ) etree.set_element_class_lookup(lookup) ns = lookup.get_namespace("otherNS") ns[None] = TestElement2 root = etree.XML(xml_str) self.assertFalse(hasattr(root, 'FIND_ME')) self.assertEqual(root[0].FIND_ME, TestElement1.FIND_ME) self.assertFalse(hasattr(root[0][1], 'FIND_ME')) self.assertEqual(root[0][-1].FIND_ME, TestElement2.FIND_ME)
def test_custom_lookup_ns_fallback(self): class TestElement1(etree.ElementBase): FIND_ME = "custom" class TestElement2(etree.ElementBase): FIND_ME = "nsclasses" class MyLookup(etree.CustomElementClassLookup): def lookup(self, t, d, ns, name): if name == 'c1': return TestElement1 lookup = etree.ElementNamespaceClassLookup( MyLookup() ) etree.set_element_class_lookup(lookup) ns = lookup.get_namespace("otherNS") ns[None] = TestElement2 root = etree.XML(xml_str) self.assertFalse(hasattr(root, 'FIND_ME')) self.assertEquals(root[0].FIND_ME, TestElement1.FIND_ME) self.assertFalse(hasattr(root[0][1], 'FIND_ME')) self.assertEquals(root[0][-1].FIND_ME, TestElement2.FIND_ME)
def test_attribute_based_lookup(self): class TestElement(etree.ElementBase): FIND_ME = "attribute_based" class_dict = {"A1": TestElement} lookup = etree.AttributeBasedElementClassLookup("a1", class_dict) etree.set_element_class_lookup(lookup) root = etree.XML(xml_str) self.assertFalse(hasattr(root, 'FIND_ME')) self.assertEqual(root[0].FIND_ME, TestElement.FIND_ME) self.assertFalse(hasattr(root[0][0], 'FIND_ME'))
def test_attribute_based_lookup(self): class TestElement(etree.ElementBase): FIND_ME = "attribute_based" class_dict = {"A1": TestElement} lookup = etree.AttributeBasedElementClassLookup("a1", class_dict) etree.set_element_class_lookup(lookup) root = etree.XML(xml_str) self.assertFalse(hasattr(root, "FIND_ME")) self.assertEquals(root[0].FIND_ME, TestElement.FIND_ME) self.assertFalse(hasattr(root[0][0], "FIND_ME"))
def test_namespace_lookup(self): class TestElement(etree.ElementBase): FIND_ME = "namespace class" lookup = etree.ElementNamespaceClassLookup() etree.set_element_class_lookup(lookup) ns = lookup.get_namespace("myNS") ns[None] = TestElement root = etree.XML(xml_str) self.assertEquals(root.FIND_ME, TestElement.FIND_ME) self.assertEquals(root[0].FIND_ME, TestElement.FIND_ME) self.assertFalse(hasattr(root[0][-1], "FIND_ME"))
def test_namespace_lookup(self): class TestElement(etree.ElementBase): FIND_ME = "namespace class" lookup = etree.ElementNamespaceClassLookup() etree.set_element_class_lookup(lookup) ns = lookup.get_namespace("myNS") ns[None] = TestElement root = etree.XML(xml_str) self.assertEqual(root.FIND_ME, TestElement.FIND_ME) self.assertEqual(root[0].FIND_ME, TestElement.FIND_ME) self.assertFalse(hasattr(root[0][-1], 'FIND_ME'))
def test_custom_lookup(self): class TestElement(etree.ElementBase): FIND_ME = "custom" class MyLookup(etree.CustomElementClassLookup): def lookup(self, t, d, ns, name): if name == "c1": return TestElement etree.set_element_class_lookup(MyLookup()) root = etree.XML(xml_str) self.assertFalse(hasattr(root, "FIND_ME")) self.assertEquals(root[0].FIND_ME, TestElement.FIND_ME) self.assertFalse(hasattr(root[0][1], "FIND_ME"))
def test_custom_lookup(self): class TestElement(etree.ElementBase): FIND_ME = "custom" class MyLookup(etree.CustomElementClassLookup): def lookup(self, t, d, ns, name): if name == 'c1': return TestElement etree.set_element_class_lookup(MyLookup()) root = etree.XML(xml_str) self.assertFalse(hasattr(root, 'FIND_ME')) self.assertEqual(root[0].FIND_ME, TestElement.FIND_ME) self.assertFalse(hasattr(root[0][1], 'FIND_ME'))
def test_parser_based_lookup(self): class TestElement(etree.ElementBase): FIND_ME = "parser_based" lookup = etree.ParserBasedElementClassLookup() etree.set_element_class_lookup(lookup) class MyLookup(etree.CustomElementClassLookup): def lookup(self, t, d, ns, name): return TestElement parser = etree.XMLParser() parser.set_element_class_lookup(MyLookup()) root = etree.parse(BytesIO(xml_str), parser).getroot() self.assertEquals(root.FIND_ME, TestElement.FIND_ME) self.assertEquals(root[0].FIND_ME, TestElement.FIND_ME) root = etree.parse(BytesIO(xml_str)).getroot() self.assertFalse(hasattr(root, "FIND_ME")) self.assertFalse(hasattr(root[0], "FIND_ME"))
def test_parser_based_lookup(self): class TestElement(etree.ElementBase): FIND_ME = "parser_based" lookup = etree.ParserBasedElementClassLookup() etree.set_element_class_lookup(lookup) class MyLookup(etree.CustomElementClassLookup): def lookup(self, t, d, ns, name): return TestElement parser = etree.XMLParser() parser.set_element_class_lookup(MyLookup()) root = etree.parse(BytesIO(xml_str), parser).getroot() self.assertEqual(root.FIND_ME, TestElement.FIND_ME) self.assertEqual(root[0].FIND_ME, TestElement.FIND_ME) root = etree.parse(BytesIO(xml_str)).getroot() self.assertFalse(hasattr(root, 'FIND_ME')) self.assertFalse(hasattr(root[0], 'FIND_ME'))
def tearDown(self): etree.set_element_class_lookup() super(ClassLookupTestCase, self).tearDown()