class_docstr: Handles parameter management for classifiers composed of named estimators.
code: def _validate_names(self, names):
      if len(set(names)) != len(names):
          raise ValueError(
              "Names provided are not unique: {0!r}".format(list(names))
          )
      invalid_names = set(names).intersection(
          self.get_params(deep=False)
      )
      if invalid_names:
          raise ValueError(
              "Estimator names conflict with constructor arguments: {0!r}".format(
                  sorted(invalid_names)
              )
          )
      invalid_names = [name for name in names if "__" in name]
      if invalid_names:
          raise ValueError(
              "Estimator names must not contain __: got {0!r}".format(
                  invalid_names
              )
          )
  
file_path: catboost/contrib/python/scikit-learn/py3/sklearn/utils/metaestimators.py
imports: from abc import ABCMeta, abstractmethod
  from contextlib import suppress
  from typing import Any, List
  import numpy
  from ..base import BaseEstimator
  from ..utils import _safe_indexing
  from ..utils._tags import _safe_tags
  from ._available_if import available_if
label_desc: Use image node_id 5 for calling the _BaseComposition obj's underlying member method code with example usage: obj._validate_names(names) without return types