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