MCPcopy
hub / github.com/pandas-dev/pandas / __new__

Method __new__

pandas/core/indexes/multi.py:297–341  ·  view source on GitHub ↗
(
        cls,
        levels=None,
        codes=None,
        sortorder=None,
        names=None,
        copy: bool = False,
        name=None,
        verify_integrity: bool = True,
    )

Source from the content-addressed store, hash-verified

295 # Constructors
296
297 def __new__(
298 cls,
299 levels=None,
300 codes=None,
301 sortorder=None,
302 names=None,
303 copy: bool = False,
304 name=None,
305 verify_integrity: bool = True,
306 ) -> Self:
307 # compat with Index
308 if name is not None:
309 names = name
310 if levels is None or codes is None:
311 raise TypeError("Must pass both levels and codes")
312 if len(levels) != len(codes):
313 raise ValueError("Length of levels and codes must be the same.")
314 if len(levels) == 0:
315 raise ValueError("Must pass non-zero number of levels/codes")
316
317 result = object.__new__(cls)
318 result._cache = {}
319
320 # we've already validated levels and codes, so shortcut here
321 result._set_levels(levels, copy=copy, validate=False)
322 result._set_codes(codes, copy=copy, validate=False)
323
324 result._names = [None] * len(levels)
325 if names is not None:
326 # handles name validation
327 result._set_names(names)
328
329 if sortorder is not None:
330 result.sortorder = int(sortorder)
331 else:
332 result.sortorder = sortorder
333
334 if verify_integrity:
335 new_codes = result._verify_integrity()
336 result._codes = new_codes
337
338 result._reset_identity()
339 result._references = None
340
341 return result
342
343 def _validate_codes(self, level: Index, code: np.ndarray) -> np.ndarray:
344 """

Callers

nothing calls this directly

Calls 5

_set_levelsMethod · 0.80
_set_codesMethod · 0.80
_reset_identityMethod · 0.80
_set_namesMethod · 0.45
_verify_integrityMethod · 0.45

Tested by

no test coverage detected