from functools import partial
import hypothesis as h
import hypothesis.strategies as hs
import hypothesis.extra.numpy as hnp
import numpy as np
floats_notnull = partial(hs.floats, allow_nan=False, allow_infinity=False)
complex_notnull = partial(hs.complex_numbers, allow_nan=False, allow_infinity=False)
data_strategy_real = hnp.arrays(
np.float64,
hs.tuples(hs.integers(min_value=2, max_value=50),
hs.integers(min_value=2, max_value=5)),
floats_notnull()
)
data_strategy_complex = hnp.arrays(
np.complex64,
hs.tuples(hs.integers(min_value=2, max_value=50), hs.just(1)),
complex_notnull()
)
data_strategy = hs.one_of(data_strategy_real, data_strategy_complex)
Если вы запустите data_strategy.example()
пару раз, вы заметите, что некоторые из значений в результате имеют бесконечные действительные или мнимые части.Я хотел специально запретить бесконечные или NaN части.
Что я делаю не так?
Обновление : если я использую
data_strategy = hs.lists(complex_notnull, min_size=2, max_size=50)
и преобразовать это в массив внутри моего теста, проблема, похоже, исчезнет.Комплексные числа переполнены?Я не получаю обычного предупреждения об устаревании из-за Гипотезы.
И если я использую
data_strategy = data_strategy_real
, не появляется inf
s.