Como chegar sexta-feira passada?

O código abaixo deve retornar na última sexta-feira, 16:00:00. Mas isso retornaSexta-feira da semana anterior. Como consertar isso?

now = datetime.datetime.now()
test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4, weeks=-1))
test = test.replace(hour=16,minute=0,second=0,microsecond=0)

Upd. Eu uso a seguinte abordagem agora - é o melhor?

now = datetime.datetime.now()
if datetime.datetime.now().weekday() > 4:
    test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4))
else:
    test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4, weeks=-1))
test = test.replace(hour=16,minute=0,second=0,microsecond=0)

Upd2. Apenas para dar um exemplo. Vamos supor que hoje é5 de outubro de 2012. Caso o tempo atual seja igual ou menor que16:00 deve retornar28 de setembro de 2012, de outra forma -5 de outubro de 2012.

questionAnswers(6)

yourAnswerToTheQuestion