Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve support for new and user-defined Numpy dtypes (e.g. np.dtypes.StringDType) #4039

Open
Zac-HD opened this issue Jul 11, 2024 · 0 comments
Labels
enhancement it's not broken, but we want it to be better interop how to play nicely with other packages

Comments

@Zac-HD
Copy link
Member

Zac-HD commented Jul 11, 2024

(previously: #3950 and #3955 got existing functionality working on Numpy 2.0; now we want to support a new feature)

import numpy
from hypothesis import given
from hypothesis.extra.numpy import from_dtype

@given(from_dtype(numpy.dtypes.StringDType()))
def test(x):
    pass

currently raises hypothesis.errors.InvalidArgument: No strategy inference for StringDType(), which is not ideal for something that ships upstream. We could fix that with a special case, but I'd like to support user-defined extension dtypes too if possible, which I expect will take some kind of registry system. (I spoke to @ngoldbaum at Scipy and confirmed that we can't introspect dtypes from Python, though something Arrow-based might eventually be possible)

We should also improve the error message if you forget to construct an instance: it's all to easy to do and instead you see InvalidArgument: Expected dtype but got dtype=<class 'numpy.dtypes.StringDType'> (type=_DTypeMeta).

@Zac-HD Zac-HD added enhancement it's not broken, but we want it to be better interop how to play nicely with other packages labels Jul 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement it's not broken, but we want it to be better interop how to play nicely with other packages
Projects
None yet
Development

No branches or pull requests

1 participant