PyVista: 3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK)
Authors/Creators
Description
PyVista 0.48: Built to Extend
PyVista 0.48 is a community release focused on extensibility. Third-party packages can now plug directly into PyVista without monkey-patching or forks. New registries cover readers, writers, themes, plotter components, dataset accessors, interactor styles, and notebook backends, all wired through standard Python entry points. If you maintain a downstream project that wraps PyVista, start here.
Highlights
Plugin registries. pv.read() is now backed by a pluggable reader registry, with a matching writer registry that adopts the new pyvista-zstd package as the first external writer. Themes, interactor styles, notebook backends, dataset accessors, and plotter components follow the same pattern. The plotter component work migrates ScalarBars, picking, and widgets onto the new architecture so downstream packages can swap in replacements.
Bug fixes. Shared meshes across subplots no longer mutate each other's active scalars. Smooth shading is ported to a proper VTK algorithm so it composes with the rest of a pipeline. macOS users get a fix for the zombie off-screen window. pyvista_ndarray no longer leaks a vtkWeakReference through point_data.__setitem__. Colormap resolution is now deterministic, preferring matplotlib over third-party shadows.
New rendering and I/O. Stereo rendering, custom point sprites and max-intensity projection, environment texture rotation with a background toggle, a CalculiX .frd reader, force_opaque plotting, and DataFrame and Apache Arrow export for mesh data.
Notebook and CLI. A modernized HTML repr and a PNG repr for plotters for cleaner Jupyter output. The CLI gains a validate command with colorized reports and glob support for bulk file conversions.
Performance. Array and filter optimizations, wrap() overhead reductions, VTK SMP tools helpers, and a remove_nan_cells helper.
Mesh validation and cell types. Expanded validate_mesh and cell_validator, new CellType properties, a dimension_map, Bezier and Lagrange examples, and to_hexahedra / to_quads for ImageData and RectilinearGrid.
Eight new contributors landed PRs this cycle. Thanks to @jcapriot, @Zetarcos, @3rav, @bryzgin, @saschabuehrle, @kuriankattukaren-dev, @T4mmi, and @Maxwell-Rosen for jumping in.
Full changelog: https://github.com/pyvista/pyvista/compare/v0.47.0...v0.48.0
<!-- Release notes generated using configuration in .github/release.yml at release/0.48 -->
What's Changed
Breaking Changes
- Use delimited color names by @user27182 in https://github.com/pyvista/pyvista/pull/8350
- Make mesh validation report body show error message by default by @user27182 in https://github.com/pyvista/pyvista/pull/8354
- Fix colormap determinism: prefer matplotlib over third-party shadows by @banesullivan in https://github.com/pyvista/pyvista/pull/8593
New Features
- Augment
cell_validatorwith additional checks by @user27182 in https://github.com/pyvista/pyvista/pull/8318 - Add
exclude_fieldsoption tovalidate_meshby @user27182 in https://github.com/pyvista/pyvista/pull/8327 - Update paraview named colors by @user27182 in https://github.com/pyvista/pyvista/pull/8347
- Add
validatecommand to PyVista CLI by @user27182 in https://github.com/pyvista/pyvista/pull/8344 - Add
report_bodykeyword tovalidate_meshby @user27182 in https://github.com/pyvista/pyvista/pull/8353 - Add type annotations for literal named colors by @user27182 in https://github.com/pyvista/pyvista/pull/8349
- Add
--reportoption tovalidateCLI command by @user27182 in https://github.com/pyvista/pyvista/pull/8355 - Format and color output text from
validateCLI by @user27182 in https://github.com/pyvista/pyvista/pull/8358 - Allow excluding fields from a subset of mesh validation fields by @user27182 in https://github.com/pyvista/pyvista/pull/8364
- Add
DataSet.bounding_sphereproperty by @user27182 in https://github.com/pyvista/pyvista/pull/8385 - Add the ability to read CalculiX .frd files by @3rav in https://github.com/pyvista/pyvista/pull/8255
- Support registration of custom notebook backends by @banesullivan in https://github.com/pyvista/pyvista/pull/8389
- Add
CellTypeproperties by @user27182 in https://github.com/pyvista/pyvista/pull/8393 - Add
ConvexPointSetcell type example by @user27182 in https://github.com/pyvista/pyvista/pull/8400 - Add
generate_cell_blocksto generate mesh with arbitrary cell type(s) by @user27182 in https://github.com/pyvista/pyvista/pull/8404 - Add
force_opaqueargument to plotting methods by @edabor in https://github.com/pyvista/pyvista/pull/8408 - Modernize HTML repr for Jupyter notebooks by @banesullivan in https://github.com/pyvista/pyvista/pull/8443
- Add pluggable reader registry for pv.read() by @banesullivan in https://github.com/pyvista/pyvista/pull/8437
- Add interactor style registry and theme entry by @banesullivan in https://github.com/pyvista/pyvista/pull/8446
- Add
cell_validatortolerance keywords by @user27182 in https://github.com/pyvista/pyvista/pull/8420 - Actor shader customizations for custom point sprites and max intensity projection by @banesullivan in https://github.com/pyvista/pyvista/pull/8459
- Add SMP tools helper by @banesullivan in https://github.com/pyvista/pyvista/pull/8487
- Add remove_nan_cells helper filter by @banesullivan in https://github.com/pyvista/pyvista/pull/8504
- Return a context manager with pv.enable_smp_tools() by @banesullivan in https://github.com/pyvista/pyvista/pull/8495
- Add writer registry and adopt pyvista-zstd by @banesullivan in https://github.com/pyvista/pyvista/pull/8490
- Add str method to GPUInfo and update related tests by @tkoyama010 in https://github.com/pyvista/pyvista/pull/7420
- Add
CellType.dimension_mapclass property by @banesullivan in https://github.com/pyvista/pyvista/pull/8496 - Add PNG repr to plotter by @banesullivan in https://github.com/pyvista/pyvista/pull/8583
- Filter out VTK methods/attributes in dir by @banesullivan in https://github.com/pyvista/pyvista/pull/8584
- Add dataset accessor registry for third-party plugins by @banesullivan in https://github.com/pyvista/pyvista/pull/8594
- Add DataFrame and Arrow export for mesh data by @banesullivan in https://github.com/pyvista/pyvista/pull/8587
- Add theme registry and entrypoints by @banesullivan in https://github.com/pyvista/pyvista/pull/8568
- Add
merge_pointsandcell_centersoptions toalign_xyzfilter by @user27182 in https://github.com/pyvista/pyvista/pull/6542 - Support Stereo Rendering by @banesullivan in https://github.com/pyvista/pyvista/pull/6743
- Support glob patterns in CLI for bulk file conversions by @banesullivan in https://github.com/pyvista/pyvista/pull/8578
- Add rotation and background toggle to set_environment_texture by @banesullivan in https://github.com/pyvista/pyvista/pull/8601
- Add plotter component registry and migrate ScalarBars, picking, and widgets by @banesullivan in https://github.com/pyvista/pyvista/pull/8604
Bug fixes or behavior changes
- Require VTK 9.5 for distinct cell type check by @akaszynski in https://github.com/pyvista/pyvista/pull/8308
- Improve PointPickingElementHandler.get_point to preserve point data by @tkoyama010 in https://github.com/pyvista/pyvista/pull/8338
- Raise error for bad plane with
texture_map_to_planeby @user27182 in https://github.com/pyvista/pyvista/pull/8339 - Remove
relpathfromdeprecate_positional_argsdecorator by @jcapriot in https://github.com/pyvista/pyvista/pull/8345 - Use
getattr_staticinstead of dynamicgetattrlookup for checking new attributes by @user27182 in https://github.com/pyvista/pyvista/pull/8370 - Fix notch stress dataset by removing invalid and unused points by @user27182 in https://github.com/pyvista/pyvista/pull/8380
- Skip NSWindow for off-screen rendering and solve the zombie window on macOS by @banesullivan in https://github.com/pyvista/pyvista/pull/8423
- Fix
CellType.vtk_classfor Bezier/Lagrange Triangle/Quadrilateral cell types by @user27182 in https://github.com/pyvista/pyvista/pull/8441 - Fixes for VTK 9.6.1 by @user27182 in https://github.com/pyvista/pyvista/pull/8440
- Add ability to update scalar bar title by @banesullivan in https://github.com/pyvista/pyvista/pull/8456
- Add line check to triangulate_contours by @akaszynski in https://github.com/pyvista/pyvista/pull/8469
- Fix shared mesh active scalars mutation in subplots by @banesullivan in https://github.com/pyvista/pyvista/pull/8472
- Fix issues with point shader and surface rendering by @banesullivan in https://github.com/pyvista/pyvista/pull/8500
- Fix
:force_static:being silently ignored in docstring Examples by @banesullivan in https://github.com/pyvista/pyvista/pull/8505 - Bump pytest-pyvista for docs build image report by @banesullivan in https://github.com/pyvista/pyvista/pull/8503
- Fix bug with reference cycle by @larsoner in https://github.com/pyvista/pyvista/pull/8515
- Fix vtk-remote-view.set_widgets is missing Error by @ConnorNoddin in https://github.com/pyvista/pyvista/pull/7431
- Fix pyvista_ndarray from leaking a vtkWeakReference through point_data.setitem by @banesullivan in https://github.com/pyvista/pyvista/pull/8534
- Remove timing assertion from test_contour_labels_strict_external by @banesullivan in https://github.com/pyvista/pyvista/pull/8536
- Port smooth shading to a VTK algorithm and add general-purpose algorithm utilities by @banesullivan in https://github.com/pyvista/pyvista/pull/8498
- Guard process_events() against X/EGL interactor mismatch by @banesullivan in https://github.com/pyvista/pyvista/pull/8542
- Array and filter optimizations by @banesullivan in https://github.com/pyvista/pyvista/pull/8554
- Make labels always visible for data model and point_neighbors_levels examples by @user27182 in https://github.com/pyvista/pyvista/pull/8551
- Expose
factorparameter to theadd_mesh_sliceAPI by @Maxwell-Rosen in https://github.com/pyvista/pyvista/pull/8590 - Global config and address wrap() overhead by @banesullivan in https://github.com/pyvista/pyvista/pull/8493
- [hotfix] fix Jedi tab-completion crashes on DataSet types by @banesullivan in https://github.com/pyvista/pyvista/pull/8592
- Use linear interpolation with anti-aliasing when resampling environment texture by @user27182 in https://github.com/pyvista/pyvista/pull/7760
- Add
to_hexahedraandto_quadsmethods forImageDataandRectilinearGridby @user27182 in https://github.com/pyvista/pyvista/pull/8230
Documentation
- Add Generative AI guidelines by @tkoyama010 in https://github.com/pyvista/pyvista/pull/8319
- Remove assertions from
mesh_validationexample by @user27182 in https://github.com/pyvista/pyvista/pull/8328 - Document
MeshValidationFieldstype annotations for mesh validation by @user27182 in https://github.com/pyvista/pyvista/pull/8333 - Fix reference to
download_birdinresamplefilter by @user27182 in https://github.com/pyvista/pyvista/pull/8348 - Update Contributor Covenant Code of Conduct to version 3.0 by @tkoyama010 in https://github.com/pyvista/pyvista/pull/8387
- Add missing Lagrange and Bezier cell examples by @user27182 in https://github.com/pyvista/pyvista/pull/8386
- docs: add examples to Axis.pen and Axis.grid_pen by @bryzgin in https://github.com/pyvista/pyvista/pull/8390
- Fix bullets formatting in
FRDReaderdocs by @user27182 in https://github.com/pyvista/pyvista/pull/8394 - Remove redundant generation of PolyDataIOTable in docs build by @user27182 in https://github.com/pyvista/pyvista/pull/8399
- Make
CellTypebadges link to new attributes by @user27182 in https://github.com/pyvista/pyvista/pull/8401 - DOC: Add CalculiX cgx custom colormap example to colormap.py by @3rav in https://github.com/pyvista/pyvista/pull/8402
- Fix plotter variable name in trame example by @user27182 in https://github.com/pyvista/pyvista/pull/8416
- Revert static rendering in documentation by @edabor in https://github.com/pyvista/pyvista/pull/8431
- Configure icon links to PyPI to the right of bar by @tkoyama010 in https://github.com/pyvista/pyvista/pull/6201
- Modernize Docker build with a single multi-stage Dockerfile by @banesullivan in https://github.com/pyvista/pyvista/pull/8524
- Forbid using
pltrasPlottervariable name by @user27182 in https://github.com/pyvista/pyvista/pull/8539 - Remove future annotations from examples gallery by @banesullivan in https://github.com/pyvista/pyvista/pull/8538
- Rename pyvista/data repository by @banesullivan in https://github.com/pyvista/pyvista/pull/8573
- Document dataset licenses; add CC0 bust replacements for Nefertiti by @banesullivan in https://github.com/pyvista/pyvista/pull/8574
- Document licensing and attribution for
download_dicom_stackby @banesullivan in https://github.com/pyvista/pyvista/pull/8572 - Increase docs coverage by @banesullivan in https://github.com/pyvista/pyvista/pull/8589
- Publish development wheels alongside the docs site by @banesullivan in https://github.com/pyvista/pyvista/pull/8599
- Automated PR: Update Local Intersphinx by @pyvista-bot-ci[bot] in https://github.com/pyvista/pyvista/pull/8612
- Remove broken link to pyivsta-wheels by @banesullivan in https://github.com/pyvista/pyvista/pull/8611
- Add documentation coverage for
plottingmodule by @user27182 in https://github.com/pyvista/pyvista/pull/8619 - v0.48 deprecations by @banesullivan in https://github.com/pyvista/pyvista/pull/8617
- Add gallery examples for common PyVista APIs by @banesullivan in https://github.com/pyvista/pyvista/pull/8513
Maintenance
- Add docstring test for windows and older python by @user27182 in https://github.com/pyvista/pyvista/pull/8307
- Add Python 3.14 classifier to pyproject.toml by @user27182 in https://github.com/pyvista/pyvista/pull/8316
- Do not load
download_biplanein docstring on Windows by @user27182 in https://github.com/pyvista/pyvista/pull/8320 - Exclude
trame-vtk2.10.3 from deps by @edabor in https://github.com/pyvista/pyvista/pull/8322 - Sort
cell_validatorandvalidate_meshfields alphabetically by @user27182 in https://github.com/pyvista/pyvista/pull/8324 - Upper pin
trame-vtkby @edabor in https://github.com/pyvista/pyvista/pull/8325 - Update
trame-vtkpin comment by @user27182 in https://github.com/pyvista/pyvista/pull/8331 - Add connectivity cmap test by @user27182 in https://github.com/pyvista/pyvista/pull/8356
- Bump the all-else group with 5 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8363
- Update pytest-mypy-plugins requirement from <3.3.0 to <3.4.0 in the pytest group by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8361
- Bump the gha group with 3 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8362
- Remove VTK error catcher from HDF reader by @user27182 in https://github.com/pyvista/pyvista/pull/8365
- Use a separate bullet for MultiBlock mesh nodes with mesh validation by @user27182 in https://github.com/pyvista/pyvista/pull/8366
- Bump lycheeverse/lychee-action from 2.7.0 to 2.8.0 in the gha group by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8374
- Use
vtkExtractCellsinternally withextract_cellsby @user27182 in https://github.com/pyvista/pyvista/pull/8371 - chore: update pre-commit hooks by @pre-commit-ci[bot] in https://github.com/pyvista/pyvista/pull/8375
- maint: upgrade ruff from v0.15.0 to v0.15.4 by @tkoyama010 in https://github.com/pyvista/pyvista/pull/8376
- Include named colormap type hints for
color_labelsfilters by @user27182 in https://github.com/pyvista/pyvista/pull/8396 - Bump the gha group with 7 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8411
- Bump the all-else group with 4 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8412
- Bump the pytest group with 2 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8410
- Bump the trame group with 2 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8360
- Bump trame-vtk to 2.11.6 by @user27182 in https://github.com/pyvista/pyvista/pull/8417
- Pin VTK 9.5.2 job and limit VTK 9.6.1 by @banesullivan in https://github.com/pyvista/pyvista/pull/8429
- Bump pypandoc from 1.16.2 to 1.17 in the sphinx group by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8432
- Bump the all-else group with 2 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8435
- Update pytest-cov requirement from <7.1.0 to <7.2.0 in the pytest group by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8433
- Bump nick-fields/retry from 3.0.2 to 4.0.0 in the gha group by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8434
- Initialize
ren_win = NoneinBasePlotterby @user27182 in https://github.com/pyvista/pyvista/pull/8418 - Enable merge queue for PRs by @banesullivan in https://github.com/pyvista/pyvista/pull/8452
- Limit I18N Documentation Build to Releases by @banesullivan in https://github.com/pyvista/pyvista/pull/8454
- Remove GitHub stars from README by @banesullivan in https://github.com/pyvista/pyvista/pull/8457
- Regression image test report on CI by @banesullivan in https://github.com/pyvista/pyvista/pull/8451
- Remove select jobs from the merge queue by @banesullivan in https://github.com/pyvista/pyvista/pull/8458
- Skip docs build for unrelated changes by @banesullivan in https://github.com/pyvista/pyvista/pull/8455
- Raise error when getting regular faces but faces are irregular by @user27182 in https://github.com/pyvista/pyvista/pull/8463
- Replace PR comments with commit statuses for preview deployments by @banesullivan in https://github.com/pyvista/pyvista/pull/8465
- Fix CI skip conditions to work with required status checks by @banesullivan in https://github.com/pyvista/pyvista/pull/8466
- Lint rule: disallow bare vtk imports by @banesullivan in https://github.com/pyvista/pyvista/pull/8468
- chore: update pre-commit hooks by @pre-commit-ci[bot] in https://github.com/pyvista/pyvista/pull/8453
- Fix CI failures against NumPy nightly wheel by @banesullivan in https://github.com/pyvista/pyvista/pull/8470
- Add image regression report for doc tests by @banesullivan in https://github.com/pyvista/pyvista/pull/8476
- Reduce noise in image regression warnings by @banesullivan in https://github.com/pyvista/pyvista/pull/8471
- Move integration tests to cron job that raises an issue by @banesullivan in https://github.com/pyvista/pyvista/pull/8478
- Auto-detect Jupyter notebook backend instead of defaulting to trame by @banesullivan in https://github.com/pyvista/pyvista/pull/8481
- Configure Codecov to wait for all CI jobs by @banesullivan in https://github.com/pyvista/pyvista/pull/8482
- Fixes for latest VTK dev wheels (VTK 9.7) by @user27182 in https://github.com/pyvista/pyvista/pull/8405
- Use environments to manage deployments by @banesullivan in https://github.com/pyvista/pyvista/pull/8512
- Isolate netlify deployments to unblock forked PRs by @banesullivan in https://github.com/pyvista/pyvista/pull/8516
- Remove CI skips by @banesullivan in https://github.com/pyvista/pyvista/pull/8519
- chore: update pre-commit hooks, zizmor config, ignore uv.lock by @mwtoews in https://github.com/pyvista/pyvista/pull/8511
- Delete .github/workflows/auto-approve.yml by @banesullivan in https://github.com/pyvista/pyvista/pull/8518
- Add additional regression image for sphx_glr_openfoam_cooling_001_vtksz by @banesullivan in https://github.com/pyvista/pyvista/pull/8526
- Route VTK-dev coverage through central upload job by @banesullivan in https://github.com/pyvista/pyvista/pull/8514
- Update pyvista-zstd version constraints by @banesullivan in https://github.com/pyvista/pyvista/pull/8530
- Add explicit Linux CI job for Python 3.14 + latest stable VTK by @banesullivan in https://github.com/pyvista/pyvista/pull/8533
- Fix some testing failures that are hardware/env specific by @banesullivan in https://github.com/pyvista/pyvista/pull/8531
- Ignore numpy nightly warnings by @banesullivan in https://github.com/pyvista/pyvista/pull/8544
- Replace naming convention tests with pre-commit hooks and ruff rules by @banesullivan in https://github.com/pyvista/pyvista/pull/8543
- Update contributing for documentation image testing by @edabor in https://github.com/pyvista/pyvista/pull/8555
- Mark tinypages parallel test as flaky by @user27182 in https://github.com/pyvista/pyvista/pull/8559
- Inform users about installing
pyvista-zstdwhen reading/saving.pvfiles by @user27182 in https://github.com/pyvista/pyvista/pull/8548 - Streamline local developer workflow by @banesullivan in https://github.com/pyvista/pyvista/pull/8502
- Remove update-pr-branch workflow in favor of merge queue by @tkoyama010 in https://github.com/pyvista/pyvista/pull/8563
- Update tox and CI base python to 3.14 by @user27182 in https://github.com/pyvista/pyvista/pull/8314
- Fix pyvistaqt and geovista integration tests by @banesullivan in https://github.com/pyvista/pyvista/pull/8570
- Disable codecov comments by @banesullivan in https://github.com/pyvista/pyvista/pull/8575
- Fix codecov status by @banesullivan in https://github.com/pyvista/pyvista/pull/8569
- Add browser interactivity test for interactive plots by @user27182 in https://github.com/pyvista/pyvista/pull/8444
- Fix docs preview deploy and align image report deploys by @banesullivan in https://github.com/pyvista/pyvista/pull/8591
- Align plugin registries and defer plugin imports until needed by @banesullivan in https://github.com/pyvista/pyvista/pull/8595
- Use
image_thresholdinternally byselect_valuesto improve performance by @user27182 in https://github.com/pyvista/pyvista/pull/7714 - Remove deprecated NumPy dtype warning from config by @user27182 in https://github.com/pyvista/pyvista/pull/8598
- Do not inherit from
vtkVectorTextforText3DSourceby @user27182 in https://github.com/pyvista/pyvista/pull/8605 - Bump the sphinx group with 2 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8614
- Bump the gha group with 6 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8615
- Add flaky test image for point labels with box test by @user27182 in https://github.com/pyvista/pyvista/pull/8618
- Bump
mypyto 1.20.2 by @user27182 in https://github.com/pyvista/pyvista/pull/8620 - Bump trame-vtk from 2.11.7 to 2.11.8 in the trame group by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8613
- Bump the all-else group with 8 updates by @dependabot[bot] in https://github.com/pyvista/pyvista/pull/8616
- Cache lazily-loaded
pyvistaattributes for faster repeated access by @user27182 in https://github.com/pyvista/pyvista/pull/8607 - Lazily import all VTK classes in a common
pyvista._vtk.pymodule by @user27182 in https://github.com/pyvista/pyvista/pull/8602
New Contributors
- @jcapriot made their first contribution in https://github.com/pyvista/pyvista/pull/8345
- @Zetarcos made their first contribution in https://github.com/pyvista/pyvista/pull/8384
- @3rav made their first contribution in https://github.com/pyvista/pyvista/pull/8255
- @bryzgin made their first contribution in https://github.com/pyvista/pyvista/pull/8390
- @saschabuehrle made their first contribution in https://github.com/pyvista/pyvista/pull/8413
- @kuriankattukaren-dev made their first contribution in https://github.com/pyvista/pyvista/pull/8116
- @T4mmi made their first contribution in https://github.com/pyvista/pyvista/pull/8388
- @Maxwell-Rosen made their first contribution in https://github.com/pyvista/pyvista/pull/8590
- @pyvista-bot-ci[bot] made their first contribution in https://github.com/pyvista/pyvista/pull/8612
Full Changelog: https://github.com/pyvista/pyvista/compare/v0.47.0...v0.48.0
Notes
Files
pyvista/pyvista-v0.48.0.zip
Files
(171.6 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:b8ac0f01003538073157291c98b8ace8
|
171.6 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/pyvista/pyvista/tree/v0.48.0 (URL)
Software
- Repository URL
- https://github.com/pyvista/pyvista