Melhor maneira de encontrar os meses entre duas datas

Eu tenho a necessidade de ser capaz de encontrar com precisão os meses entre duas datas em python. Eu tenho uma solução que funciona, mas não é muito boa (como em elegante) ou rápida.

dateRange = [datetime.strptime(dateRanges[0], "%Y-%m-%d"), datetime.strptime(dateRanges[1], "%Y-%m-%d")]
months = [] 

tmpTime = dateRange[0]
oneWeek = timedelta(weeks=1)
tmpTime = tmpTime.replace(day=1)
dateRange[0] = tmpTime
dateRange[1] = dateRange[1].replace(day=1)
lastMonth = tmpTime.month
months.append(tmpTime)
while tmpTime < dateRange[1]:
    if lastMonth != 12:
        while tmpTime.month <= lastMonth:
            tmpTime += oneWeek
        tmpTime = tmpTime.replace(day=1)
        months.append(tmpTime)
        lastMonth = tmpTime.month

    else:
        while tmpTime.month >= lastMonth:
            tmpTime += oneWeek
        tmpTime = tmpTime.replace(day=1)
        months.append(tmpTime)
        lastMonth = tmpTime.month

Então, só para explicar, o que estou fazendo aqui é pegar as duas datas e convertê-las do formato iso em objetos de data e hora python. Depois, passo adicionando uma semana ao objeto de data e hora de início e verifico se o valor numérico do mês é maior (a menos que o mês seja dezembro, ele verifica se a data é menor). Se o valor for maior, anexo-o à lista. de meses e continue circulando até chegar à minha data de término.

Funciona perfeitamente, simplesmente não parece ser uma boa maneira de fazê-lo ...

questionAnswers(28)

yourAnswerToTheQuestion