--- src/zope/app/apidoc/component.py (revision 80884) +++ src/zope/app/apidoc/component.py (working copy) @@ -45,22 +45,18 @@ def getRequiredAdapters(iface, withViews=False): """Get adapter registrations where the specified interface is required.""" gsm = getGlobalSiteManager() - for meth in ('registeredAdapters', - 'registeredSubscriptionAdapters', - 'registeredHandlers'): + for reg in _adapterishRegistrations(gsm): + # Ignore adapters that have no required interfaces + if len(reg.required) == 0: + continue + # Ignore views + if not withViews and reg.required[-1].isOrExtends(IRequest): + continue + # Only get the adapters for which this interface is required + for required_iface in reg.required: + if iface.isOrExtends(required_iface): + yield reg - for reg in getattr(gsm, meth)(): - # Ignore adapters that have no required interfaces - if len(reg.required) == 0: - continue - # Ignore views - if not withViews and reg.required[-1].isOrExtends(IRequest): - continue - # Only get the adapters for which this interface is required - for required_iface in reg.required: - if iface.isOrExtends(required_iface): - yield reg -