Esta questão considera NEP 51 , que alterou a representação de strings do NumPy. Este documento descreve alguns problemas potenciais de compatibilidade com versões anteriores:
Uma exceção a isso são as bibliotecas downstream com documentação e especialmente testes de documentação. Como a representação de muitos valores mudará, em muitos casos a documentação terá que ser atualizada...
Pode ser necessário adotar ferramentas para testes doctest para permitir a verificação de valor aproximado para a nova representação.
Entretanto, olhando a documentação, não vejo nenhuma alteração na saída dos exemplos.
Olhando a documentação do NumPy, por exemplo numpy.sin
:
Imprima o seno de um ângulo:
>>> np.sin(np.pi/2.) 1.0
Mas com o NumPy mais recente, este exemplo mostra np.float64(1.0)
.
E algo semelhante com a documentação do SciPy, por exemplo scipy.special.erfinv
:
>>> from scipy.special import erfinv, erf >>> erfinv(0.5) 0.4769362762044699
Mas com o NumPy mais recente, este exemplo mostra np.float64(0.4769362762044699)
.
Estou ciente de que numpy.set_printoptions
devo alterar este padrão:
>>> np.set_printoptions(legacy="1.25")
>>> np.sin(np.pi/2.)
1.0
>>> erfinv(0.5)
0.4769362762044699
no entanto, não vejo isso sendo usado na documentação do NumPy ou do SciPy.
Como esses documentos do Sphinx são configurados para mostrar as saídas legadas?
Para módulos com exemplos, como os doctests do pytest seriam executados para passar?
(Por exemplo, usando pytest --doctest-modules mymod
)
Não há tal configuração acontecendo. As saídas de exemplo são codificadas nas docstrings NumPy. Elas não são geradas executando o código toda vez que os documentos são construídos.
Você pode imprimir as docstrings se quiser ver - por exemplo,
print(numpy.sin.__doc__)
. Você também pode olhar o código-fonte .Em algum momento, os mantenedores do NumPy provavelmente vão querer atualizar as docstrings para mostrar a nova saída. Eles não fizeram isso até agora, talvez porque dá muito trabalho.