lazr-developers team mailing list archive
-
lazr-developers team
-
Mailing list archive
-
Message #00025
[Bug 319716] [NEW] Cannot delegate multiple interfaces on a given class
Public bug reported:
If delegates is used twice in a class definition, things explode:
$ ./test.py -v test_branchmergeproposal -t ReviewDiffJob
Traceback (most recent call last):
File "./test.py", line 175, in ?
from canonical.testing import profiled
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/testing/__init__.py", line 67, in ?
from canonical.testing.layers import *
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/testing/layers.py", line 87, in ?
from canonical.launchpad.testing.tests.googleserviceharness import (
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/testing/__init__.py", line 16, in ?
from canonical.launchpad.testing.factory import *
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/testing/factory.py", line 31, in ?
from canonical.launchpad.database.message import Message, MessageChunk
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/database/__init__.py", line 17, in ?
from canonical.launchpad.database.product import *
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/database/product.py", line 32, in ?
from canonical.launchpad.database.branch import BranchSet
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/database/branch.py", line 70, in ?
from canonical.launchpad.database.branchmergeproposal import (
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/database/branchmergeproposal.py", line 799, in ?
class ReviewDiffJob(object):
File "/home/abentley/launchpad/trunk/lib/zope/interface/advice.py", line 132, in advise
return callback(newClass)
File "/usr/lib/python2.4/site-packages/PIL/__init__.py", line 77, in _delegates_advice
KeyError: '__delegates_advice_data__'
There should be a way to delegate multiple interfaces. Ideally, by
invoking delegates twice in a class definition, so that varying contexts
can be used.
It would also be nice to be able to delegate all interfaces provided by
a context object, also. This would help when using delegates as a form
of pseudo-inheritance.
** Affects: lazr.delegates
Importance: Undecided
Status: New
--
Cannot delegate multiple interfaces on a given class
https://bugs.launchpad.net/bugs/319716
You received this bug notification because you are a member of LAZR
Developers, which is the registrant for lazr.delegates.
Status in lazr.delegates: New
Bug description:
If delegates is used twice in a class definition, things explode:
$ ./test.py -v test_branchmergeproposal -t ReviewDiffJob
Traceback (most recent call last):
File "./test.py", line 175, in ?
from canonical.testing import profiled
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/testing/__init__.py", line 67, in ?
from canonical.testing.layers import *
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/testing/layers.py", line 87, in ?
from canonical.launchpad.testing.tests.googleserviceharness import (
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/testing/__init__.py", line 16, in ?
from canonical.launchpad.testing.factory import *
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/testing/factory.py", line 31, in ?
from canonical.launchpad.database.message import Message, MessageChunk
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/database/__init__.py", line 17, in ?
from canonical.launchpad.database.product import *
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/database/product.py", line 32, in ?
from canonical.launchpad.database.branch import BranchSet
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/database/branch.py", line 70, in ?
from canonical.launchpad.database.branchmergeproposal import (
File "/home/abentley/launchpad/web-bmp-diffs/importfascist.py", line 155, in import_fascist
module = original_import(name, globals, locals, fromlist)
File "/home/abentley/launchpad/web-bmp-diffs/lib/canonical/launchpad/database/branchmergeproposal.py", line 799, in ?
class ReviewDiffJob(object):
File "/home/abentley/launchpad/trunk/lib/zope/interface/advice.py", line 132, in advise
return callback(newClass)
File "/usr/lib/python2.4/site-packages/PIL/__init__.py", line 77, in _delegates_advice
KeyError: '__delegates_advice_data__'
There should be a way to delegate multiple interfaces. Ideally, by invoking delegates twice in a class definition, so that varying contexts can be used.
It would also be nice to be able to delegate all interfaces provided by a context object, also. This would help when using delegates as a form of pseudo-inheritance.
Follow ups
References