diff --git a/etree_import_in_tests.patch b/etree_import_in_tests.patch
index e7ffd34..c8af34c 100644
--- a/etree_import_in_tests.patch
+++ b/etree_import_in_tests.patch
@@ -1,26 +1,22 @@
-diff --git a/tests/test_documents.py b/tests/test_documents.py
-index 6c616fe..bd5d8c5 100644
--- a/tests/test_documents.py
+++ b/tests/test_documents.py
@@ -16,7 +16,6 @@ import io
- import pathlib
- import tempfile
- from decimal import Decimal
--from xml.etree import ElementTree
-
- try:
- import lxml.etree as lxml_etree
-@@ -27,7 +26,7 @@ from xmlschema import XMLSchema10, XMLSchema11, XmlDocument, \
- XMLResourceError, XMLSchemaValidationError, XMLSchemaDecodeError, \
- to_json, from_json
-
--from xmlschema.etree import is_etree_element, is_etree_document
-+from xmlschema.etree import ElementTree, is_etree_element, is_etree_document
- from xmlschema.namespaces import XSD_NAMESPACE, XSI_NAMESPACE
- from xmlschema.resources import XMLResource
- from xmlschema.documents import get_context
-diff --git a/tests/test_etree.py b/tests/test_etree.py
-index d16c793..96aba4b 100644
+ import pathlib
+ import tempfile
+ from decimal import Decimal
+-from xml.etree import ElementTree
+
+ try:
+ import lxml.etree as lxml_etree
+@@ -27,7 +26,7 @@ from xmlschema import XMLSchema10, XMLSc
+ XMLResourceError, XMLSchemaValidationError, XMLSchemaDecodeError, \
+ to_json, from_json
+
+-from xmlschema.etree import is_etree_element, is_etree_document
++from xmlschema.etree import ElementTree, is_etree_element, is_etree_document
+ from xmlschema.namespaces import XSD_NAMESPACE, XSI_NAMESPACE
+ from xmlschema.resources import XMLResource
+ from xmlschema.documents import get_context
--- a/tests/test_etree.py
+++ b/tests/test_etree.py
@@ -11,10 +11,11 @@
@@ -289,7 +285,7 @@ index d16c793..96aba4b 100644
(root, '/'), (root[0], '/b1'), (root[0][0], '/b1/c1'),
(root[0][1], '/b1/c2'), (root[1], '/b2'), (root[2], '/b3'),
(root[2][0], '/b3/c3')
-@@ -203,104 +201,104 @@ class TestElementTree(unittest.TestCase):
+@@ -203,104 +201,104 @@ class TestElementTree(unittest.TestCase)
def test_etree_getpath(self):
root = ElementTree.XML('')
@@ -298,15 +294,16 @@ index d16c793..96aba4b 100644
- self.assertEqual(etree.etree_getpath(root[2][0], root), './b3/c3')
- self.assertEqual(etree.etree_getpath(root[0], root, parent_path=True), '.')
- self.assertEqual(etree.etree_getpath(root[2][0], root, parent_path=True), './b3')
+-
+- self.assertIsNone(etree.etree_getpath(root, root[0]))
+- self.assertIsNone(etree.etree_getpath(root[0], root[1]))
+- self.assertIsNone(etree.etree_getpath(root, root, parent_path=True))
+ self.assertEqual(etree_getpath(root, root), '.')
+ self.assertEqual(etree_getpath(root[0], root), './b1')
+ self.assertEqual(etree_getpath(root[2][0], root), './b3/c3')
+ self.assertEqual(etree_getpath(root[0], root, parent_path=True), '.')
+ self.assertEqual(etree_getpath(root[2][0], root, parent_path=True), './b3')
-
-- self.assertIsNone(etree.etree_getpath(root, root[0]))
-- self.assertIsNone(etree.etree_getpath(root[0], root[1]))
-- self.assertIsNone(etree.etree_getpath(root, root, parent_path=True))
++
+ self.assertIsNone(etree_getpath(root, root[0]))
+ self.assertIsNone(etree_getpath(root[0], root[1]))
+ self.assertIsNone(etree_getpath(root, root, parent_path=True))
@@ -427,7 +424,7 @@ index d16c793..96aba4b 100644
self.assertIn("tails differ: None != 'tail'", str(ctx.exception))
def test_iter_location_hints(self):
-@@ -309,7 +307,7 @@ class TestElementTree(unittest.TestCase):
+@@ -309,7 +307,7 @@ class TestElementTree(unittest.TestCase)
xsi:schemaLocation="http://example.com/xmlschema/ns-A import-case4a.xsd"/>"""
)
self.assertListEqual(
@@ -436,7 +433,7 @@ index d16c793..96aba4b 100644
[('http://example.com/xmlschema/ns-A', 'import-case4a.xsd')]
)
elem = ElementTree.XML(
-@@ -317,16 +315,16 @@ class TestElementTree(unittest.TestCase):
+@@ -317,16 +315,16 @@ class TestElementTree(unittest.TestCase)
xsi:noNamespaceSchemaLocation="schema.xsd"/>"""
)
self.assertListEqual(
@@ -456,8 +453,6 @@ index d16c793..96aba4b 100644
self.assertListEqual([e.tag for e in root.iter()], ['a', 'b1', 'b2', 'b3'])
-diff --git a/tests/test_helpers.py b/tests/test_helpers.py
-index a7148ca..29b93ff 100644
--- a/tests/test_helpers.py
+++ b/tests/test_helpers.py
@@ -12,11 +12,10 @@
@@ -473,32 +468,49 @@ index a7148ca..29b93ff 100644
from xmlschema.qnames import XSD_SCHEMA, XSD_ELEMENT, XSD_SIMPLE_TYPE, XSD_ANNOTATION
from xmlschema.helpers import get_xsd_annotation, get_xsd_derivation_attribute, \
get_xsd_form_attribute, raw_xml_encode, count_digits, strictly_equal, \
-diff --git a/tests/test_resources.py b/tests/test_resources.py
-index 8fd2073..546bbdb 100644
--- a/tests/test_resources.py
+++ b/tests/test_resources.py
-@@ -19,7 +19,6 @@ from urllib.error import URLError
- from urllib.request import urlopen
- from urllib.parse import urlsplit, uses_relative
- from pathlib import Path, PureWindowsPath, PurePath
--from xml.etree import ElementTree
-
- try:
- import lxml.etree as lxml_etree
-@@ -28,7 +27,7 @@ except ImportError:
-
- from xmlschema import fetch_namespaces, fetch_resource, normalize_url, \
- fetch_schema, fetch_schema_locations, XMLResource, XMLResourceError, XMLSchema
--from xmlschema.etree import etree_element, py_etree_element, is_etree_element
-+from xmlschema.etree import ElementTree, etree_element, py_etree_element, is_etree_element
- from xmlschema.namespaces import XSD_NAMESPACE
- from xmlschema.resources import is_url, is_local_url, is_remote_url, \
- url_path_is_file, normalize_locations, LazySelector
-diff --git a/tests/test_w3c_suite.py b/tests/test_w3c_suite.py
-index 6df61d2..964ce08 100644
+@@ -19,19 +19,22 @@ from urllib.error import URLError
+ from urllib.request import urlopen
+ from urllib.parse import urlsplit, uses_relative
+ from pathlib import Path, PureWindowsPath, PurePath
+-from xml.etree import ElementTree
+
+ try:
+ import lxml.etree as lxml_etree
+ except ImportError:
+ lxml_etree = None
+
+-from xmlschema import fetch_namespaces, fetch_resource, normalize_url, \
+- fetch_schema, fetch_schema_locations, XMLResource, XMLResourceError, XMLSchema
+-from xmlschema.etree import etree_element, py_etree_element, is_etree_element
++from xmlschema import XMLResource, XMLSchema
++from xmlschema.etree import (ElementTree, etree_element,
++ py_etree_element, is_etree_element)
+ from xmlschema.namespaces import XSD_NAMESPACE
+-from xmlschema.resources import is_url, is_local_url, is_remote_url, \
+- url_path_is_file, normalize_locations, LazySelector
++from xmlschema.exceptions import XMLResourceError
++from xmlschema.resources import (fetch_namespaces, fetch_resource,
++ fetch_schema, fetch_schema_locations,
++ is_url, is_local_url, is_remote_url,
++ url_path_is_file, normalize_locations,
++ normalize_url, LazySelector)
+ from xmlschema.testing import SKIP_REMOTE_TESTS
+
+
+@@ -1076,7 +1079,7 @@ class TestResources(unittest.TestCase):
+ self.assertTrue(isinstance(vh_schema, XMLSchema))
+
+ xsd_source = """
+-
+
+ """.format(self.vh_xsd_file)
--- a/tests/test_w3c_suite.py
+++ b/tests/test_w3c_suite.py
-@@ -14,7 +14,6 @@ This script runs tests concerning the W3C XML Schema 1.1 test suite.
+@@ -14,7 +14,6 @@ This script runs tests concerning the W3
import unittest
import argparse
import os.path
@@ -514,27 +526,59 @@ index 6df61d2..964ce08 100644
TEST_SUITE_NAMESPACE = "http://www.w3.org/XML/2004/xml-schema-test-suite/"
XLINK_NAMESPACE = "http://www.w3.org/1999/xlink"
-diff --git a/tests/test_wsdl.py b/tests/test_wsdl.py
-index c480156..65a5209 100644
--- a/tests/test_wsdl.py
+++ b/tests/test_wsdl.py
@@ -14,13 +14,11 @@ import unittest
- import os
-
- from xmlschema import XMLSchemaValidationError, XMLSchema10, XMLSchema11
--from xmlschema.etree import ParseError
-+from xmlschema.etree import ElementTree, ParseError
- from xmlschema.wsdl import WsdlParseError, WsdlComponent, WsdlMessage, \
- WsdlPortType, WsdlOperation, WsdlBinding, WsdlService, Wsdl11Document, \
- WsdlInput, SoapHeader
-
--from xml.etree import ElementTree
--
-
- TEST_CASES_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'test_cases/')
-
-diff --git a/tests/test_xpath.py b/tests/test_xpath.py
-index e72b221..eb5acad 100644
+ import os
+
+ from xmlschema import XMLSchemaValidationError, XMLSchema10, XMLSchema11
+-from xmlschema.etree import ParseError
++from xmlschema.etree import ElementTree, ParseError
+ from xmlschema.wsdl import WsdlParseError, WsdlComponent, WsdlMessage, \
+ WsdlPortType, WsdlOperation, WsdlBinding, WsdlService, Wsdl11Document, \
+ WsdlInput, SoapHeader
+
+-from xml.etree import ElementTree
+-
+
+ TEST_CASES_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'test_cases/')
+
+@@ -97,7 +95,7 @@ WSDL_DOCUMENT_EXAMPLE = """
+
+
+
+@@ -403,7 +401,7 @@ class TestWsdlDocuments(unittest.TestCas
+
+ def test_wsdl_document_invalid_imports(self):
+ wsdl_template = """
+-
+
+ """
+@@ -427,7 +425,7 @@ class TestWsdlDocuments(unittest.TestCas
+ self.assertIn('no element found', str(ctx.exception))
+
+ wsdl_template = """
+-
+
+@@ -439,7 +437,7 @@ class TestWsdlDocuments(unittest.TestCas
+ self.assertIn('namespace to import must be different', str(ctx.exception))
+
+ wsdl_template = """
+-
+
--- a/tests/test_xpath.py
+++ b/tests/test_xpath.py
@@ -12,12 +12,12 @@
@@ -551,8 +595,6 @@ index e72b221..eb5acad 100644
from xmlschema.xpath import XMLSchemaProxy, iter_schema_nodes
from xmlschema.validators import XsdAtomic, XsdAtomicRestriction
-diff --git a/tests/validation/test_decoding.py b/tests/validation/test_decoding.py
-index 908e6bd..ae7742a 100644
--- a/tests/validation/test_decoding.py
+++ b/tests/validation/test_decoding.py
@@ -12,7 +12,6 @@ import unittest
@@ -571,8 +613,6 @@ index 908e6bd..ae7742a 100644
from xmlschema.converters import UnorderedConverter
from xmlschema.validators import XMLSchema11
from xmlschema.testing import XsdValidatorTestCase
-diff --git a/tests/validation/test_validation.py b/tests/validation/test_validation.py
-index be8ce36..b104973 100644
--- a/tests/validation/test_validation.py
+++ b/tests/validation/test_validation.py
@@ -11,7 +11,6 @@
@@ -591,8 +631,6 @@ index be8ce36..b104973 100644
from xmlschema.validators import XMLSchema11
from xmlschema.testing import XsdValidatorTestCase
-diff --git a/tests/validators/test_exceptions.py b/tests/validators/test_exceptions.py
-index c23f1d6..86c5635 100644
--- a/tests/validators/test_exceptions.py
+++ b/tests/validators/test_exceptions.py
@@ -11,10 +11,10 @@
@@ -607,8 +645,6 @@ index c23f1d6..86c5635 100644
from xmlschema.validators.exceptions import XMLSchemaValidatorError, \
XMLSchemaNotBuiltError, XMLSchemaModelDepthError, XMLSchemaValidationError, \
XMLSchemaChildrenValidationError
-diff --git a/tests/validators/test_notations.py b/tests/validators/test_notations.py
-index 0b48c01..a14baa8 100644
--- a/tests/validators/test_notations.py
+++ b/tests/validators/test_notations.py
@@ -9,9 +9,9 @@
@@ -622,8 +658,6 @@ index 0b48c01..a14baa8 100644
from xmlschema.qnames import XSD_NOTATION
from xmlschema.validators import XMLSchema10, XMLSchema11, XsdNotation
-diff --git a/tests/validators/test_xsdbase.py b/tests/validators/test_xsdbase.py
-index f5791b4..6182a83 100644
--- a/tests/validators/test_xsdbase.py
+++ b/tests/validators/test_xsdbase.py
@@ -12,10 +12,10 @@ import unittest
@@ -638,7 +672,7 @@ index f5791b4..6182a83 100644
from xmlschema.qnames import XSD_ELEMENT, XSD_ANNOTATION, XSD_ANY_TYPE
from xmlschema.namespaces import XSD_NAMESPACE
-@@ -766,7 +766,6 @@ class TestParticleMixin(unittest.TestCase):
+@@ -766,7 +766,6 @@ class TestParticleMixin(unittest.TestCas
if __name__ == '__main__':