| 1253 | return self._replace(index, level_coords_dtype=level_coords_dtype) |
| 1254 | |
| 1255 | def create_variables( |
| 1256 | self, variables: Mapping[Any, Variable] | None = None |
| 1257 | ) -> IndexVars: |
| 1258 | from xarray.core.variable import IndexVariable |
| 1259 | |
| 1260 | if variables is None: |
| 1261 | variables = {} |
| 1262 | |
| 1263 | index_vars: IndexVars = {} |
| 1264 | for name in (self.dim,) + tuple(self.index.names): |
| 1265 | if name == self.dim: |
| 1266 | level = None |
| 1267 | dtype = None |
| 1268 | else: |
| 1269 | level = name |
| 1270 | dtype = self.level_coords_dtype[name] |
| 1271 | |
| 1272 | var = variables.get(name) |
| 1273 | if var is not None: |
| 1274 | attrs = var.attrs |
| 1275 | encoding = var.encoding |
| 1276 | else: |
| 1277 | attrs = {} |
| 1278 | encoding = {} |
| 1279 | |
| 1280 | data = PandasMultiIndexingAdapter(self.index, dtype=dtype, level=level) # type: ignore[arg-type] # TODO: are Hashables ok? |
| 1281 | index_vars[name] = IndexVariable( |
| 1282 | self.dim, |
| 1283 | data, |
| 1284 | attrs=attrs, |
| 1285 | encoding=encoding, |
| 1286 | fastpath=True, |
| 1287 | ) |
| 1288 | |
| 1289 | return index_vars |
| 1290 | |
| 1291 | def sel(self, labels, method=None, tolerance=None) -> IndexSelResult: |
| 1292 | from xarray.core.dataarray import DataArray |