File: README.md

package info (click to toggle)
python-hypothesis 6.138.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,272 kB
  • sloc: python: 62,853; ruby: 1,107; sh: 253; makefile: 41; javascript: 6
file content (53 lines) | stat: -rw-r--r-- 2,108 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
This folder contains tests for `hypothesis.extra.array_api`.

## Mocked array module

A mock of the Array API namespace exists as `mock_xp` in `extra.array_api`. This
wraps NumPy-proper to conform it to the *draft* spec, where `array_api_strict`
might not. This is not a fully compliant wrapper, but conforms enough for the
purposes of testing.

## Running against different array modules

You can test other array modules which adopt the Array API via the
`HYPOTHESIS_TEST_ARRAY_API` environment variable. There are two recognized
options:

* `"default"`: uses the mock.
* `"all"`: uses all array modules found via entry points, _and_ the mock.

If neither of these, the test suite will then try resolve the variable like so:

1. If the variable matches a name of an available entry point, load said entry point.
2. If the variables matches a valid import path, import said path.

For example, to specify NumPy's Array API implementation[^1], you could use its
entry point (**1.**),

    HYPOTHESIS_TEST_ARRAY_API=numpy pytest tests/array_api

or use the import path (**2.**),

    HYPOTHESIS_TEST_ARRAY_API=numpy.array_api pytest tests/array_api

The former method is more ergonomic, but as entry points are optional for
adopting the Array API, you will need to use the latter method for libraries
that opt-out.

## Running against different API versions

You can specify the `api_version` to use when testing array modules via the 
`HYPOTHESIS_TEST_ARRAY_API_VERSION` environment variable. There is one
recognized option:

* `"default"`: infers the latest API version for each array module.

Otherwise the test suite will use the variable as the `api_version` argument for
`make_strategies_namespace()`.

In the future we intend to support running tests against multiple API versioned
namespaces, likely with an additional recognized option that infers all
supported versions.

[^1]: Note NumPy will likely remove `numpy.array_api` in the future ([NEP 56](https://github.com/numpy/numpy/pull/25542))
in favour of the third-party [`array-api-strict`](https://github.com/data-apis/array-api-strict) library.