






"""simple docstring"""
from __future__ import annotations

lowerCamelCase_							      = 8.988E9  # units = N * m^s * C^-2

def 							snake_case (  A__      ,A__      ,A__      ,A__		):
			UpperCAmelCase_	:					str     	=   abs(chargea * chargea		)

			if (force, chargea, chargea, distance).count(0		) != 1:
						raise ValueError("One and only one argument must be 0"		)
			if distance < 0:
						raise ValueError("Distance cannot be negative"		)
			if force == 0:
						UpperCAmelCase_	:					Any     	=   COULOMBS_CONSTANT * charge_product / (distance**2)
						return {"force": force}
			elif chargea == 0:
						UpperCAmelCase_	:					Optional[Any]     	=   abs(A__		) * (distance**2) / (COULOMBS_CONSTANT * chargea)
						return {"charge1": chargea}
			elif chargea == 0:
						UpperCAmelCase_	:					Any     	=   abs(A__		) * (distance**2) / (COULOMBS_CONSTANT * chargea)
						return {"charge2": chargea}
			elif distance == 0:
						UpperCAmelCase_	:					Tuple     	=   (COULOMBS_CONSTANT * charge_product / abs(A__		)) ** 0.5
						return {"distance": distance}
			raise ValueError("Exactly one argument must be 0"		)


if __name__ == "__main__":
			import doctest

			doctest.testmod()









from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


__magic_name__  :  Union[str, Any]					=       {
    """configuration_altclip""": [
        """ALTCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """AltCLIPConfig""",
        """AltCLIPTextConfig""",
        """AltCLIPVisionConfig""",
    ],
    """processing_altclip""": ["""AltCLIPProcessor"""],
}

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __magic_name__  :  str					=       [
          """ALTCLIP_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """AltCLIPPreTrainedModel""",
          """AltCLIPModel""",
          """AltCLIPTextModel""",
          """AltCLIPVisionModel""",
      ]


if TYPE_CHECKING:
      from .configuration_altclip import (
          ALTCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
          AltCLIPConfig,
          AltCLIPTextConfig,
          AltCLIPVisionConfig,
      )
      from .processing_altclip import AltCLIPProcessor

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_altclip import (
                ALTCLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                AltCLIPModel,
                AltCLIPPreTrainedModel,
                AltCLIPTextModel,
                AltCLIPVisionModel,
            )


else:
      import sys

      __magic_name__  :  str					=       _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)

