Еще одна попытка с предположением, что январь 1 всегда на неделе 1.
from datetime import date
from calendar
def week_number(ndate, week_start=calendar.MONDAY):
new_years_day = ndate.replace(month=1, day=1)
offset = (new_years_day.weekday() - week_start) % 7 # Count back to start of week. Modulo for positive value.
all_days = (ndate - new_years_day).days + offset # Days ago week 1 started.
return (all_days // 7) + 1 # Integer division means we don't have to floor() it. Add 1 for human readable numbers.
print(week_number(date(2020, 1, 1))) # 1, always
print(week_number(date(2020, 3, 29))) # 13
print(week_number(date(2020, 3, 29), calendar.SATURDAY)) # 14
print(week_number(date(2020, 3, 27), calendar.SATURDAY)) # 13