v1.2.0
exovista 1.2.0
This release adds a PyVista import path (the inverse of write_exo), fixes
a number of real bugs, and stands up project infrastructure (CI, packaging).
✨ New feature: ExodusII → PyVista
exovista.read_exo(filename, *files, ...)reconstructs an ExodusII file
into apyvista.UnstructuredGrid— the inverse ofwrite_exo:- Node coordinates (2D meshes embedded in 3D with
z = 0) and all element
blocks, withexo_block_id/exo_block_namerecorded as cell data. - Node variables →
point_data, element variables →cell_data, sampled at a
selectabletime_step; time history exposed infield_data. read_side_sets=Truealso returns aMultiBlockofPolyDataside sets,
rebuilt over the shared volume nodes (3D faces → polygons, 2D edges → lines),
each carryingorig_elem_id/face_id. Round-trips are exact.
- Node coordinates (2D meshes embedded in 3D with
- Works for both serial files and globbed parallel decompositions.
🐛 Bug fixes
- Parallel join crash:
get_node_set_dist_factsreturned anp.ones
fallback while cachingNone, sonum_dist_factsdisagreed withdist_facts
and crashed the join. Now consistent with the serial reader. similar()compared a file against itself for element block IDs, so
block-ID mismatches were never detected.Quad4.centeraveraged only x, divided by 4 a second time, and dropped y;
now returns the true centroid like its sibling elements.- numpy 2.x: replaced deprecated
np.row_stackwithnp.vstack. - Invalid block IDs now raise a clear
ValueErrorinstead of an opaque
TypeError(fiveraise Nonesites). - Fixed a latent
NameErrorincopy_variable_histories. write_exono longer mutates the caller's meshes (works on shallow copies,
so helper arrays don't leak onto inputs).- Fixed the broken
exoreadconsole-script entry point
(exodusii:exoread→exovista:exoread).
🔧 Infrastructure & packaging
- GitHub Actions CI:
flake8+pytestacross Python 3.10–3.12 (headless VTK);
the package is now lint-clean. - Filled out
pyproject.tomlmetadata (readme,requires-python, license,
classifiers, URLs,[dev]extras, explicit package discovery). - Test suite expanded to cover
read_exo, parallel join, elements,similar,
and theexoreadCLI. Tests depending on non-redistributed reference files
now skip cleanly instead of failing.
Full changelog: v1.1.1...v1.2.0