code: def test_clone(self) -> None:
      r = resources.Resources(mode="server-dev")
      assert r.mode == "server"
      assert r.dev is True
      assert r.components == [
          "bokeh",
          "bokeh-gl",
          "bokeh-widgets",
          "bokeh-tables",
          "bokeh-mathjax",
      ]
  
      c = r.clone(components=["bokeh", "bokeh-gl"])
      assert c.mode == "server"
      assert c.dev is True
      assert c.components == ["bokeh", "bokeh-gl"]
  
imports: from __future__ import annotations
  import pytest
  import os
  import re
  import subprocess
  import sys
  import bs4
  from packaging.version import Version
  import bokeh.util.version
  from bokeh.models import Model
  from bokeh.resources import RuntimeMessage, _get_cdn_urls
  from bokeh.settings import LogLevel, settings
  import bokeh.resources
label_desc: Use image node_id 2 for calling the TestResources obj's underlying member method code with example usage: obj.test_clone() without return types