From ad5594ae20e5daf145c5ed63613e38a3903ef01c Mon Sep 17 00:00:00 2001
From: Hanno Schlichting <hanno@hannosch.eu>
Date: Sun, 27 Jun 2010 13:17:07 +0000
Subject: [PATCH] Make the API complete by offering a has_package

---
 doc/CHANGES.rst                       | 5 +++--
 src/OFS/metaconfigure.py              | 4 ++++
 src/OFS/tests/test_registerpackage.py | 6 +++---
 src/Testing/ZopeTestCase/ZopeLite.py  | 4 ++--
 4 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/doc/CHANGES.rst b/doc/CHANGES.rst
index 1b5d8d41c..99ab6f4fa 100644
--- a/doc/CHANGES.rst
+++ b/doc/CHANGES.rst
@@ -18,8 +18,9 @@ Bugs Fixed
 Features Added
 ++++++++++++++
 
-- Added a new API to ``OFS.metaconfigure.get_registered_packages`` which
-  replaces any direct access to ``Products._registered_packages``.
+- Added a new API's ``get_registered_packages, set_registered_packages`` to
+  ``OFS.metaconfigure`` which replace any direct access to
+  ``Products._registered_packages``.
 
 - Changed product install so it won't write persistent changes only to abort
   them. Instead we don't make any database changes in the first place.
diff --git a/src/OFS/metaconfigure.py b/src/OFS/metaconfigure.py
index 7e31a99ba..ba01b0196 100644
--- a/src/OFS/metaconfigure.py
+++ b/src/OFS/metaconfigure.py
@@ -82,6 +82,10 @@ def set_registered_packages(packages):
     _registered_packages = packages
 
 
+def has_package(package):
+    return package in [m.__name__ for m in get_registered_packages()]
+
+
 def _registerPackage(module_, init_func=None):
     """Registers the given python package as a Zope 2 style product
     """
diff --git a/src/OFS/tests/test_registerpackage.py b/src/OFS/tests/test_registerpackage.py
index 0c4374f75..bcf399625 100644
--- a/src/OFS/tests/test_registerpackage.py
+++ b/src/OFS/tests/test_registerpackage.py
@@ -58,9 +58,9 @@ def test_registerPackage():
 
     Make sure it is registered:
 
-      >>> from OFS.metaconfigure import get_registered_packages
-      >>> [x.__name__ for x in get_registered_packages()]
-      ['pythonproduct2']
+      >>> from OFS.metaconfigure import has_package
+      >>> has_package('pythonproduct2')
+      True
 
     Clean up:
 
diff --git a/src/Testing/ZopeTestCase/ZopeLite.py b/src/Testing/ZopeTestCase/ZopeLite.py
index 350b62f76..b8e710fdf 100644
--- a/src/Testing/ZopeTestCase/ZopeLite.py
+++ b/src/Testing/ZopeTestCase/ZopeLite.py
@@ -191,8 +191,8 @@ def _installProduct(name, quiet=0):
 
 def hasPackage(name):
     '''Checks if a package has been registered with five:registerPackage.'''
-    from OFS.metaconfigure import get_registered_packages
-    return name in [m.__name__ for m in get_registered_packages()]
+    from OFS.metaconfigure import has_package
+    return has_package(name)
 
 def installPackage(name, quiet=0):
     '''Installs a registered Python package.'''
-- 
2.30.9