Mais algumas opções. No Ipython com o pylab ativado, dedent já está no espaço para nome. Eu verifiquei e é do matplotlib. Ou pode ser importado com:
from matplotlib.cbook import dedent
Na documentação, afirma que é mais rápido que o equivalente a textwrap e, nos meus testes no ipython, é de fato três vezes mais rápido, em média, nos meus testes rápidos. Ele também tem o benefício de descartar qualquer linha em branco inicial, permitindo que você seja flexível na maneira como constrói a string:
"""
line 1 of string
line 2 of string
"""
"""\
line 1 of string
line 2 of string
"""
"""line 1 of string
line 2 of string
"""
O uso da dedução do matplotlib nesses três exemplos fornecerá o mesmo resultado sensato. A função dedent de quebra de texto terá uma linha em branco à esquerda com o 1º exemplo.
A desvantagem óbvia é que o textwrap está na biblioteca padrão enquanto o matplotlib é um módulo externo.
Algumas desvantagens aqui ... as funções dedent tornam seu código mais legível onde as strings são definidas, mas requerem processamento posterior para obter a string no formato utilizável. Nas docstrings, é óbvio que você deve usar o recuo correto, pois a maioria dos usos da docstring fará o processamento necessário.
Quando eu preciso de uma sequência não longa no meu código, encontro o seguinte código confessamente feio, em que deixo a sequência longa sair do recuo anexo. Definitivamente falha em "Bonito é melhor que feio.", Mas alguém poderia argumentar que é mais simples e mais explícito do que a alternativa dedente.
def example():
long_string = '''\
Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip.\
'''
return long_string
print example()