Stephan Richter wrote:
On Monday 15 January 2007 14:25, Sidnei da Silva wrote:
  'We've tried to look up an adapter for (ISomething, ITheOther) but
none was found'
  'Found an adapter for IFoo, which is a base class for the IBar
interface requested. No adapter has been found for the most-specific
interface IBar'


My major concern is speed here.

It's a bit early to have that concern, we haven't even come up with a strategy yet ;).

  "Premature optimization is the root of all evil" -- Donald E. Knuth

Any debug handling will make the registry slower; I am using adapters very heavily in my code and any slow-down of one lookup would be multiplied many times.

There are certainly ways in Python to have debug code in an application that won't be run in production mode, e.g.:

  if __debug__:
      # do expensive logging call here, or whatever

Code like this won't be run with python -O (which is what you'd obviously use in production).

I wonder whether a different approach could be taken. The APIDOC code does already a registration analysis. Maybe we can use the registrations in a away that they simulate the adapter registry. Thus you could provide APIDOC (via the Web UI or Python) with a component or instance and it tells you how it tries to look up the adapter. Clearly that would be much slower, but okay for inspection.

Sounds good. I like the explainAdapter() suggestion.

-- -- Professional Zope documentation and training
2nd edition of Web Component Development with Zope 3 is now shipping!
Zope3-dev mailing list

Reply via email to