Select open_dataset method based on current engine.
(engine: str | type[BackendEntrypoint])
| 218 | |
| 219 | |
| 220 | def get_backend(engine: str | type[BackendEntrypoint]) -> BackendEntrypoint: |
| 221 | """Select open_dataset method based on current engine.""" |
| 222 | if isinstance(engine, str): |
| 223 | if engine in BACKEND_ENTRYPOINTS: |
| 224 | # fast path for built-in engines |
| 225 | backend_cls = BACKEND_ENTRYPOINTS[engine][1] |
| 226 | set_missing_parameters({engine: backend_cls}) |
| 227 | backend = backend_cls() |
| 228 | else: |
| 229 | engines = list_engines() |
| 230 | if engine not in engines: |
| 231 | raise ValueError( |
| 232 | f"unrecognized engine '{engine}' must be one of your download engines: {list(engines)}. " |
| 233 | "To install additional dependencies, see:\n" |
| 234 | "https://docs.xarray.dev/en/stable/user-guide/io.html \n" |
| 235 | "https://docs.xarray.dev/en/stable/getting-started-guide/installing.html" |
| 236 | ) |
| 237 | backend = engines[engine] |
| 238 | elif issubclass(engine, BackendEntrypoint): |
| 239 | backend = engine() |
| 240 | else: |
| 241 | raise TypeError( |
| 242 | "engine must be a string or a subclass of " |
| 243 | f"xarray.backends.BackendEntrypoint: {engine}" |
| 244 | ) |
| 245 | |
| 246 | return backend |
nothing calls this directly
no test coverage detected
searching dependent graphs…