






from typing import TYPE_CHECKING

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


__UpperCAmelCase				: Tuple						    =	{
    "configuration_longformer": [
        "LONGFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "LongformerConfig",
        "LongformerOnnxConfig",
    ],
    "tokenization_longformer": ["LongformerTokenizer"],
}

try:
	if not is_tokenizers_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__UpperCAmelCase				: int						    =	["LongformerTokenizerFast"]

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__UpperCAmelCase				: Tuple						    =	[
	    "LONGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
	    "LongformerForMaskedLM",
	    "LongformerForMultipleChoice",
	    "LongformerForQuestionAnswering",
	    "LongformerForSequenceClassification",
	    "LongformerForTokenClassification",
	    "LongformerModel",
	    "LongformerPreTrainedModel",
	    "LongformerSelfAttention",
	]

try:
	if not is_tf_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	__UpperCAmelCase				: int						    =	[
	    "TF_LONGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
	    "TFLongformerForMaskedLM",
	    "TFLongformerForMultipleChoice",
	    "TFLongformerForQuestionAnswering",
	    "TFLongformerForSequenceClassification",
	    "TFLongformerForTokenClassification",
	    "TFLongformerModel",
	    "TFLongformerPreTrainedModel",
	    "TFLongformerSelfAttention",
	]


if TYPE_CHECKING:
	from .configuration_longformer import (
	    LONGFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
	    LongformerConfig,
	    LongformerOnnxConfig,
	)
	from .tokenization_longformer import LongformerTokenizer

	try:
		if not is_tokenizers_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .tokenization_longformer_fast import LongformerTokenizerFast

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_longformer import (
		    LONGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
		    LongformerForMaskedLM,
		    LongformerForMultipleChoice,
		    LongformerForQuestionAnswering,
		    LongformerForSequenceClassification,
		    LongformerForTokenClassification,
		    LongformerModel,
		    LongformerPreTrainedModel,
		    LongformerSelfAttention,
		)

	try:
		if not is_tf_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_tf_longformer import (
		    TF_LONGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
		    TFLongformerForMaskedLM,
		    TFLongformerForMultipleChoice,
		    TFLongformerForQuestionAnswering,
		    TFLongformerForSequenceClassification,
		    TFLongformerForTokenClassification,
		    TFLongformerModel,
		    TFLongformerPreTrainedModel,
		    TFLongformerSelfAttention,
		)

else:
	import sys

	__UpperCAmelCase				: int						    =	_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)






'''simple docstring'''






from __future__ import annotations






def   __A    (				a_    :	float   ,a_    :	float   ,a_    :	float   ,):
		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()



