This resolves #1589. It updates the MRO for PyProxy: now `proxy.destroy` always refers to the method PyProxy class method that destroys the proxy, `proxy.$destroy` refers to an attribute or method on the proxied Python object. Similarly, `proxy.get` refers to the `PyProxy.get` method if `type(proxy)` has a `__getitem__` method. Otherwise, it refers to an attribute or method on the proxied object. To unambigiously look up `get` on the proxied object, use `proxy.$get`.

The docs should be updated to explain this.
ENH Use leading $ to distinguish shadowed PyProxy methods. This resolves #1589. It updates the MRO for PyProxy: now `proxy.destroy` always refers to the method PyProxy class method that destroys the proxy, `proxy.$destroy` refers to an attribute or method on the proxied Python object. Similarly, `proxy.get` refers to the `PyProxy.get` method if `type(proxy)` has a `__getitem__` method. Otherwise, it refers to an attribute or method on the proxied object. To unambigiously look up `get` on the proxied object, use `proxy.$get`.

The docs should be updated to explain this.
from pyodide_build.testing import set_webdriver_script_timeout


class _MockDriver:
    def set_script_timeout(self, value):
        self._timeout = value


class _MockSelenium:
    script_timeout = 2
    driver = _MockDriver()


def test_set_webdriver_script_timeout():
    selenium = _MockSelenium()
    assert not hasattr(selenium.driver, "_timeout")
    with set_webdriver_script_timeout(selenium, script_timeout=10):
        assert selenium.driver._timeout == 10
    assert selenium.driver._timeout == 2

from pyodide_build.testing import set_webdriver_script_timeout


class _MockDriver:
    def set_script_timeout(self, value):
        self._timeout = value


class _MockSelenium:
    script_timeout = 2
    driver = _MockDriver()


def test_set_webdriver_script_timeout():
    selenium = _MockSelenium()
    assert not hasattr(selenium.driver, "_timeout")
    with set_webdriver_script_timeout(selenium, script_timeout=10):
        assert selenium.driver._timeout == 10
    assert selenium.driver._timeout == 2
