





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_sentencepiece_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


A      = {
    "configuration_albert": ["ALBERT_PRETRAINED_CONFIG_ARCHIVE_MAP", "AlbertConfig", "AlbertOnnxConfig"],
}

try:
    if not is_sentencepiece_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    A      = ["AlbertTokenizer"]

try:
    if not is_tokenizers_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    A      = ["AlbertTokenizerFast"]

try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    A      = [
        "ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
        "AlbertForMaskedLM",
        "AlbertForMultipleChoice",
        "AlbertForPreTraining",
        "AlbertForQuestionAnswering",
        "AlbertForSequenceClassification",
        "AlbertForTokenClassification",
        "AlbertModel",
        "AlbertPreTrainedModel",
        "load_tf_weights_in_albert",
    ]

try:
    if not is_tf_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    A      = [
        "TF_ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
        "TFAlbertForMaskedLM",
        "TFAlbertForMultipleChoice",
        "TFAlbertForPreTraining",
        "TFAlbertForQuestionAnswering",
        "TFAlbertForSequenceClassification",
        "TFAlbertForTokenClassification",
        "TFAlbertMainLayer",
        "TFAlbertModel",
        "TFAlbertPreTrainedModel",
    ]

try:
    if not is_flax_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    A      = [
        "FlaxAlbertForMaskedLM",
        "FlaxAlbertForMultipleChoice",
        "FlaxAlbertForPreTraining",
        "FlaxAlbertForQuestionAnswering",
        "FlaxAlbertForSequenceClassification",
        "FlaxAlbertForTokenClassification",
        "FlaxAlbertModel",
        "FlaxAlbertPreTrainedModel",
    ]

if TYPE_CHECKING:
    from .configuration_albert import ALBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, AlbertConfig, AlbertOnnxConfig

    try:
        if not is_sentencepiece_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .tokenization_albert import AlbertTokenizer

    try:
        if not is_tokenizers_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .tokenization_albert_fast import AlbertTokenizerFast

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_albert import (
            ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
            AlbertForMaskedLM,
            AlbertForMultipleChoice,
            AlbertForPreTraining,
            AlbertForQuestionAnswering,
            AlbertForSequenceClassification,
            AlbertForTokenClassification,
            AlbertModel,
            AlbertPreTrainedModel,
            load_tf_weights_in_albert,
        )

    try:
        if not is_tf_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_albert import (
            TF_ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
            TFAlbertForMaskedLM,
            TFAlbertForMultipleChoice,
            TFAlbertForPreTraining,
            TFAlbertForQuestionAnswering,
            TFAlbertForSequenceClassification,
            TFAlbertForTokenClassification,
            TFAlbertMainLayer,
            TFAlbertModel,
            TFAlbertPreTrainedModel,
        )

    try:
        if not is_flax_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_flax_albert import (
            FlaxAlbertForMaskedLM,
            FlaxAlbertForMultipleChoice,
            FlaxAlbertForPreTraining,
            FlaxAlbertForQuestionAnswering,
            FlaxAlbertForSequenceClassification,
            FlaxAlbertForTokenClassification,
            FlaxAlbertModel,
            FlaxAlbertPreTrainedModel,
        )
else:
    import sys

    A      = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)









class     lowercase__  :






  def __init__(					self      :					List[str]		,						_lowercase      :					list ):




         """simple docstring"""







         UpperCAmelCase__										=     set_counts
         UpperCAmelCase__										=     max(_lowercase )
         UpperCAmelCase__										=     len(_lowercase )
         UpperCAmelCase__										=     [1] * num_sets
         UpperCAmelCase__										=     list(range(_lowercase ) )






  def 			_UpperCAmelCase  (					self      :					Dict		,						_lowercase      :					int		,						_lowercase      :					int ):




         """simple docstring"""







         UpperCAmelCase__										=     self.get_parent(_lowercase )
         UpperCAmelCase__										=     self.get_parent(_lowercase )

         if src_parent == dst_parent:
                return False

         if self.ranks[dst_parent] >= self.ranks[src_parent]:
                self.set_counts[dst_parent] += self.set_counts[src_parent]
                UpperCAmelCase__										=     0
                UpperCAmelCase__										=     dst_parent
                if self.ranks[dst_parent] == self.ranks[src_parent]:
                       self.ranks[dst_parent] += 1
                UpperCAmelCase__										=     self.set_counts[dst_parent]
         else:
                self.set_counts[src_parent] += self.set_counts[dst_parent]
                UpperCAmelCase__										=     0
                UpperCAmelCase__										=     src_parent
                UpperCAmelCase__										=     self.set_counts[src_parent]

         UpperCAmelCase__										=     max(self.max_set		,						_lowercase )
         return True






  def 			_UpperCAmelCase  (					self      :					Optional[Any]		,						_lowercase      :					int ):




         """simple docstring"""







         if self.parents[disj_set] == disj_set:
                return disj_set
         UpperCAmelCase__										=     self.get_parent(self.parents[disj_set] )
         return self.parents[disj_set]





