A way to set default_tools without having to reference each individual element?

To trigger default_tools; need to reference each element in the overlay.
out.opts("Curve", default_tools=[]).opts("Scatter", default_tools=[])
If plot gets more complicated, that’s a lot of elements to reference. Is there a way to loop through it?

import xarray as xr
import holoviews as hv
from holoviews.plotting.links import RangeToolLink
hv.extension("bokeh")

ds = xr.tutorial.open_dataset("air_temperature").isel(lat=0, lon=0)

src = hv.Curve(ds, "time", "air").opts(width=800, height=100, yaxis=None) * hv.Scatter(ds, "time", "air").opts(width=800, height=100, yaxis=None)
tgt = src.relabel("Air").opts(height=500)

link = RangeToolLink(src, tgt)
rangex = hv.streams.RangeX(source=tgt, x_range=tgt.range("x"))
out = hv.Layout([tgt, src]).cols(1).opts("Layout", shared_axes=False, merge_tools=False)
out.opts("Curve", default_tools=[]).opts("Scatter", default_tools=[])

rangex

Don’t know what the intended functions might be, but here is one way:

h = hv.Curve(([.1,.2], [-.2,.4]))*hv.Scatter(([.1,.2], [-.2,.4]))
hv.Overlay( [ h.get('.'.join(item[0])).opts(default_tools=[]) for item in h.items() ])

Personally, I’d prefer using

no_tools= dict( default_tools=[])
h.opts({
  "Curve": no_tools,
  "Scatter": no_tools
})