diff --git a/.gitignore b/.gitignore
index 7fe07b7..bc6e42c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,5 +11,6 @@ develop-eggs/
 eggs/
 parts/
 .coverage
+.coverage.*
 htmlcov/
 docs/_build/
diff --git a/CHANGES.rst b/CHANGES.rst
index 79076a8..c99bcb4 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -2,10 +2,12 @@
  Changes
 =========
 
-4.4 (unreleased)
-================
+4.3.1 (unreleased)
+==================
 
-- Nothing changed yet.
+- Fix DeprecationWarnings for ``ComponentLookupError`` by
+  importing them from ``zope.interface.interfaces``. See `issue 10
+  <https://github.com/zopefoundation/zope.traversing/issues/10>`_.
 
 
 4.3 (2018-10-05)
diff --git a/setup.py b/setup.py
index 66d0f5c..3d9f59b 100644
--- a/setup.py
+++ b/setup.py
@@ -44,7 +44,7 @@ TESTS_REQUIRE = [
 
 setup(
     name='zope.traversing',
-    version='4.4.dev0',
+    version='4.3.1.dev0',
     url='https://github.com/zopefoundation/zope.traversing',
     license='ZPL 2.1',
     author='Zope Foundation and Contributors',
diff --git a/src/zope/traversing/namespace.py b/src/zope/traversing/namespace.py
index 8cb2527..fdea21a 100644
--- a/src/zope/traversing/namespace.py
+++ b/src/zope/traversing/namespace.py
@@ -67,7 +67,7 @@ import six
 import zope.component
 import zope.interface
 from zope.i18n.interfaces import IModifiableUserPreferredLanguages
-from zope.component.interfaces import ComponentLookupError
+from zope.interface.interfaces import ComponentLookupError
 from zope.interface import providedBy, directlyProvides
 from zope.location.interfaces import LocationError
 from zope.publisher.interfaces.browser import IBrowserSkinType

DeprecationWarning: ComponentLookupError is deprecated
```
zope/traversing/namespace.py:70: DeprecationWarning: ComponentLookupError is deprecated. Import from zope.interface.interfaces
  from zope.component.interfaces import ComponentLookupError
```
diff --git a/src/zope/traversing/browser/tests.py b/src/zope/traversing/browser/tests.py
index 861cb9c..51c58dd 100644
--- a/src/zope/traversing/browser/tests.py
+++ b/src/zope/traversing/browser/tests.py
@@ -73,6 +73,9 @@ class FooLocation(object):
 
 class TestAbsoluteURL(PlacelessSetup, unittest.TestCase):
 
+    assertRaisesRegex = getattr(unittest.TestCase, 'assertRaisesRegex',
+                                getattr(unittest.TestCase, 'assertRaisesRegexp'))
+
     def setUp(self):
         PlacelessSetup.setUp(self)
         from zope.traversing.browser import AbsoluteURL, SiteAbsoluteURL
@@ -306,8 +309,8 @@ class TestAbsoluteURL(PlacelessSetup, unittest.TestCase):
     def test_breadcrumbs_no_parent(self):
 
         view = AbsoluteURL(self, None)
-        with self.assertRaisesRegexp(TypeError,
-                                     "There isn't enough context"):
+        with self.assertRaisesRegex(TypeError,
+                                    "There isn't enough context"):
             view.breadcrumbs()
 
     def test_nameless_context(self):
@@ -343,8 +346,8 @@ class TestAbsoluteURL(PlacelessSetup, unittest.TestCase):
 
         # First the view
         view = AbsoluteURL(context, request)
-        with self.assertRaisesRegexp(TypeError,
-                                     "There isn't enough context"):
+        with self.assertRaisesRegex(TypeError,
+                                    "There isn't enough context"):
             str(view)
 
         self.assertTrue(DummyAbsoluteURL.called)
@@ -352,8 +355,8 @@ class TestAbsoluteURL(PlacelessSetup, unittest.TestCase):
 
         # Now the breadcrumbs
         view = AbsoluteURL(context, request)
-        with self.assertRaisesRegexp(TypeError,
-                                     "There isn't enough context"):
+        with self.assertRaisesRegex(TypeError,
+                                    "There isn't enough context"):
             view.breadcrumbs()
 
         self.assertTrue(DummyAbsoluteURL.called)
diff --git a/src/zope/traversing/tests/test_conveniencefunctions.py b/src/zope/traversing/tests/test_conveniencefunctions.py
index be50c6a..c0b9b6d 100644
--- a/src/zope/traversing/tests/test_conveniencefunctions.py
+++ b/src/zope/traversing/tests/test_conveniencefunctions.py
@@ -384,6 +384,9 @@ class TestStandalone(unittest.TestCase):
     # Unlike TestFunctional, we don't register gobs of
     # adapters, making these tests more self-contained
 
+    assertRaisesRegex = getattr(unittest.TestCase, 'assertRaisesRegex',
+                                getattr(unittest.TestCase, 'assertRaisesRegexp'))
+
     def test_getParent_no_location_info(self):
         from zope.traversing.api import getParent
         test = self
@@ -395,8 +398,8 @@ class TestStandalone(unittest.TestCase):
                 raise TypeError()
 
         context = Context()
-        with self.assertRaisesRegexp(TypeError,
-                                     "Not enough context"):
+        with self.assertRaisesRegex(TypeError,
+                                    "Not enough context"):
             getParent(context)
 
         self.assertTrue(context.called)
diff --git a/src/zope/traversing/tests/test_namespacetrversal.py b/src/zope/traversing/tests/test_namespacetrversal.py
index cfd2e31..5f91195 100644
--- a/src/zope/traversing/tests/test_namespacetrversal.py
+++ b/src/zope/traversing/tests/test_namespacetrversal.py
@@ -123,9 +123,12 @@ class TestView(unittest.TestCase):
 
 class TestVh(unittest.TestCase):
 
+    assertRaisesRegex = getattr(unittest.TestCase, 'assertRaisesRegex',
+                                getattr(unittest.TestCase, 'assertRaisesRegexp'))
+
     def test_invalid_vh(self):
-        with self.assertRaisesRegexp(ValueError,
-                                     'Vhost directive should have the form'):
+        with self.assertRaisesRegex(ValueError,
+                                    'Vhost directive should have the form'):
             namespace.vh(None, None).traverse(u'invalid name', ())
 
 def test_suite():

pip install -e .[test]
parse_log_pytest
pytest
zope.testrunner pytest
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
multipart==1.2.1
packaging @ file:///croot/packaging_1734472117206/work
pluggy @ file:///croot/pluggy_1733169602837/work
pytest @ file:///croot/pytest_1738938843180/work
python-gettext==5.0
pytz==2025.2
six==1.17.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
transaction==5.0
zope.annotation==5.1
zope.browser==3.1
zope.browserresource==5.2
zope.component==6.0
zope.configuration==6.0
zope.contenttype==5.2
zope.deprecation==5.1
zope.event==5.0
zope.exceptions==5.2
zope.hookable==7.0
zope.i18n==5.2
zope.i18nmessageid==7.0
zope.interface==7.2
zope.location==5.1
zope.proxy==6.1
zope.publisher==7.3
zope.schema==7.0.1
zope.security==7.3
zope.tales==6.1
zope.testing==5.1
zope.testrunner==7.2
-e git+https://github.com/zopefoundation/zope.traversing.git@cfaa1fa9f3bed5758b3d8c5a01959bd0ab6295ff#egg=zope.traversing

name: zope.traversing
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - multipart==1.2.1
      - python-gettext==5.0
      - pytz==2025.2
      - six==1.17.0
      - transaction==5.0
      - zope-annotation==5.1
      - zope-browser==3.1
      - zope-browserresource==5.2
      - zope-component==6.0
      - zope-configuration==6.0
      - zope-contenttype==5.2
      - zope-deprecation==5.1
      - zope-event==5.0
      - zope-exceptions==5.2
      - zope-hookable==7.0
      - zope-i18n==5.2
      - zope-i18nmessageid==7.0
      - zope-interface==7.2
      - zope-location==5.1
      - zope-proxy==6.1
      - zope-publisher==7.3
      - zope-schema==7.0.1
      - zope-security==7.3
      - zope-tales==6.1
      - zope-testing==5.1
      - zope-testrunner==7.2
prefix: /opt/conda/envs/zope.traversing

src/zope/traversing/browser/tests.py::TestAbsoluteURL::testAdaptedContext src/zope/traversing/browser/tests.py::TestAbsoluteURL::testBadObject src/zope/traversing/browser/tests.py::TestAbsoluteURL::testBasicContext src/zope/traversing/browser/tests.py::TestAbsoluteURL::testBasicContext_unicode src/zope/traversing/browser/tests.py::TestAbsoluteURL::testNoContext src/zope/traversing/browser/tests.py::TestAbsoluteURL::testNoContextInformation src/zope/traversing/browser/tests.py::TestAbsoluteURL::testParentButNoLocation src/zope/traversing/browser/tests.py::TestAbsoluteURL::testParentTrumpsAdapter src/zope/traversing/browser/tests.py::TestAbsoluteURL::testRetainSkin src/zope/traversing/browser/tests.py::TestAbsoluteURL::testVirtualHosting src/zope/traversing/browser/tests.py::TestAbsoluteURL::testVirtualHostingInFront src/zope/traversing/browser/tests.py::TestAbsoluteURL::testVirtualHostingWithVHElements src/zope/traversing/browser/tests.py::TestAbsoluteURL::testVirtualHostingWithoutContextInformation src/zope/traversing/browser/tests.py::TestAbsoluteURL::test_breadcrumbs_no_parent src/zope/traversing/browser/tests.py::TestAbsoluteURL::test_interface src/zope/traversing/browser/tests.py::TestAbsoluteURL::test_nameless_context src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testCanonicalPath src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetName src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetNameOfRoot src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetParent src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetParentBrokenChain src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetParentFromRoot src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetParentFromUnwrapped src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetParents src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetParentsBrokenChain src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetPath src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetPathOfRoot src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testGetRoot src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testTraverse src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testTraverseFromUnwrapped src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testTraverseName src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::testTraverseNameBadValue src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::test_joinPath src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::test_joinPath_empty_args src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::test_joinPath_normalize src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::test_joinPath_slashes src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::test_normalizePath src/zope/traversing/tests/test_conveniencefunctions.py::TestFunctional::test_traverse_with_default src/zope/traversing/tests/test_conveniencefunctions.py::TestStandalone::test_getParent_no_location_info src/zope/traversing/tests/test_namespacetrversal.py::TestSimpleHandler::test_constructor src/zope/traversing/tests/test_namespacetrversal.py::TestFunctions::test_getResource_not_found src/zope/traversing/tests/test_namespacetrversal.py::TestAcquire::test_excessive_depth_on_path_extension src/zope/traversing/tests/test_namespacetrversal.py::TestEtc::test_traverse_non_site_name src/zope/traversing/tests/test_namespacetrversal.py::TestEtc::test_traverse_site_lookup_error src/zope/traversing/tests/test_namespacetrversal.py::TestEtc::test_traverse_site_no_manager src/zope/traversing/tests/test_namespacetrversal.py::TestEtc::test_traverse_utility src/zope/traversing/tests/test_namespacetrversal.py::TestView::test_not_found src/zope/traversing/tests/test_namespacetrversal.py::TestVh::test_invalid_vh src/zope/traversing/tests/test_namespacetrversal.py::test_suite
setup.py .gitignore CHANGES.rst src/zope/traversing/namespace.py
setup.py .gitignore CHANGES.rst src/zope/traversing/namespace.py