




'''simple docstring'''



from typing import TYPE_CHECKING

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


lowerCamelCase_			=						{
    'configuration_convbert': ['CONVBERT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'ConvBertConfig', 'ConvBertOnnxConfig'],
    'tokenization_convbert': ['ConvBertTokenizer'],
}

try:
    if not is_tokenizers_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    lowerCamelCase_			=						['ConvBertTokenizerFast']

try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    lowerCamelCase_			=						[
        'CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
        'ConvBertForMaskedLM',
        'ConvBertForMultipleChoice',
        'ConvBertForQuestionAnswering',
        'ConvBertForSequenceClassification',
        'ConvBertForTokenClassification',
        'ConvBertLayer',
        'ConvBertModel',
        'ConvBertPreTrainedModel',
        'load_tf_weights_in_convbert',
    ]


try:
    if not is_tf_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    lowerCamelCase_			=						[
        'TF_CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
        'TFConvBertForMaskedLM',
        'TFConvBertForMultipleChoice',
        'TFConvBertForQuestionAnswering',
        'TFConvBertForSequenceClassification',
        'TFConvBertForTokenClassification',
        'TFConvBertLayer',
        'TFConvBertModel',
        'TFConvBertPreTrainedModel',
    ]


if TYPE_CHECKING:
    from .configuration_convbert import CONVBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, ConvBertConfig, ConvBertOnnxConfig
    from .tokenization_convbert import ConvBertTokenizer

    try:
        if not is_tokenizers_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .tokenization_convbert_fast import ConvBertTokenizerFast

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_convbert import (
            CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
            ConvBertForMaskedLM,
            ConvBertForMultipleChoice,
            ConvBertForQuestionAnswering,
            ConvBertForSequenceClassification,
            ConvBertForTokenClassification,
            ConvBertLayer,
            ConvBertModel,
            ConvBertPreTrainedModel,
            load_tf_weights_in_convbert,
        )

    try:
        if not is_tf_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_convbert import (
            TF_CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
            TFConvBertForMaskedLM,
            TFConvBertForMultipleChoice,
            TFConvBertForQuestionAnswering,
            TFConvBertForSequenceClassification,
            TFConvBertForTokenClassification,
            TFConvBertLayer,
            TFConvBertModel,
            TFConvBertPreTrainedModel,
        )


else:
    import sys

    lowerCamelCase_			=						_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)







'''simple docstring'''



from __future__ import annotations
def 			SCREAMING_SNAKE_CASE_			(							__A    :			float	,					__A    :			float	,					__A    :			float	,					)			->			tuple:
   if (electron_conc, hole_conc, intrinsic_conc).count(0  ) != 1:
      raise ValueError("You cannot supply more or less than 2 values"  )
   elif electron_conc < 0:
      raise ValueError("Electron concentration cannot be negative in a semiconductor"  )
   elif hole_conc < 0:
      raise ValueError("Hole concentration cannot be negative in a semiconductor"  )
   elif intrinsic_conc < 0:
      raise ValueError(
          "Intrinsic concentration cannot be negative in a semiconductor"  )
   elif electron_conc == 0:
      return (
          "electron_conc",
          intrinsic_conc**2 / hole_conc,
      )
   elif hole_conc == 0:
      return (
          "hole_conc",
          intrinsic_conc**2 / electron_conc,
      )
   elif intrinsic_conc == 0:
      return (
          "intrinsic_conc",
          (electron_conc * hole_conc) ** 0.5,
      )
   else:
      return (-1, -1)


if __name__ == "__main__":
 import doctest

 doctest.testmod()

