<!-- Release notes generated using configuration in .github/release.yml at v0.39.0 -->
This release brings numerous new features, bug fixes, and documentation improvements to PyVista. Key new features include adding tolerance to UnstructuredGrid.merge, introducing pyvista.XdmfReader, adding texture features, implementing fast merge PolyData, and adding several new examples such as Hertzian contact, CFD, electronics cooling, and a pump bracket. Additionally, important bug fixes and behavior changes include resolving Trame import issues, fixing renderer scaling, improving UI state defaults, and enhancing the performance of Trame camera sync.
We would like to extend our gratitude to all volunteers and contributors for their continuous support in developing and maintaining PyVista. A special thank you goes out to the new contributors who joined us in this release!
What's Changed
Breaking Changes
* Make DataSet.cell a generator by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4082
New Features
* Add tolerance to UnstructuredGrid.merge by tkoyama010 in https://github.com/pyvista/pyvista/pull/4085
* Add Hertzian contact example by akaszynski in https://github.com/pyvista/pyvista/pull/4124
* Add pyvista.XdmfReader by tkoyama010 in https://github.com/pyvista/pyvista/pull/2839
* Feat/add connectivity methods by beroda in https://github.com/pyvista/pyvista/pull/3643
* Add texture features by akaszynski in https://github.com/pyvista/pyvista/pull/4179
* Add 'connected' argument to 'Plotter.add_lines' to create a series of connected lines by p-j-smith in https://github.com/pyvista/pyvista/pull/4214
* Fast merge PolyData by akaszynski in https://github.com/pyvista/pyvista/pull/4227
* Add tubes CFD example by akaszynski in https://github.com/pyvista/pyvista/pull/4229
* Add electronics cooling example by akaszynski in https://github.com/pyvista/pyvista/pull/4235
* Add simple aero bracket by akaszynski in https://github.com/pyvista/pyvista/pull/4258
* Add pump bracket example by akaszynski in https://github.com/pyvista/pyvista/pull/4255
* Add clear_data option for edge extraction by banesullivan in https://github.com/pyvista/pyvista/pull/4294
* Show scalar bar if scalar_bar_args are passed by banesullivan in https://github.com/pyvista/pyvista/pull/4295
* Pass cell data in to_tetrahedra by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4311
* Add icosphere by akaszynski in https://github.com/pyvista/pyvista/pull/4330
* Lazy reader imports by akaszynski in https://github.com/pyvista/pyvista/pull/4337
* Ensure UnstructuredGrid.cells are read only by akaszynski in https://github.com/pyvista/pyvista/pull/4329
* Deprecate offset in UnstructuredGrid by akaszynski in https://github.com/pyvista/pyvista/pull/4331
* Add clean unstructured grid by akaszynski in https://github.com/pyvista/pyvista/pull/4367
* Add iterative closest point by akaszynski in https://github.com/pyvista/pyvista/pull/4361
* Add a simple example to project points to a plane by akaszynski in https://github.com/pyvista/pyvista/pull/4374
* Add extract_cells_by_type by banesullivan in https://github.com/pyvista/pyvista/pull/4204
Bug fixes or behavior changes
* [HOTFIX] Resolve trame import issues by banesullivan in https://github.com/pyvista/pyvista/pull/3943
* Patch contextmanagers to handle exceptions by banesullivan in https://github.com/pyvista/pyvista/pull/3966
* [HOTFIX] Propagate Trame UI controls to all views by banesullivan in https://github.com/pyvista/pyvista/pull/3983
* Fix renderer scaling by banesullivan in https://github.com/pyvista/pyvista/pull/3990
* Pass texture coordinates when wrapping Trimesh object by Kiord in https://github.com/pyvista/pyvista/pull/3992
* Improve UI state defaults by banesullivan in https://github.com/pyvista/pyvista/pull/3993
* Improve trame server launching by banesullivan in https://github.com/pyvista/pyvista/pull/4000
* Typo's on the Trame User Guide by mdtanker in https://github.com/pyvista/pyvista/pull/4004
* Fix bug of get_data_range method in Table class. by tkoyama010 in https://github.com/pyvista/pyvista/pull/4052
* [HOTFIX] update_scalar_bar_range by banesullivan in https://github.com/pyvista/pyvista/pull/4035
* vtkFiltersParallelDIY2 ModuleNotFoundError -> ImportError by banesullivan in https://github.com/pyvista/pyvista/pull/4054
* Stop plotter from reopening by akaszynski in https://github.com/pyvista/pyvista/pull/4102
* Update trame-client in requirements_test.txt by akaszynski in https://github.com/pyvista/pyvista/pull/4110
* Fix Plotter docs by banesullivan in https://github.com/pyvista/pyvista/pull/3968
* Add trame prefix support for JupyterHub services by banesullivan in https://github.com/pyvista/pyvista/pull/4149
* Fix add_mesh_box_clip event parsing by banesullivan in https://github.com/pyvista/pyvista/pull/4152
* Fix/rectangle to polygon by hippo91 in https://github.com/pyvista/pyvista/pull/4145
* Disable anti-aliasing on cells example and fix doc path for CI by beroda in https://github.com/pyvista/pyvista/pull/4160
* trivial import to register ipykernel by akaszynski in https://github.com/pyvista/pyvista/pull/4172
* Fix update_scalar_bar_range() with named scalar bar by adeak in https://github.com/pyvista/pyvista/pull/3626
* Support number of labels and fmt in show_bounds by banesullivan in https://github.com/pyvista/pyvista/pull/3977
* Fix JupyterHub service proxy prefix issue by banesullivan in https://github.com/pyvista/pyvista/pull/4210
* Enforce value range testing for properties by akaszynski in https://github.com/pyvista/pyvista/pull/4226
* Improve performance of Trame camera sync by banesullivan in https://github.com/pyvista/pyvista/pull/4223
* Fix tubes example by akaszynski in https://github.com/pyvista/pyvista/pull/4248
* Add PointSet guards by akaszynski in https://github.com/pyvista/pyvista/pull/4225
* Fix add_composite use within add_mesh by banesullivan in https://github.com/pyvista/pyvista/pull/4261
* Add Sequence to DataSet[Attributes] `__setitem__` typing by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4278
* Allow `Sequences` in RectilinearGrid by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4315
* Fix ``linkchecker`` workflow and make file by germa89 in https://github.com/pyvista/pyvista/pull/4327
* Do not show edges with render_lines_as_tubes by akaszynski in https://github.com/pyvista/pyvista/pull/4358
* Resolve issues with imageio 2.28.1 by akaszynski in https://github.com/pyvista/pyvista/pull/4375
Documentation
* Fix remaining stale reference to FULL_DOC_BUILD by adeak in https://github.com/pyvista/pyvista/pull/3957
* Fix pyinstaller.rst docs by akaszynski in https://github.com/pyvista/pyvista/pull/3989
* 🎉 Add NumFOCUS affiliation status by banesullivan in https://github.com/pyvista/pyvista/pull/3999
* Fix a small typo by tkoyama010 in https://github.com/pyvista/pyvista/pull/4003
* Automated PR: Update Local Intersphinx by github-actions in https://github.com/pyvista/pyvista/pull/4076
* Fix a small typo by tkoyama010 in https://github.com/pyvista/pyvista/pull/4084
* Set VTK 9.0 as the minimum supported version by mwtoews in https://github.com/pyvista/pyvista/pull/4018
* Add "Sponsored by NumFOCUS" badge by tkoyama010 in https://github.com/pyvista/pyvista/pull/4049
* Drop Python 3.7 by mwtoews in https://github.com/pyvista/pyvista/pull/3938
* Change source links to github by akaszynski in https://github.com/pyvista/pyvista/pull/4113
* Apply blackdoc to python source by akaszynski in https://github.com/pyvista/pyvista/pull/4119
* Apply typo fix using codespell v2.2.4 by tkoyama010 in https://github.com/pyvista/pyvista/pull/4122
* Use a docstring length of 75 by akaszynski in https://github.com/pyvista/pyvista/pull/4129
* Add pydocstringformatter by akaszynski in https://github.com/pyvista/pyvista/pull/4125
* Start using vale and move docs source by akaszynski in https://github.com/pyvista/pyvista/pull/4118
* Fix NumFOCUS affiliation badge by banesullivan in https://github.com/pyvista/pyvista/pull/4139
* Fix pyvista_banner_small.png path by tkoyama010 in https://github.com/pyvista/pyvista/pull/4140
* Add example changing mapped scalars by banesullivan in https://github.com/pyvista/pyvista/pull/4138
* Fix a small typo by tkoyama010 in https://github.com/pyvista/pyvista/pull/4143
* Add pyFBS to the external examples by akaszynski in https://github.com/pyvista/pyvista/pull/4157
* Link to pytest-pyvista in docs by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4153
* Integrate Vale for documentation by akaszynski in https://github.com/pyvista/pyvista/pull/4150
* Add black-doc to pre-commit by akaszynski in https://github.com/pyvista/pyvista/pull/4120
* Fix small reStructuredText format error by tkoyama010 in https://github.com/pyvista/pyvista/pull/4169
* Move Matplotlib to hard requirement by tkoyama010 in https://github.com/pyvista/pyvista/pull/4156
* Enforce docstring type and default consistency by akaszynski in https://github.com/pyvista/pyvista/pull/4155
* Add magnetic field example by akaszynski in https://github.com/pyvista/pyvista/pull/3058
* Automated PR: Update Local Intersphinx by github-actions in https://github.com/pyvista/pyvista/pull/4213
* Fix a small typo by tkoyama010 in https://github.com/pyvista/pyvista/pull/4217
* Add Trims trailing whitespace in pre-commit-hooks by tkoyama010 in https://github.com/pyvista/pyvista/pull/4211
* Typo fix by tkoyama010 in https://github.com/pyvista/pyvista/pull/4237
* Generalize pure VTK example by banesullivan in https://github.com/pyvista/pyvista/pull/4234
* Fix typo by tkoyama010 in https://github.com/pyvista/pyvista/pull/4256
* Transifex's Web Application's Domain Change by tkoyama010 in https://github.com/pyvista/pyvista/pull/4264
* Add topoGenesis to the external examples by tkoyama010 in https://github.com/pyvista/pyvista/pull/4268
* Update windows doc building command. by AlejandroFernandezLuces in https://github.com/pyvista/pyvista/pull/4276
* Enable vale by akaszynski in https://github.com/pyvista/pyvista/pull/4281
* Bump sphinx to v6.1.3 by akaszynski in https://github.com/pyvista/pyvista/pull/4282
* Support for multi version documentation by AlejandroFernandezLuces in https://github.com/pyvista/pyvista/pull/3862
* Fix specular values in examples by tkoyama010 in https://github.com/pyvista/pyvista/pull/4287
* Remove flask examples by banesullivan in https://github.com/pyvista/pyvista/pull/4299
* Typo fix by tkoyama010 in https://github.com/pyvista/pyvista/pull/4322
* Disable anti-aliasing on openfoam cooling example by akaszynski in https://github.com/pyvista/pyvista/pull/4321
* Fix the edit this page link by akaszynski in https://github.com/pyvista/pyvista/pull/4320
* Automated PR: Update Local Intersphinx by github-actions in https://github.com/pyvista/pyvista/pull/4362
* Use fullname for autosummary by akaszynski in https://github.com/pyvista/pyvista/pull/4368
* Improve pyvista.StructuredGrid example by natsuwater in https://github.com/pyvista/pyvista/pull/4365
* Fix plot output of docstring by tkoyama010 in https://github.com/pyvista/pyvista/pull/4383
Maintenance
* Update pre-commit hooks by github-actions in https://github.com/pyvista/pyvista/pull/3959
* Test with Python 3.11 by banesullivan in https://github.com/pyvista/pyvista/pull/3944
* MAINT: Add pyvistaqt integration test by larsoner in https://github.com/pyvista/pyvista/pull/3967
* Update pre-commit hooks by github-actions in https://github.com/pyvista/pyvista/pull/4005
* Update pre-commit hooks by github-actions in https://github.com/pyvista/pyvista/pull/4041
* Add .codacy.yml to exclude examples and tests by tkoyama010 in https://github.com/pyvista/pyvista/pull/4011
* removed _add_row_array by Chaitu-Tatipamula in https://github.com/pyvista/pyvista/pull/4056
* Add bug branch name to bug flag by tkoyama010 in https://github.com/pyvista/pyvista/pull/4053
* Remove unused argument categories by tkoyama010 in https://github.com/pyvista/pyvista/pull/4012
* Speed up PVDReader for files with many time points by MatthewFlamm in https://github.com/pyvista/pyvista/pull/3946
* Remove codecov for integration tests by akaszynski in https://github.com/pyvista/pyvista/pull/4111
* Use default matplotlib rcparams during testing by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4108
* Update pre-commit hooks by github-actions in https://github.com/pyvista/pyvista/pull/4121
* Close all plotters in testing, bump pytest-pyvista by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4114
* Gitpod no doc build and no prebuild by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4165
* Fix gallery cache by akaszynski in https://github.com/pyvista/pyvista/pull/4173
* Add devcontainer support by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4171
* BUG: Expose bug with scraping by larsoner in https://github.com/pyvista/pyvista/pull/4036
* trame-vtk maintenance by banesullivan in https://github.com/pyvista/pyvista/pull/4183
* comment out until 4193 is fixed. by tkoyama010 in https://github.com/pyvista/pyvista/pull/4194
* devcontainer enhancement by MatthewFlamm in https://github.com/pyvista/pyvista/pull/4202
* Update pre-commit hooks by github-actions in https://github.com/pyvista/pyvista/pull/4216
* Update pre-commit hooks by github-actions in https://github.com/pyvista/pyvista/pull/4246
* MAINT: Use setup-headless for pyvistaqt by larsoner in https://github.com/pyvista/pyvista/pull/4241
* [Hotfix] Fix download error by tkoyama010 in https://github.com/pyvista/pyvista/pull/4253
* [Hotfix] Remove codecov from requirements by tkoyama010 in https://github.com/pyvista/pyvista/pull/4269
* Move pre-commit GitHub action to pre-commit.ci by tkoyama010 in https://github.com/pyvista/pyvista/pull/4263
* Follow up pre-commit.ci adding by tkoyama010 in https://github.com/pyvista/pyvista/pull/4284
* Add CI workflow to test VTK master branch by banesullivan in https://github.com/pyvista/pyvista/pull/3704
* Fix documentation build settings by akaszynski in https://github.com/pyvista/pyvista/pull/4303
* Make imageio an optional dependency by basnijholt in https://github.com/pyvista/pyvista/pull/4333
* Fix documentation deployment by akaszynski in https://github.com/pyvista/pyvista/pull/4349
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/pyvista/pyvista/pull/4370
* Improve VTK and MPL version compatibility checks by banesullivan in https://github.com/pyvista/pyvista/pull/4184
New Contributors
* Kiord made their first contribution in https://github.com/pyvista/pyvista/pull/3992
* mdtanker made their first contribution in https://github.com/pyvista/pyvista/pull/4004
* Chaitu-Tatipamula made their first contribution in https://github.com/pyvista/pyvista/pull/4056
* hippo91 made their first contribution in https://github.com/pyvista/pyvista/pull/4145
* pre-commit-ci made their first contribution in https://github.com/pyvista/pyvista/pull/4370
* natsuwater made their first contribution in https://github.com/pyvista/pyvista/pull/4365
**Full Changelog**: https://github.com/pyvista/pyvista/compare/v0.38.6...v0.39.0