
def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__    ):
				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
				lowerCamelCase_						=			rate_per_annum / 1_2

				# Years to repay is multiplied by 12 to get number of payments as payment is monthly
				lowerCamelCase_						=			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()




from abc import ABC, abstractmethod
from argparse import ArgumentParser




class     _SCREAMING_SNAKE_CASE     (      snake_case_						):



	@staticmethod
	@abstractmethod
	def     SCREAMING_SNAKE_CASE_(    lowercase )				->       int:
					raise NotImplementedError()



	@abstractmethod
	def     SCREAMING_SNAKE_CASE_(    self )				->       Union[str, Any]:
					raise NotImplementedError()


