Depending on the method of a sub parameter object is broken
maximlt opened this issue · 0 comments
maximlt commented
The hvPlot explorer can no longer be instantiated when using Param from the current main branch. Here's a MRE together with the traceback:
import param
class Controls(param.Parameterized):
explorer = param.ClassSelector(class_=object)
xlim = param.Range()
@param.depends('explorer.xlim', watch=True)
def _update_ranges(self):
print('Controls._update_ranges')
class Explorer(param.Parameterized):
controls = param.ClassSelector(class_=Controls)
x = param.Selector(objects=['a', 'b'])
def __init__(self, **params):
super().__init__(**params)
self.controls = Controls(explorer=self)
@param.depends('x')
def xlim(self):
print('Explorer.xlim')
Explorer()
Traceback:
Traceback (most recent call last):
File ".mltmess/dependsmethod2.py", line 28, in <module>
explorer = Explorer()
File ".mltmess/dependsmethod2.py", line 22, in __init__
self.controls = Controls(explorer=self)
File "/Users/mliquet/dev/param/param/parameterized.py", line 3371, in __init__
self.param._update_deps(init=True)
File "/Users/mliquet/dev/param/param/parameterized.py", line 1869, in _update_deps
for dep in _resolve_mcs_deps(obj, [], [ddep]):
File "/Users/mliquet/dev/param/param/parameterized.py", line 651, in _resolve_mcs_deps
subresolved, _ = obj.param._spec_to_obj(dep.spec, intermediate=intermediate)
File "/Users/mliquet/dev/param/param/parameterized.py", line 2564, in _spec_to_obj
raise AttributeError(f"Attribute {attr!r} could not be resolved on {src}.")
AttributeError: Attribute 'xlim' could not be resolved on <Explorer Explorer00002>.