






def   UpperCamelCase  (       snake_case__     :   Optional[int]	,snake_case__     :   Optional[int]	,snake_case__     :   List[Any]  ):




     '''simple docstring'''






     if principal <= 0:
          raise Exception("""Principal borrowed must be > 0"""  )
     if rate_per_annum < 0:
          raise Exception("""Rate of interest must be >= 0"""  )
     if years_to_repay <= 0 or not isinstance(_lowerCAmelCase	,_lowerCAmelCase  ):
          raise Exception("""Years to repay must be an integer > 0"""  )

     # Yearly rate is divided by 12 to get monthly rate
     __snake_case			:Any          =						rate_per_annum / 12

     # Years to repay is multiplied by 12 to get number of payments as payment is monthly
     __snake_case			:List[Any]          =						years_to_repay * 12

     return (
         principal
         * rate_per_month
         * (1 + rate_per_month) ** number_of_payments
         / ((1 + rate_per_month) ** number_of_payments - 1)
     )


if __name__ == "__main__":
     import doctest

     doctest.testmod()







from typing import TYPE_CHECKING

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


lowerCamelCase__							=     {"""configuration_dpt""": ["""DPT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """DPTConfig"""]}

try:
     if not is_vision_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     lowerCamelCase__							=     ["""DPTFeatureExtractor"""]
     lowerCamelCase__							=     ["""DPTImageProcessor"""]

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     lowerCamelCase__							=     [
         """DPT_PRETRAINED_MODEL_ARCHIVE_LIST""",
         """DPTForDepthEstimation""",
         """DPTForSemanticSegmentation""",
         """DPTModel""",
         """DPTPreTrainedModel""",
     ]


if TYPE_CHECKING:
     from .configuration_dpt import DPT_PRETRAINED_CONFIG_ARCHIVE_MAP, DPTConfig

     try:
          if not is_vision_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .feature_extraction_dpt import DPTFeatureExtractor
          from .image_processing_dpt import DPTImageProcessor

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_dpt import (
              DPT_PRETRAINED_MODEL_ARCHIVE_LIST,
              DPTForDepthEstimation,
              DPTForSemanticSegmentation,
              DPTModel,
              DPTPreTrainedModel,
          )


else:
     import sys

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


