


from __future__ import annotations

_A			=						1.60_21e-19  # units = C

def 						_UpperCAmelCase    (      SCREAMING_SNAKE_CASE__      : float      ,					SCREAMING_SNAKE_CASE__      : float      ,					SCREAMING_SNAKE_CASE__      : float      ,					):
     if (conductivity, electron_conc, mobility).count(0    ) != 1:
          raise ValueError('You cannot supply more or less than 2 values'    )
     elif conductivity < 0:
          raise ValueError('Conductivity cannot be negative'    )
     elif electron_conc < 0:
          raise ValueError('Electron concentration cannot be negative'    )
     elif mobility < 0:
          raise ValueError('mobility cannot be negative'    )
     elif conductivity == 0:
          return (
              "conductivity",
              mobility * electron_conc * ELECTRON_CHARGE,
          )
     elif electron_conc == 0:
          return (
              "electron_conc",
              conductivity / (mobility * ELECTRON_CHARGE),
          )
     else:
          return (
              "mobility",
              conductivity / (electron_conc * ELECTRON_CHARGE),
          )


if __name__ == "__main__":
   import doctest

   doctest.testmod()









from typing import TYPE_CHECKING

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


_A			=						{'configuration_vit': ['VIT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'ViTConfig', 'ViTOnnxConfig']}

try:
   if not is_vision_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _A			=						['ViTFeatureExtractor']
   _A			=						['ViTImageProcessor']

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _A			=						[
       'VIT_PRETRAINED_MODEL_ARCHIVE_LIST',
       'ViTForImageClassification',
       'ViTForMaskedImageModeling',
       'ViTModel',
       'ViTPreTrainedModel',
   ]

try:
   if not is_tf_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _A			=						[
       'TFViTForImageClassification',
       'TFViTModel',
       'TFViTPreTrainedModel',
   ]

try:
   if not is_flax_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   _A			=						[
       'FlaxViTForImageClassification',
       'FlaxViTModel',
       'FlaxViTPreTrainedModel',
   ]

if TYPE_CHECKING:
   from .configuration_vit import VIT_PRETRAINED_CONFIG_ARCHIVE_MAP, ViTConfig, ViTOnnxConfig

   try:
      if not is_vision_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .feature_extraction_vit import ViTFeatureExtractor
      from .image_processing_vit import ViTImageProcessor

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_vit import (
          VIT_PRETRAINED_MODEL_ARCHIVE_LIST,
          ViTForImageClassification,
          ViTForMaskedImageModeling,
          ViTModel,
          ViTPreTrainedModel,
      )

   try:
      if not is_tf_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_tf_vit import TFViTForImageClassification, TFViTModel, TFViTPreTrainedModel

   try:
      if not is_flax_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_flax_vit import FlaxViTForImageClassification, FlaxViTModel, FlaxViTPreTrainedModel


else:
   import sys

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





