MCPcopy
hub / github.com/pydata/xarray / _need_reindex

Method _need_reindex

xarray/structure/alignment.py:339–376  ·  view source on GitHub ↗

Whether or not we need to reindex variables for a set of matching indexes. We don't reindex when all matching indexes are equal for two reasons: - It's faster for the usual case (already aligned objects). - It ensures it's possible to do operations that don't require

(self, dim, cmp_indexes)

Source from the content-addressed store, hash-verified

337 self.unindexed_dim_sizes = unindexed_dim_sizes
338
339 def _need_reindex(self, dim, cmp_indexes) -> bool:
340 """Whether or not we need to reindex variables for a set of
341 matching indexes.
342
343 We don't reindex when all matching indexes are equal for two reasons:
344 - It's faster for the usual case (already aligned objects).
345 - It ensures it's possible to do operations that don't require alignment
346 on indexes with duplicate values (which cannot be reindexed with
347 pandas). This is useful, e.g., for overwriting such duplicate indexes.
348
349 """
350 if not indexes_all_equal(cmp_indexes, self.exclude_dims):
351 # always reindex when matching indexes are not equal
352 return True
353
354 unindexed_dims_sizes = {}
355 for d in dim:
356 if d in self.unindexed_dim_sizes:
357 sizes = self.unindexed_dim_sizes[d]
358 if len(sizes) > 1:
359 # reindex if different sizes are found for unindexed dims
360 return True
361 else:
362 unindexed_dims_sizes[d] = next(iter(sizes))
363
364 if unindexed_dims_sizes:
365 indexed_dims_sizes = {}
366 for cmp in cmp_indexes:
367 index_vars = cmp[1]
368 for var in index_vars.values():
369 indexed_dims_sizes.update(var.sizes)
370
371 for d, size in unindexed_dims_sizes.items():
372 if indexed_dims_sizes.get(d, -1) != size:
373 # reindex if unindexed dimension size doesn't match
374 return True
375
376 return False
377
378 def _get_index_joiner(self, index_cls) -> Callable:
379 if self.join in ["outer", "inner"]:

Callers 1

align_indexesMethod · 0.95

Calls 5

indexes_all_equalFunction · 0.90
itemsMethod · 0.80
valuesMethod · 0.45
updateMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected