holoviz/param

Depending on the method of a sub parameter object is broken

maximlt opened this issue · 0 comments

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>.