"""loans.py: loan rules for LendIt (design-stage version)."""
from datetime import date, timedelta
LOAN_DAYS = 14
FEE_PER_DAY = 0.25
MAX_FEE = 5.00
def due_date(borrowed: date) -> date:
"""Return the date a loan is due (R2).
>>> due_date(date(2027, 1, 4))
datetime.date(2027, 1, 18)
"""
return borrowed + timedelta(days=LOAN_DAYS)
def late_fee(due: date, returned: date) -> float:
"""Return the late fee in dollars (R3): $0.25 per day late, at most $5.00.
>>> late_fee(date(2027, 1, 18), date(2027, 1, 18))
0.0
>>> late_fee(date(2027, 1, 18), date(2027, 1, 21))
0.75
>>> late_fee(date(2027, 1, 18), date(2027, 2, 17))
5.0
"""
days_late = (returned - due).days
if days_late <= 0:
return 0.0
return min(MAX_FEE, days_late * FEE_PER_DAY)
if __name__ == "__main__":
import doctest
print(doctest.testmod())