dry-python / dry-python/classes

Hypothesis integration

Open
#234 2 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
730
Forks
30
PR merge metrics
No merged PRs in 30d

Description

Right now we don't test `classes` with `hypothesis` at all.

But, I have a great idea (at least it seems to me like so) of adding a hypothesis plugin, similar to one we have in `returns`: https://github.com/dry-python/returns/blob/master/returns/contrib/hypothesis/laws.py

What should it do?

- `check_typeclass(typeclass_instance)` will check that for all existing types and protocols some valid return type is produced. For example, `@typeclass def some(instance) -> str` must produce `str` for all `instance`, `protocol`, and supported types and it must produce `NotImplementedError` for types that are not supported
- Looks like `check_typeclass` must have `allow_instances`, `allow_protocols`, `allow_unknown` kw `bool` arguments to configure what types we actually need in a resulting strategy

It would be a nice companion to our `mypy` check.

@Zac-HD do you like it? Maybe you have any other ideas?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.