pyvista-validation
Validate and standardize array-like input.
These are the input validation functions developed for PyVista, extracted into a standalone package so any project can use them. NumPy is the only required dependency: PyVista is not needed, and VTK and SciPy are optional.
The functions are useful when writing Python methods that accept flexible array-like input, wrapping VTK, or anywhere you want one standard representation out of many possible inputs.
Warning — The API of this package is unstable and likely to change between minor versions (for example
0.1.0to0.2.0). Pin the exact version you depend on, for examplepyvista-validation==0.1.0.
Installation
pip install pyvista-validation
VTK and SciPy are only needed to validate their own object types, so they ship as extras:
pip install pyvista-validation[vtk] # accept vtkMatrix3x3, vtkMatrix4x4, vtkTransform
pip install pyvista-validation[scipy] # accept scipy.spatial.transform.Rotation
pip install pyvista-validation[all] # both
Neither is imported unless you actually pass one of their objects in.
The wheels carry a C extension that runs the checks; the package works the same without it,
from the source distribution or with PYVISTA_VALIDATION_ACCELERATE=false in the environment.
Two families of function
A check function:
- Performs a simple validation on a single input variable.
- Raises an error if the check fails due to invalid input.
- Does not modify its input, and returns it unchanged, typed as what the check established, so a check can be used inline.
A validate function:
- Uses
checkfunctions to check the type and/or value of input arguments. - Applies optional constraints -- for example input or output must have a specific length, shape, type, data-type, etc.
- Accepts many different input types or values and standardizes the output as a single representation with known properties.
Usage
validate functions return a standard representation:
>>> import numpy as np
>>> from pyvista_validation import validate_array3
>>> from pyvista_validation import validate_arrayNx3
>>> from pyvista_validation import validate_data_range
>>> validate_array3([1, 2, 3])
array([1, 2, 3])
>>> validate_arrayNx3([[1, 2, 3], [4, 5, 6]])
array([[1, 2, 3],
[4, 5, 6]])
>>> validate_data_range([0, 1])
(0, 1)
A 3x3 input to validate_transform4x4 is padded into a 4x4 matrix:
>>> from pyvista_validation import validate_transform4x4
>>> validate_transform4x4(np.eye(3))
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
validate_array is the general-purpose entry point that the others build on, and takes
the constraints as keyword arguments:
>>> from pyvista_validation import validate_array
>>> validate_array(
... [1, 2, 3], must_have_shape=(3,), must_be_in_range=[0, 5], dtype_out=float
... )
array([1., 2., 3.])
check functions return their input unchanged and raise on failure:
>>> from pyvista_validation import check_range
>>> from pyvista_validation import check_subdtype
>>> check_range([1, 5], rng=[0, 3])
Traceback (most recent call last):
...
ValueError: Array values must all be less than or equal to 3.
>>> check_subdtype(np.array([1.0]), np.integer)
Traceback (most recent call last):
...
TypeError: Input has incorrect dtype of 'float64'. The dtype must be a subtype of <class 'numpy.integer'>.
Error messages name the offending value and the constraint it violated:
>>> validate_array3([1, 2])
Traceback (most recent call last):
...
ValueError: Array has shape (2,) which is not allowed. Shape must be one of [(3,), (1, 3), (3, 1)].
Pass name= to any function to control how the input is described in that message.
Common use cases
| To validate | Use |
|---|---|
| A 3-element vector | validate_array3 |
| An Nx3 point or vector array | validate_arrayNx3 |
| Point or cell IDs | validate_arrayN_unsigned |
| A transformation matrix | validate_transform4x4 |
| A rotation matrix | validate_rotation |
API reference
validate functions
| Function | Description |
|---|---|
validate_array |
Check and validate a numeric array meets specific requirements. |
validate_array3 |
Validate a numeric 1D array with 3 elements. |
validate_arrayN |
Validate a numeric 1D array. |
validate_arrayN_unsigned |
Validate a numeric 1D array of non-negative (unsigned) integers. |
validate_arrayNx3 |
Validate an array is numeric and has shape Nx3. |
validate_axes |
Validate 3D axes vectors. |
validate_data_range |
Validate a data range. |
validate_dimensionality |
Validate a dimensionality. |
validate_number |
Validate a real, finite number. |
validate_rotation |
Validate a rotation as a 3x3 matrix. |
validate_transform3x3 |
Validate transform-like input as a 3x3 ndarray. |
validate_transform4x4 |
Validate transform-like input as a 4x4 ndarray. |
check functions
| Function | Description |
|---|---|
check_contains |
Check if an item is in a container. |
check_finite |
Check if an array has finite values, that is, no NaN or Inf values. |
check_greater_than |
Check if an array's elements are all greater than some value. |
check_instance |
Check if an object is an instance of the given type or types. |
check_integer |
Check if an array has integer or integer-like float values. |
check_iterable |
Check if an object is an instance of Iterable. |
check_iterable_items |
Check if an iterable's items all have a specified type. |
check_length |
Check if the length of an array meets specific requirements. |
check_less_than |
Check if an array's elements are all less than some value. |
check_ndim |
Check if an array has the specified number of dimensions. |
check_nonnegative |
Check if an array's elements are all nonnegative. |
check_number |
Check if an object is an instance of Number. |
check_range |
Check if an array's values are all within a specific range. |
check_real |
Check if an array has real numbers (float or integer type). |
check_sequence |
Check if an object is an instance of Sequence. |
check_shape |
Check if an array has the specified shape. |
check_sorted |
Check if an array's values are sorted. |
check_string |
Check if an object is an instance of str. |
check_subdtype |
Check if an input's data-type is a subtype of another data-type or data-types. |
check_type |
Check if an object is one of the given type or types. |
Every function has a full docstring with parameters and examples.
Relationship to PyVista
This code began as pyvista.core._validation and keeps its full commit history here.
PyVista is a downstream consumer, and CI installs this checkout into PyVista and runs
PyVista's own core test suite against it on every change.
One PyVista-specific helper, _validate_color_sequence, was not moved: it is built on
pyvista.plotting's Color class and stays with PyVista.
License
MIT
Release files for pyvista-validation 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyvista_validation-0.2.1.tar.gz | 554.4 kB | Details |
Built distributions (wheels)
Total release size: 2.0 MB
Release files / pyvista_validation-0.2.1.tar.gz
| Download URL | pyvista_validation-0.2.1.tar.gz |
|---|---|
| Size | 554.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
287bde9b6571013e43106c49686d0b9f644fe1a78bba2a180567de2484d3c541
|
|
BLAKE2b-256 checksum How to use checksums |
4463e0b33fd37fc5850b4723561896e1c89afdc72c340faaf8be8050821336c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / pyvista_validation-0.2.1-cp310-abi3-win_amd64.whl
| Download URL | pyvista_validation-0.2.1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 74.7 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
d94aca7a6649c90ea66d1730e12f4ed0e5a41cdd04bfb695ae3ab9b9b0a483c4
|
|
BLAKE2b-256 checksum How to use checksums |
8c7b34d420f242cb50ceadee3632d71baa8c0463d2ef8972bae0a9e267783239
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / pyvista_validation-0.2.1-cp310-abi3-win32.whl
| Download URL | pyvista_validation-0.2.1-cp310-abi3-win32.whl |
|---|---|
| Size | 68.7 kB |
| Tags | CPython 3.10 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
7725b6539a2baa20a4c8b0f803bdccf94de9f40dc6a21d526c646fc3b441913c
|
|
BLAKE2b-256 checksum How to use checksums |
24cd92cd860a5016017646121aa278fec4b39d2039704360845f9bd0e24f0b8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / pyvista_validation-0.2.1-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | pyvista_validation-0.2.1-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 259.0 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
530eef1ff587bcbb3885b7ea468306c227602abeff9f12a00fa111b727d30cc3
|
|
BLAKE2b-256 checksum How to use checksums |
4d730a3dd8efcc69a565343599c6f79005661148dadab0264ec0c872899a140a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / pyvista_validation-0.2.1-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | pyvista_validation-0.2.1-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 290.8 kB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
4ad75a44b68c14d77f0c7e2d8de0fbe801a89aa1b769b673160050ed3cef9f51
|
|
BLAKE2b-256 checksum How to use checksums |
5334521c8615de96bab8d86ce21ec7d8fee9e879ad91e5c7493247de2cc00ea5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / pyvista_validation-0.2.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyvista_validation-0.2.1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 261.2 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ce68ba7990ecef03e933a5f26a792637519e1ca56db054b4bfe8b7bdf3d304ad
|
|
BLAKE2b-256 checksum How to use checksums |
a315bc99bd2253090cc5a048e02e2985fb9234decdc43c7eb633f73267c6589e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / pyvista_validation-0.2.1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyvista_validation-0.2.1-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 293.2 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d307da59afcb2ba3fe67e66eb25dc929a4a527c1716c4bdd33f5960a46275c19
|
|
BLAKE2b-256 checksum How to use checksums |
b885b9a00631dcb3dcd44cee8dda1029a5255840966c8bc79ceb0b25b2325cdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / pyvista_validation-0.2.1-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | pyvista_validation-0.2.1-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 87.7 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2e4b1174c849a9416db39edeb3e7d60a4b2440b23b54ec7891a734f311aba04e
|
|
BLAKE2b-256 checksum How to use checksums |
eed4235d6af3b36963663ea7b37fca094af8f311eaa5bf80d1948a9ff095cf45
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency logRelease files / pyvista_validation-0.2.1-cp310-abi3-macosx_10_9_x86_64.whl
| Download URL | pyvista_validation-0.2.1-cp310-abi3-macosx_10_9_x86_64.whl |
|---|---|
| Size | 83.6 kB |
| Tags | CPython 3.10 abi3 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
f447750ef71951620536df04f4bbf606adbd202c2e6b4eadd44c3bd1f673a0e5
|
|
BLAKE2b-256 checksum How to use checksums |
e6a5c697df7b2b28eb898830cdfbddbeb4203748c39b5e530d1aadc41eb909ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 5, 2026.
Transparency log