
'''simple docstring'''







from typing import TYPE_CHECKING

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


lowercase    :							int      =					{
    "configuration_roformer": ["ROFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP", "RoFormerConfig", "RoFormerOnnxConfig"],
    "tokenization_roformer": ["RoFormerTokenizer"],
}

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

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowercase    :							int      =					[
					    "ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "RoFormerForCausalLM",
					    "RoFormerForMaskedLM",
					    "RoFormerForMultipleChoice",
					    "RoFormerForQuestionAnswering",
					    "RoFormerForSequenceClassification",
					    "RoFormerForTokenClassification",
					    "RoFormerLayer",
					    "RoFormerModel",
					    "RoFormerPreTrainedModel",
					    "load_tf_weights_in_roformer",
					]


try:
					if not is_tf_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowercase    :							str      =					[
					    "TF_ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "TFRoFormerForCausalLM",
					    "TFRoFormerForMaskedLM",
					    "TFRoFormerForMultipleChoice",
					    "TFRoFormerForQuestionAnswering",
					    "TFRoFormerForSequenceClassification",
					    "TFRoFormerForTokenClassification",
					    "TFRoFormerLayer",
					    "TFRoFormerModel",
					    "TFRoFormerPreTrainedModel",
					]


try:
					if not is_flax_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowercase    :							Optional[Any]      =					[
					    "FLAX_ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "FlaxRoFormerForMaskedLM",
					    "FlaxRoFormerForMultipleChoice",
					    "FlaxRoFormerForQuestionAnswering",
					    "FlaxRoFormerForSequenceClassification",
					    "FlaxRoFormerForTokenClassification",
					    "FlaxRoFormerModel",
					    "FlaxRoFormerPreTrainedModel",
					]


if TYPE_CHECKING:
					from .configuration_roformer import ROFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, RoFormerConfig, RoFormerOnnxConfig
					from .tokenization_roformer import RoFormerTokenizer

					try:
										if not is_tokenizers_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .tokenization_roformer_fast import RoFormerTokenizerFast

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_roformer import (
										    ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
										    RoFormerForCausalLM,
										    RoFormerForMaskedLM,
										    RoFormerForMultipleChoice,
										    RoFormerForQuestionAnswering,
										    RoFormerForSequenceClassification,
										    RoFormerForTokenClassification,
										    RoFormerLayer,
										    RoFormerModel,
										    RoFormerPreTrainedModel,
										    load_tf_weights_in_roformer,
										)

					try:
										if not is_tf_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tf_roformer import (
										    TF_ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TFRoFormerForCausalLM,
										    TFRoFormerForMaskedLM,
										    TFRoFormerForMultipleChoice,
										    TFRoFormerForQuestionAnswering,
										    TFRoFormerForSequenceClassification,
										    TFRoFormerForTokenClassification,
										    TFRoFormerLayer,
										    TFRoFormerModel,
										    TFRoFormerPreTrainedModel,
										)

					try:
										if not is_flax_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_flax_roformer import (
										    FLAX_ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
										    FlaxRoFormerForMaskedLM,
										    FlaxRoFormerForMultipleChoice,
										    FlaxRoFormerForQuestionAnswering,
										    FlaxRoFormerForSequenceClassification,
										    FlaxRoFormerForTokenClassification,
										    FlaxRoFormerModel,
										    FlaxRoFormerPreTrainedModel,
										)


else:
					import sys

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





"""simple docstring"""






def      lowerCamelCase       (     _UpperCamelCase		:      float       ,			_UpperCamelCase		:      float       ,			_UpperCamelCase		:      int							)		->       float:

							'''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(_UpperCamelCase       ,			_UpperCamelCase							):
														raise Exception("""Years to repay must be an integer > 0"""							)

							# Yearly rate is divided by 12 to get monthly rate
							__UpperCAmelCase   :						List[Any]      							=					rate_per_annum / 1_2

							# Years to repay is multiplied by 12 to get number of payments as payment is monthly
							__UpperCAmelCase   :						Optional[int]      							=					years_to_repay * 1_2

							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()
