Description
Background
- Python releases a minor release (e.g., 3.14) annually in October.
- OpenMC has adopted SPEC 0, which means supporting about 3 minor releases of Python.
vtk has held up the process of supporting Python 3.13 and 3.14 for OpenMC due to its slow adoption of the latest Python Minor release. This is because:
vtk is a compiled Python package, which must be compiled against a specific python version
vtk does not distribute source tar balls on PyPI, so pip cannot compile it on its own.
vtk does not seem to have plans in place to plan for and be ready for minor releases of Python annually.
vtk is not used extensively in the Python code base. I only found the following examples:
openmc.tracks.write_to_vtk
openmc.plots.voxel_to_vtk
openmc.mesh._create_vtk_structured_grid
- These all seem to be only used for dumping data to a
.vtk file, not reading one.
Therefore
Be it resolved that, an internal vtk file template engine be made inside of OpenMC, and that vtk be removed as a dependency.
Alternatives
Some alternatives:
- Status quo, and just work with
vtks release schedule for OpenMC's release schedule.
- Ship OpenMC without testing
vtk support for the latest Python release, this is low risk, but does mean that OpenMC will be broken for some users.
- Switch to using
VTKHDF, though this would lead to a change in behavior for end users as hdf5 and not vtk files would be output.
- Work with Kitware to improve their release and planning system for working with release candidates of Python minor releases.
Compatibility
If vtk is re-implemented internally the goal would be to not change the external API at all.
Description
Background
vtkhas held up the process of supporting Python 3.13 and 3.14 for OpenMC due to its slow adoption of the latest Python Minor release. This is because:vtkis a compiled Python package, which must be compiled against a specific python versionvtkdoes not distribute source tar balls on PyPI, sopipcannot compile it on its own.vtkdoes not seem to have plans in place to plan for and be ready for minor releases of Python annually.vtkis not used extensively in the Python code base. I only found the following examples:openmc.tracks.write_to_vtkopenmc.plots.voxel_to_vtkopenmc.mesh._create_vtk_structured_grid.vtkfile, not reading one.Therefore
Be it resolved that, an internal
vtkfile template engine be made inside of OpenMC, and thatvtkbe removed as a dependency.Alternatives
Some alternatives:
vtks release schedule for OpenMC's release schedule.vtksupport for the latest Python release, this is low risk, but does mean that OpenMC will be broken for some users.VTKHDF, though this would lead to a change in behavior for end users ashdf5and notvtkfiles would be output.Compatibility
If
vtkis re-implemented internally the goal would be to not change the external API at all.