We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
ga: `DeprecationWarning`: SelectableGroups dict interface is deprecated. Use select.
I see the following deprecation warning in our tests:
```cmd
tests/vegalite/v5/tests/test_display.py::test_check_renderer_options
[51](https://github.com/altair-viz/altair/actions/runs/4210647283/jobs/7308470442#step:5:52)
  /home/runner/work/altair/altair/altair/utils/plugin_registry.py:124: 
DeprecationWarning: SelectableGroups dict interface is deprecated. Use select.

[52](https://github.com/altair-viz/altair/actions/runs/4210647283/jobs/7308470442#step:5:53)

    more_exts = [ep.name for ep in entry_points().get(self.entry_point_group, [])]
```
It is around here in the code: https://github.com/altair-viz/altair/blob/master/altair/utils/plugin_registry.py#L124

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `altair/utils/plugin_registry.py`
Content:
```
1 from typing import Any, Dict, List, Optional, Generic, TypeVar, cast
2 from types import TracebackType
3 
4 try:
5     from importlib.metadata import entry_points
6 except ImportError:
7     from importlib_metadata import entry_points
8 
9 from toolz import curry
10 
11 
12 PluginType = TypeVar("PluginType")
13 
14 
15 class NoSuchEntryPoint(Exception):
16     def __init__(self, group, name):
17         self.group = group
18         self.name = name
19 
20     def __str__(self):
21         return f"No {self.name!r} entry point found in group {self.group!r}"
22 
23 
24 class PluginEnabler(object):
25     """Context manager for enabling plugins
26 
27     This object lets you use enable() as a context manager to
28     temporarily enable a given plugin::
29 
30         with plugins.enable('name'):
31             do_something()  # 'name' plugin temporarily enabled
32         # plugins back to original state
33     """
34 
35     def __init__(self, registry: "PluginRegistry", name: str, **options):
36         self.registry = registry  # type: PluginRegistry
37         self.name = name  # type: str
38         self.options = options  # type: Dict[str, Any]
39         self.original_state = registry._get_state()  # type: Dict[str, Any]
40         self.registry._enable(name, **options)
41 
42     def __enter__(self) -> "PluginEnabler":
43         return self
44 
45     def __exit__(self, typ: type, value: Exception, traceback: TracebackType) -> None:
46         self.registry._set_state(self.original_state)
47 
48     def __repr__(self) -> str:
49         return "{}.enable({!r})".format(self.registry.__class__.__name__, self.name)
50 
51 
52 class PluginRegistry(Generic[PluginType]):
53     """A registry for plugins.
54 
55     This is a plugin registry that allows plugins to be loaded/registered
56     in two ways:
57 
58     1. Through an explicit call to ``.register(name, value)``.
59     2. By looking for other Python packages that are installed and provide
60        a setuptools entry point group.
61 
62     When you create an instance of this class, provide the name of the
63     entry point group to use::
64 
65         reg = PluginRegister('my_entrypoint_group')
66 
67     """
68 
69     # this is a mapping of name to error message to allow custom error messages
70     # in case an entrypoint is not found
71     entrypoint_err_messages = {}  # type: Dict[str, str]
72 
73     # global settings is a key-value mapping of settings that are stored globally
74     # in the registry rather than passed to the plugins
75     _global_settings = {}  # type: Dict[str, Any]
76 
77     def __init__(self, entry_point_group: str = "", plugin_type: type = object):
78         """Create a PluginRegistry for a named entry point group.
79 
80         Parameters
81         ==========
82         entry_point_group: str
83             The name of the entry point group.
84         plugin_type: object
85             A type that will optionally be used for runtime type checking of
86             loaded plugins using isinstance.
87         """
88         self.entry_point_group = entry_point_group  # type: str
89         self.plugin_type = plugin_type  # type: Optional[type]
90         self._active = None  # type: Optional[PluginType]
91         self._active_name = ""  # type: str
92         self._plugins = {}  # type: Dict[str, PluginType]
93         self._options = {}  # type: Dict[str, Any]
94         self._global_settings = self.__class__._global_settings.copy()  # type: dict
95 
96     def register(self, name: str, value: Optional[PluginType]) -> Optional[PluginType]:
97         """Register a plugin by name and value.
98 
99         This method is used for explicit registration of a plugin and shouldn't be
100         used to manage entry point managed plugins, which are auto-loaded.
101 
102         Parameters
103         ==========
104         name: str
105             The name of the plugin.
106         value: PluginType or None
107             The actual plugin object to register or None to unregister that plugin.
108 
109         Returns
110         =======
111         plugin: PluginType or None
112             The plugin that was registered or unregistered.
113         """
114         if value is None:
115             return self._plugins.pop(name, None)
116         else:
117             assert isinstance(value, self.plugin_type)
118             self._plugins[name] = value
119             return value
120 
121     def names(self) -> List[str]:
122         """List the names of the registered and entry points plugins."""
123         exts = list(self._plugins.keys())
124         more_exts = [ep.name for ep in entry_points().get(self.entry_point_group, [])]
125         exts.extend(more_exts)
126         return sorted(set(exts))
127 
128     def _get_state(self) -> Dict[str, Any]:
129         """Return a dictionary representing the current state of the registry"""
130         return {
131             "_active": self._active,
132             "_active_name": self._active_name,
133             "_plugins": self._plugins.copy(),
134             "_options": self._options.copy(),
135             "_global_settings": self._global_settings.copy(),
136         }
137 
138     def _set_state(self, state: Dict[str, Any]) -> None:
139         """Reset the state of the registry"""
140         assert set(state.keys()) == {
141             "_active",
142             "_active_name",
143             "_plugins",
144             "_options",
145             "_global_settings",
146         }
147         for key, val in state.items():
148             setattr(self, key, val)
149 
150     def _enable(self, name: str, **options) -> None:
151         if name not in self._plugins:
152             try:
153                 (ep,) = [
154                     ep
155                     for ep in entry_points().get(self.entry_point_group, [])
156                     if ep.name == name
157                 ]
158             except ValueError:
159                 if name in self.entrypoint_err_messages:
160                     raise ValueError(self.entrypoint_err_messages[name])
161                 else:
162                     raise NoSuchEntryPoint(self.entry_point_group, name)
163             value = cast(PluginType, ep.load())
164             self.register(name, value)
165         self._active_name = name
166         self._active = self._plugins[name]
167         for key in set(options.keys()) & set(self._global_settings.keys()):
168             self._global_settings[key] = options.pop(key)
169         self._options = options
170 
171     def enable(self, name: Optional[str] = None, **options) -> PluginEnabler:
172         """Enable a plugin by name.
173 
174         This can be either called directly, or used as a context manager.
175 
176         Parameters
177         ----------
178         name : string (optional)
179             The name of the plugin to enable. If not specified, then use the
180             current active name.
181         **options :
182             Any additional parameters will be passed to the plugin as keyword
183             arguments
184 
185         Returns
186         -------
187         PluginEnabler:
188             An object that allows enable() to be used as a context manager
189         """
190         if name is None:
191             name = self.active
192         return PluginEnabler(self, name, **options)
193 
194     @property
195     def active(self) -> str:
196         """Return the name of the currently active plugin"""
197         return self._active_name
198 
199     @property
200     def options(self) -> Dict[str, Any]:
201         """Return the current options dictionary"""
202         return self._options
203 
204     def get(self) -> Optional[PluginType]:
205         """Return the currently active plugin."""
206         if self._options:
207             return curry(self._active, **self._options)
208         else:
209             return self._active
210 
211     def __repr__(self) -> str:
212         return "{}(active={!r}, registered={!r})" "".format(
213             self.__class__.__name__, self._active_name, list(self.names())
214         )
215
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/altair/utils/plugin_registry.py b/altair/utils/plugin_registry.py
--- a/altair/utils/plugin_registry.py
+++ b/altair/utils/plugin_registry.py
@@ -1,3 +1,4 @@
+import sys
 from typing import Any, Dict, List, Optional, Generic, TypeVar, cast
 from types import TracebackType
 
@@ -121,7 +122,11 @@
     def names(self) -> List[str]:
         """List the names of the registered and entry points plugins."""
         exts = list(self._plugins.keys())
-        more_exts = [ep.name for ep in entry_points().get(self.entry_point_group, [])]
+        if sys.version_info.major == 3 and sys.version_info.minor < 10:
+            e_points = entry_points().get(self.entry_point_group, [])
+        else:
+            e_points = entry_points(group=self.entry_point_group)
+        more_exts = [ep.name for ep in e_points]
         exts.extend(more_exts)
         return sorted(set(exts))

{"golden_diff": "diff --git a/altair/utils/plugin_registry.py b/altair/utils/plugin_registry.py\n--- a/altair/utils/plugin_registry.py\n+++ b/altair/utils/plugin_registry.py\n@@ -1,3 +1,4 @@\n+import sys\n from typing import Any, Dict, List, Optional, Generic, TypeVar, cast\n from types import TracebackType\n \n@@ -121,7 +122,11 @@\n     def names(self) -> List[str]:\n         \"\"\"List the names of the registered and entry points plugins.\"\"\"\n         exts = list(self._plugins.keys())\n-        more_exts = [ep.name for ep in entry_points().get(self.entry_point_group, [])]\n+        if sys.version_info.major == 3 and sys.version_info.minor < 10:\n+            e_points = entry_points().get(self.entry_point_group, [])\n+        else:\n+            e_points = entry_points(group=self.entry_point_group)\n+        more_exts = [ep.name for ep in e_points]\n         exts.extend(more_exts)\n         return sorted(set(exts))\n", "issue": "ga: `DeprecationWarning`: SelectableGroups dict interface is deprecated. Use select.\nI see the following deprecation warning in our tests:\r\n```cmd\r\ntests/vegalite/v5/tests/test_display.py::test_check_renderer_options\r\n[51](https://github.com/altair-viz/altair/actions/runs/4210647283/jobs/7308470442#step:5:52)\r\n  /home/runner/work/altair/altair/altair/utils/plugin_registry.py:124: \r\nDeprecationWarning: SelectableGroups dict interface is deprecated. Use select.\r\n\r\n[52](https://github.com/altair-viz/altair/actions/runs/4210647283/jobs/7308470442#step:5:53)\r\n\r\n    more_exts = [ep.name for ep in entry_points().get(self.entry_point_group, [])]\r\n```\r\nIt is around here in the code: https://github.com/altair-viz/altair/blob/master/altair/utils/plugin_registry.py#L124\n", "before_files": [{"content": "from typing import Any, Dict, List, Optional, Generic, TypeVar, cast\nfrom types import TracebackType\n\ntry:\n    from importlib.metadata import entry_points\nexcept ImportError:\n    from importlib_metadata import entry_points\n\nfrom toolz import curry\n\n\nPluginType = TypeVar(\"PluginType\")\n\n\nclass NoSuchEntryPoint(Exception):\n    def __init__(self, group, name):\n        self.group = group\n        self.name = name\n\n    def __str__(self):\n        return f\"No {self.name!r} entry point found in group {self.group!r}\"\n\n\nclass PluginEnabler(object):\n    \"\"\"Context manager for enabling plugins\n\n    This object lets you use enable() as a context manager to\n    temporarily enable a given plugin::\n\n        with plugins.enable('name'):\n            do_something()  # 'name' plugin temporarily enabled\n        # plugins back to original state\n    \"\"\"\n\n    def __init__(self, registry: \"PluginRegistry\", name: str, **options):\n        self.registry = registry  # type: PluginRegistry\n        self.name = name  # type: str\n        self.options = options  # type: Dict[str, Any]\n        self.original_state = registry._get_state()  # type: Dict[str, Any]\n        self.registry._enable(name, **options)\n\n    def __enter__(self) -> \"PluginEnabler\":\n        return self\n\n    def __exit__(self, typ: type, value: Exception, traceback: TracebackType) -> None:\n        self.registry._set_state(self.original_state)\n\n    def __repr__(self) -> str:\n        return \"{}.enable({!r})\".format(self.registry.__class__.__name__, self.name)\n\n\nclass PluginRegistry(Generic[PluginType]):\n    \"\"\"A registry for plugins.\n\n    This is a plugin registry that allows plugins to be loaded/registered\n    in two ways:\n\n    1. Through an explicit call to ``.register(name, value)``.\n    2. By looking for other Python packages that are installed and provide\n       a setuptools entry point group.\n\n    When you create an instance of this class, provide the name of the\n    entry point group to use::\n\n        reg = PluginRegister('my_entrypoint_group')\n\n    \"\"\"\n\n    # this is a mapping of name to error message to allow custom error messages\n    # in case an entrypoint is not found\n    entrypoint_err_messages = {}  # type: Dict[str, str]\n\n    # global settings is a key-value mapping of settings that are stored globally\n    # in the registry rather than passed to the plugins\n    _global_settings = {}  # type: Dict[str, Any]\n\n    def __init__(self, entry_point_group: str = \"\", plugin_type: type = object):\n        \"\"\"Create a PluginRegistry for a named entry point group.\n\n        Parameters\n        ==========\n        entry_point_group: str\n            The name of the entry point group.\n        plugin_type: object\n            A type that will optionally be used for runtime type checking of\n            loaded plugins using isinstance.\n        \"\"\"\n        self.entry_point_group = entry_point_group  # type: str\n        self.plugin_type = plugin_type  # type: Optional[type]\n        self._active = None  # type: Optional[PluginType]\n        self._active_name = \"\"  # type: str\n        self._plugins = {}  # type: Dict[str, PluginType]\n        self._options = {}  # type: Dict[str, Any]\n        self._global_settings = self.__class__._global_settings.copy()  # type: dict\n\n    def register(self, name: str, value: Optional[PluginType]) -> Optional[PluginType]:\n        \"\"\"Register a plugin by name and value.\n\n        This method is used for explicit registration of a plugin and shouldn't be\n        used to manage entry point managed plugins, which are auto-loaded.\n\n        Parameters\n        ==========\n        name: str\n            The name of the plugin.\n        value: PluginType or None\n            The actual plugin object to register or None to unregister that plugin.\n\n        Returns\n        =======\n        plugin: PluginType or None\n            The plugin that was registered or unregistered.\n        \"\"\"\n        if value is None:\n            return self._plugins.pop(name, None)\n        else:\n            assert isinstance(value, self.plugin_type)\n            self._plugins[name] = value\n            return value\n\n    def names(self) -> List[str]:\n        \"\"\"List the names of the registered and entry points plugins.\"\"\"\n        exts = list(self._plugins.keys())\n        more_exts = [ep.name for ep in entry_points().get(self.entry_point_group, [])]\n        exts.extend(more_exts)\n        return sorted(set(exts))\n\n    def _get_state(self) -> Dict[str, Any]:\n        \"\"\"Return a dictionary representing the current state of the registry\"\"\"\n        return {\n            \"_active\": self._active,\n            \"_active_name\": self._active_name,\n            \"_plugins\": self._plugins.copy(),\n            \"_options\": self._options.copy(),\n            \"_global_settings\": self._global_settings.copy(),\n        }\n\n    def _set_state(self, state: Dict[str, Any]) -> None:\n        \"\"\"Reset the state of the registry\"\"\"\n        assert set(state.keys()) == {\n            \"_active\",\n            \"_active_name\",\n            \"_plugins\",\n            \"_options\",\n            \"_global_settings\",\n        }\n        for key, val in state.items():\n            setattr(self, key, val)\n\n    def _enable(self, name: str, **options) -> None:\n        if name not in self._plugins:\n            try:\n                (ep,) = [\n                    ep\n                    for ep in entry_points().get(self.entry_point_group, [])\n                    if ep.name == name\n                ]\n            except ValueError:\n                if name in self.entrypoint_err_messages:\n                    raise ValueError(self.entrypoint_err_messages[name])\n                else:\n                    raise NoSuchEntryPoint(self.entry_point_group, name)\n            value = cast(PluginType, ep.load())\n            self.register(name, value)\n        self._active_name = name\n        self._active = self._plugins[name]\n        for key in set(options.keys()) & set(self._global_settings.keys()):\n            self._global_settings[key] = options.pop(key)\n        self._options = options\n\n    def enable(self, name: Optional[str] = None, **options) -> PluginEnabler:\n        \"\"\"Enable a plugin by name.\n\n        This can be either called directly, or used as a context manager.\n\n        Parameters\n        ----------\n        name : string (optional)\n            The name of the plugin to enable. If not specified, then use the\n            current active name.\n        **options :\n            Any additional parameters will be passed to the plugin as keyword\n            arguments\n\n        Returns\n        -------\n        PluginEnabler:\n            An object that allows enable() to be used as a context manager\n        \"\"\"\n        if name is None:\n            name = self.active\n        return PluginEnabler(self, name, **options)\n\n    @property\n    def active(self) -> str:\n        \"\"\"Return the name of the currently active plugin\"\"\"\n        return self._active_name\n\n    @property\n    def options(self) -> Dict[str, Any]:\n        \"\"\"Return the current options dictionary\"\"\"\n        return self._options\n\n    def get(self) -> Optional[PluginType]:\n        \"\"\"Return the currently active plugin.\"\"\"\n        if self._options:\n            return curry(self._active, **self._options)\n        else:\n            return self._active\n\n    def __repr__(self) -> str:\n        return \"{}(active={!r}, registered={!r})\" \"\".format(\n            self.__class__.__name__, self._active_name, list(self.names())\n        )\n", "path": "altair/utils/plugin_registry.py"}], "after_files": [{"content": "import sys\nfrom typing import Any, Dict, List, Optional, Generic, TypeVar, cast\nfrom types import TracebackType\n\ntry:\n    from importlib.metadata import entry_points\nexcept ImportError:\n    from importlib_metadata import entry_points\n\nfrom toolz import curry\n\n\nPluginType = TypeVar(\"PluginType\")\n\n\nclass NoSuchEntryPoint(Exception):\n    def __init__(self, group, name):\n        self.group = group\n        self.name = name\n\n    def __str__(self):\n        return f\"No {self.name!r} entry point found in group {self.group!r}\"\n\n\nclass PluginEnabler(object):\n    \"\"\"Context manager for enabling plugins\n\n    This object lets you use enable() as a context manager to\n    temporarily enable a given plugin::\n\n        with plugins.enable('name'):\n            do_something()  # 'name' plugin temporarily enabled\n        # plugins back to original state\n    \"\"\"\n\n    def __init__(self, registry: \"PluginRegistry\", name: str, **options):\n        self.registry = registry  # type: PluginRegistry\n        self.name = name  # type: str\n        self.options = options  # type: Dict[str, Any]\n        self.original_state = registry._get_state()  # type: Dict[str, Any]\n        self.registry._enable(name, **options)\n\n    def __enter__(self) -> \"PluginEnabler\":\n        return self\n\n    def __exit__(self, typ: type, value: Exception, traceback: TracebackType) -> None:\n        self.registry._set_state(self.original_state)\n\n    def __repr__(self) -> str:\n        return \"{}.enable({!r})\".format(self.registry.__class__.__name__, self.name)\n\n\nclass PluginRegistry(Generic[PluginType]):\n    \"\"\"A registry for plugins.\n\n    This is a plugin registry that allows plugins to be loaded/registered\n    in two ways:\n\n    1. Through an explicit call to ``.register(name, value)``.\n    2. By looking for other Python packages that are installed and provide\n       a setuptools entry point group.\n\n    When you create an instance of this class, provide the name of the\n    entry point group to use::\n\n        reg = PluginRegister('my_entrypoint_group')\n\n    \"\"\"\n\n    # this is a mapping of name to error message to allow custom error messages\n    # in case an entrypoint is not found\n    entrypoint_err_messages = {}  # type: Dict[str, str]\n\n    # global settings is a key-value mapping of settings that are stored globally\n    # in the registry rather than passed to the plugins\n    _global_settings = {}  # type: Dict[str, Any]\n\n    def __init__(self, entry_point_group: str = \"\", plugin_type: type = object):\n        \"\"\"Create a PluginRegistry for a named entry point group.\n\n        Parameters\n        ==========\n        entry_point_group: str\n            The name of the entry point group.\n        plugin_type: object\n            A type that will optionally be used for runtime type checking of\n            loaded plugins using isinstance.\n        \"\"\"\n        self.entry_point_group = entry_point_group  # type: str\n        self.plugin_type = plugin_type  # type: Optional[type]\n        self._active = None  # type: Optional[PluginType]\n        self._active_name = \"\"  # type: str\n        self._plugins = {}  # type: Dict[str, PluginType]\n        self._options = {}  # type: Dict[str, Any]\n        self._global_settings = self.__class__._global_settings.copy()  # type: dict\n\n    def register(self, name: str, value: Optional[PluginType]) -> Optional[PluginType]:\n        \"\"\"Register a plugin by name and value.\n\n        This method is used for explicit registration of a plugin and shouldn't be\n        used to manage entry point managed plugins, which are auto-loaded.\n\n        Parameters\n        ==========\n        name: str\n            The name of the plugin.\n        value: PluginType or None\n            The actual plugin object to register or None to unregister that plugin.\n\n        Returns\n        =======\n        plugin: PluginType or None\n            The plugin that was registered or unregistered.\n        \"\"\"\n        if value is None:\n            return self._plugins.pop(name, None)\n        else:\n            assert isinstance(value, self.plugin_type)\n            self._plugins[name] = value\n            return value\n\n    def names(self) -> List[str]:\n        \"\"\"List the names of the registered and entry points plugins.\"\"\"\n        exts = list(self._plugins.keys())\n        if sys.version_info.major == 3 and sys.version_info.minor < 10:\n            e_points = entry_points().get(self.entry_point_group, [])\n        else:\n            e_points = entry_points(group=self.entry_point_group)\n        more_exts = [ep.name for ep in e_points]\n        exts.extend(more_exts)\n        return sorted(set(exts))\n\n    def _get_state(self) -> Dict[str, Any]:\n        \"\"\"Return a dictionary representing the current state of the registry\"\"\"\n        return {\n            \"_active\": self._active,\n            \"_active_name\": self._active_name,\n            \"_plugins\": self._plugins.copy(),\n            \"_options\": self._options.copy(),\n            \"_global_settings\": self._global_settings.copy(),\n        }\n\n    def _set_state(self, state: Dict[str, Any]) -> None:\n        \"\"\"Reset the state of the registry\"\"\"\n        assert set(state.keys()) == {\n            \"_active\",\n            \"_active_name\",\n            \"_plugins\",\n            \"_options\",\n            \"_global_settings\",\n        }\n        for key, val in state.items():\n            setattr(self, key, val)\n\n    def _enable(self, name: str, **options) -> None:\n        if name not in self._plugins:\n            try:\n                (ep,) = [\n                    ep\n                    for ep in entry_points().get(self.entry_point_group, [])\n                    if ep.name == name\n                ]\n            except ValueError:\n                if name in self.entrypoint_err_messages:\n                    raise ValueError(self.entrypoint_err_messages[name])\n                else:\n                    raise NoSuchEntryPoint(self.entry_point_group, name)\n            value = cast(PluginType, ep.load())\n            self.register(name, value)\n        self._active_name = name\n        self._active = self._plugins[name]\n        for key in set(options.keys()) & set(self._global_settings.keys()):\n            self._global_settings[key] = options.pop(key)\n        self._options = options\n\n    def enable(self, name: Optional[str] = None, **options) -> PluginEnabler:\n        \"\"\"Enable a plugin by name.\n\n        This can be either called directly, or used as a context manager.\n\n        Parameters\n        ----------\n        name : string (optional)\n            The name of the plugin to enable. If not specified, then use the\n            current active name.\n        **options :\n            Any additional parameters will be passed to the plugin as keyword\n            arguments\n\n        Returns\n        -------\n        PluginEnabler:\n            An object that allows enable() to be used as a context manager\n        \"\"\"\n        if name is None:\n            name = self.active\n        return PluginEnabler(self, name, **options)\n\n    @property\n    def active(self) -> str:\n        \"\"\"Return the name of the currently active plugin\"\"\"\n        return self._active_name\n\n    @property\n    def options(self) -> Dict[str, Any]:\n        \"\"\"Return the current options dictionary\"\"\"\n        return self._options\n\n    def get(self) -> Optional[PluginType]:\n        \"\"\"Return the currently active plugin.\"\"\"\n        if self._options:\n            return curry(self._active, **self._options)\n        else:\n            return self._active\n\n    def __repr__(self) -> str:\n        return \"{}(active={!r}, registered={!r})\" \"\".format(\n            self.__class__.__name__, self._active_name, list(self.names())\n        )\n", "path": "altair/utils/plugin_registry.py"}]}