Skip to main content
A dark Proxima logo in light color mode and a light one in dark color mode.

VMEC++

Ruff Code style: black MIT license Python version DOI

CI C++ core tests Full V&V against reference VMEC Publish wheels to PyPI

VMEC++ is a Python-friendly, from-scratch reimplementation in C++ of the Variational Moments Equilibrium Code (VMEC), a free-boundary ideal-MHD equilibrium solver for stellarators and tokamaks.

The original version was written by Steven P. Hirshman and colleagues in the 1980s and 1990s. The latest version of the original code is called PARVMEC and is available here.

Compared to its Fortran predecessors, VMEC++:

  • has a zero-crash policy and reports issues via standard Python exceptions
  • allows hot-restarting a run from a previous converged state (see Hot restart)
  • supports inputs in the classic INDATA format as well as simpler-to-parse JSON files; it is also simple to construct input objects programmatically in Python
  • runs faster in the majority of cases
  • comes with substantial documentation of its internal numerics

VMEC++ can run on a laptop, but it is a suitable component for large-scale stellarator optimization pipelines.

On the other hand, some features of the original Fortran VMEC are intentionally omitted from VMEC++ to reduce complexity. See below for more details.


Table of Contents

Usage

This is a quick overview of the three main ways in which you can use VMEC++. See examples/ for some actual example scripts. Suitable input files are found in examples/data. If unsure where to start, we suggest giving the w7x case a try, which is a five-field-period stellarator case for the Wendelstein 7-X stellarator.

For example examples/force_residual_convergence.py runs fixed-boundary VMEC++ on the W7-X case and plots the convergence of the force residuals.

W7-X force residual convergence

As a Python package

VMEC++ offers a simple Python API:

import vmecpp

# Construct a VmecInput object, e.g. from a classic Fortran input file
vmec_input = vmecpp.VmecInput.from_file("input.w7x")  # or VMEC++'s w7x.json format
# This is a normal Python object: it can be constructed and modified programmatically
vmec_input.rbc[0, 0] *= 1.1

# Run VMEC++
vmec_output = vmecpp.run(vmec_input)

# Inspect the results programmatically or save them as a classic wout file
print(vmec_output.mercier.iota)
vmec_output.wout.save("wout_w7x.nc")

All other output files are accessible via members of the vmec_output object called threed1_volumetrics, jxbout and mercier.

An optional iteration_callback is available to investigate the progress of the solver. It can be used to interactively debug and interact with vmecpp's state from a Python repl, or generate animations of the convergence progress like in examples/watch_solve.py.

With SIMSOPT

SIMSOPT is a popular stellarator optimization framework. VMEC++ implements a SIMSOPT-friendly wrapper that makes it easy to use it with SIMSOPT.

import vmecpp.simsopt_compat

vmec = vmecpp.simsopt_compat.Vmec("input.w7x")
print(f"Computed plasma volume: {vmec.volume()}")

Differentiable runs

The wout quantities support autodiff with JAX. jax.grad can differentiate objectives written in terms of wout quantities with respect to the boundary coefficients rbc, zbs. When they are JAX tracers, vmecpp.run solves through the implicit adjoint of the force residual, which needs a build with -DVMECPP_ENABLE_ENZYME=ON. Otherwise it returns NumPy arrays as before.

Leaves that change shape depending on iteration progress (fsqt trace for example) are treated as aux data to support differentiability. jxbout, mercier and threed1 tables are also treated as non-differentiable aux data. Under jax.jit these tables and diagnostics are None.

import jax
import jax.numpy as jnp
import vmecpp

vmec_input = vmecpp.VmecInput.from_file("cth_like_fixed_bdy.json")


def aspect(rbc, zbs):
    boundary = vmec_input.model_copy(update={"rbc": rbc, "zbs": zbs})
    return vmecpp.run(boundary, verbose=False).wout.aspect


rbc = jnp.asarray(vmec_input.rbc)
zbs = jnp.asarray(vmec_input.zbs)
d_aspect_d_rbc, d_aspect_d_zbs = jax.grad(aspect, argnums=(0, 1))(rbc, zbs)

As a command line tool

You can use VMEC++ directly as a CLI tool. In a terminal in which Python has access to the VMEC++ package:

# run on a given input file -> produce corresponding wout_w7x.nc
# vmecpp is a python module and can be either run with `python -m` or directly as a script
vmecpp examples/data/input.w7x

vmecpp -t 4 examples/data/input.w7x      # run with up to 4 threads
vmecpp -q examples/data/input.w7x        # Suppress logging (quiet)
vmecpp --legacy examples/data/input.w7x  # use tabular output logging like in Fortran VMEC

# convert a classic Fortran indata file to VMEC++'s JSON format -> examples/data/w7x.json
vmecpp convert examples/data/input.w7x

# compute an mgrid file from a coils file with MAKEGRID -> mgrid_<name>.nc
# (the JSON file only defines the mgrid grid, it is not a VMEC input; `mgrid` is an alias of `makegrid`)
vmecpp mgrid makegrid_parameters.json coils.<name>

# print the version, or check all options
vmecpp --version
vmecpp --help

As a Docker image

A pre-built Docker image is available at https://github.com/proximafusion/vmecpp/pkgs/container/vmecpp. Note that at present it is only updated occasionally.

See docker/README.md for more information and instructions on how to build a new image.

Installation

The easiest method for installing vmecpp is using pip:

pip install vmecpp

For usage as part of MPI-parallelized SIMSOPT applications, you might want to also install MPI on your machine and pip install mpi4py.

Alternatively you can build the latest vmecpp directly from source according to the appropriate instructions below.

Ubuntu/Debian

Ubuntu 22.04 and 24.04, as well as Debian 12 are officially supported.

  1. Install required system packages:
sudo apt-get install -y build-essential cmake zlib1g-dev libomp-dev python3-dev
  1. Install VMEC++ as a Python package (possibly after creating a dedicated virtual environment):
pip install git+https://github.com/proximafusion/vmecpp

The procedure will take a few minutes as it will build VMEC++ and some dependencies from source.

A common issue on Ubuntu is a build failure due to no python executable being available in PATH, since on Ubuntu the executable is called python3. When installing in a virtual environment (which is always a good idea anyways) python will be present. Otherwise the Ubuntu package python-is-python3 provides the python alias.

Arch Linux

  1. Install required system packages:
pacman -Sy --noconfirm python-pip gcc openmp zlib cmake
  1. Install VMEC++ as a Python package (possibly after creating a virtual environment):
python -m pip install git+https://github.com/proximafusion/vmecpp

Fedora

Fedora 41 is officially supported.

  1. Install required system packages:
dnf install -y python3.10-devel cmake g++ zlib-devel libomp-devel
  1. Install VMEC++ as a Python package (possibly after creating a virtual environment):
# If you are installing with MPI support, remember to source the mpi compiler first
. /etc/profile.d/modules.sh
python3.10 -m pip install git+https://github.com/proximafusion/vmecpp

MacOS

  1. Install dependencies via Homebrew:
brew install python@3.10 ninja libomp netcdf-cxx git
# And if they aren't pre-installed already:
brew install gcc cmake
  1. Install VMEC++ as a Python package (possibly after creating a virtual environment):
# tell cmake where to find gfortran and gcc as they have non-standard names
export FC=$(which gfortran-14)
# OpenMP headers live under a different path on newer OS-X versions, so CMake can't find them
export OpenMP_ROOT=$(brew --prefix)/opt/libomp
export HDF5_ROOT=$(brew --prefix hdf5)
python3.10 -m pip install git+https://github.com/proximafusion/vmecpp

With Nix (Community support)

For a Linux development shell with the latest supported Python version:

nix develop
python --version
python -m pip install -e .[test]

The shell provides Python 3.13 together with the native build dependencies needed to build and test VMEC++, including CMake, GCC, GFortran, HDF5, NetCDF, OpenMPI, and Git LFS.

As part of a conda environment

VMEC++ is currently not packaged for conda, but all its dependencies are and VMEC++ can be installed inside a conda environment. An example environment.yml file is provided here that can be used, after cloning the vmecpp repository, as:

git clone https://github.com/proximafusion/vmecpp.git
cd vmecpp
# this creates a "vmecpp" conda environment
conda env create --file environment.yml
# use the environment as usual
conda activate vmecpp

C++ build from source

After having installed the build dependencies as shown above, you can compile the C++ core of VMEC++ via CMake or Bazel. E.g. with CMake:

git clone https://github.com/proximafusion/vmecpp.git
cd vmecpp
cmake -B build  # create and configure build directory
cmake --build build --parallel  # build VMEC++
# you can now use the vmec_standalone C++ executable to run VMEC on a VMEC++ input JSON file, e.g.
./build/vmec_standalone ./examples/data/solovev.json

The main C++ source code tree is located at src/vmecpp/cpp/vmecpp.

Hot restart

By passing the output of a VMEC++ run as initial state for a subsequent one, VMEC++ is initialized using the previously converged equilibrium. This can dramatically decrease the number of iterations to convergence when running VMEC++ on a configuration that is very similar to the converged equilibrium.

Example

import vmecpp

vmec_input = vmecpp.VmecInput.from_file("examples/data/w7x.json")

# Base run
vmec_output = vmecpp.run(vmec_input)

# Now let's perturb the plasma boundary a little bit...
ntor = vmec_input.ntor
vmec_input.rbc[0, ntor+0] *= 1.0 + 1.0e-6 # m=0, n=0
vmec_input.rbc[1, ntor+0] *= 1.0 - 1.0e-6 # m=1, n=0
# ...and fix up the multigrid steps: hot-restarted runs only allow a single step
vmec_input.ns_array = vmec_input.ns_array[-1:]
vmec_input.ftol_array = vmec_input.ftol_array[-1:]
vmec_input.niter_array = vmec_input.niter_array[-1:]

# We can now run with hot restart:
# passing the previously obtained vmec_output ensures that
# the run starts already close to the equilibrium, so it will take
# very few iterations to converge this time!
hot_restarted_output = vmecpp.run(vmec_input, restart_from=vmec_output)

Full tests and validation against the reference Fortran VMEC v8.52

When developing the C++ core, it's advisable to locally run the full C++ tests for debugging or to validate changes before submitting them. The full C++ tests live in src/vmecpp/cpp/vmecpp_large_cpp_tests and use Git LFS for large test data files. To run them locally (after cloning with git lfs pull to fetch the LFS objects):

cd src/vmecpp/cpp
bazel test --config=opt //vmecpp/... //vmecpp_large_cpp_tests/...

The CI of this repo runs these tests automatically.

The single-thread runtimes as well as the contents of the "wout" file produced by VMEC++ can be compared with those of Fortran VMEC v8.52. The full validation test can be found at https://github.com/proximafusion/vmecpp-validation, including a set of sensible input configurations, parameter scan values and tolerances that make the comparison pass. See that repo for more information.

This full validation (~219 input configurations) is run against every commit to main and can also be triggered on demand from the Full V&V against reference VMEC workflow (click "Run workflow"). It builds vmecpp from the corresponding commit rather than using the version pinned by vmecpp-validation.

Differences with respect to PARVMEC/VMEC2000

VMEC++:

  • reports issues via standard Python exceptions and has a zero crash policy
  • allows hot-restarting a run from a previous converged state (see Hot restart)
  • supports inputs in the classic INDATA format as well as simpler-to-parse JSON files; it is also simple to construct input objects programmatically in Python
  • The Fortran version falls back to fixed-boundary computation if the mgrid file cannot be found; VMEC++ (gracefully) errors out instead.
  • The Fortran version accepts both the full path or filename of the input file as well as the "extension", i.e., the part after input.; VMEC++ only supports a valid filename or full path to an existing input file.
  • employs the same parallelization strategy as Fortran VMEC, but VMEC++ leverages OpenMP for a multi-thread implementation rather than Fortran VMEC's MPI parallelization: as a consequence it cannot parallelize over multiple nodes, but can utilize shared caches between threads
  • Reduces the force spikes between multi-grid stages in free-boundary, which should lead to faster and more robust free-boundary convergence (for details see https://github.com/proximafusion/vmecpp/releases/tag/v0.7.0)
  • Stable recurrence for Neumann kernel integrals enables convergence of free-boundary solves at high mpol, ntor (see https://github.com/proximafusion/vmecpp/releases/tag/v0.5.3)
  • Uses FFT kernels optimized for small mode numbers generated using FFTX instead of DFT for supported resolutions. They give a 10-20% speedup relative to the DFT counterparts.
  • implements the iteration algorithm of Fortran VMEC 8.52, which sometimes has different convergence behavior from (PAR)VMEC 9.0: some configurations might converge with VMEC++ and not with (PAR)VMEC 9.0, and vice versa. One deliberate exception: at multigrid grid transitions, the rollback backup of the state vector is taken after the radial interpolation of the coarse-grid solution (matching PARVMEC/VMEC2000 since 2017-01-24, "SPH 012417"), not before it as in VMEC 8.52 -- with the 8.52 ordering, the first restart of a stage silently discards the interpolated state and the finer stages effectively re-solve from a cold start

Limitations with respect to the Fortran implementations

  • lrfp flag is available for wout compatibility, but RFP-specific physics is not implemented yet - only stellarators/Tokamaks for now
  • several profile parameterizations are not fully implemented yet:
    • sum_cossq_s
    • sum_cossq_sqrts
    • sum_cossq_s_free
  • 2D preconditioning using block-tridiagonal solver (BCYCLIC) is not implemented; neither are the associated input fields precon_type and prec2d_threshold
  • VMEC++ only computes the output quantities if the run converged (can be overridden via return_outputs_even_if_not_converged input)

License

vmecpp is distributed under the terms of the MIT license.

Metadata

Release files for vmecpp 0.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vmecpp 0.9.2
File Size Uploaded Provenance Actions
vmecpp-0.9.2.tar.gz 738.3 kB With provenance Details for vmecpp-0.9.2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for vmecpp 0.9.2
File Actions
vmecpp-0.9.2-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details for vmecpp-0.9.2-cp314-cp314t-manylinux_2_28_x86_64.whl
vmecpp-0.9.2-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details for vmecpp-0.9.2-cp314-cp314t-manylinux_2_28_aarch64.whl
vmecpp-0.9.2-cp314-cp314t-macosx_14_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 14.0+ ARM64 Details for vmecpp-0.9.2-cp314-cp314t-macosx_14_0_arm64.whl
vmecpp-0.9.2-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for vmecpp-0.9.2-cp314-cp314-manylinux_2_28_x86_64.whl
vmecpp-0.9.2-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for vmecpp-0.9.2-cp314-cp314-manylinux_2_28_aarch64.whl
vmecpp-0.9.2-cp314-cp314-macosx_14_0_arm64.whl CPython 3.14 CPython 3.14 macOS 14.0+ ARM64 Details for vmecpp-0.9.2-cp314-cp314-macosx_14_0_arm64.whl
vmecpp-0.9.2-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for vmecpp-0.9.2-cp313-cp313-manylinux_2_28_x86_64.whl
vmecpp-0.9.2-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for vmecpp-0.9.2-cp313-cp313-manylinux_2_28_aarch64.whl
vmecpp-0.9.2-cp313-cp313-macosx_15_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 15.0+ x86-64 Details for vmecpp-0.9.2-cp313-cp313-macosx_15_0_x86_64.whl
vmecpp-0.9.2-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details for vmecpp-0.9.2-cp313-cp313-macosx_14_0_arm64.whl
vmecpp-0.9.2-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for vmecpp-0.9.2-cp312-cp312-manylinux_2_28_x86_64.whl
vmecpp-0.9.2-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details for vmecpp-0.9.2-cp312-cp312-manylinux_2_28_aarch64.whl
vmecpp-0.9.2-cp312-cp312-macosx_15_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 15.0+ x86-64 Details for vmecpp-0.9.2-cp312-cp312-macosx_15_0_x86_64.whl
vmecpp-0.9.2-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details for vmecpp-0.9.2-cp312-cp312-macosx_14_0_arm64.whl
vmecpp-0.9.2-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for vmecpp-0.9.2-cp311-cp311-manylinux_2_28_x86_64.whl
vmecpp-0.9.2-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details for vmecpp-0.9.2-cp311-cp311-manylinux_2_28_aarch64.whl
vmecpp-0.9.2-cp311-cp311-macosx_15_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 15.0+ x86-64 Details for vmecpp-0.9.2-cp311-cp311-macosx_15_0_x86_64.whl
vmecpp-0.9.2-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details for vmecpp-0.9.2-cp311-cp311-macosx_14_0_arm64.whl
vmecpp-0.9.2-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details for vmecpp-0.9.2-cp310-cp310-manylinux_2_28_x86_64.whl
vmecpp-0.9.2-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details for vmecpp-0.9.2-cp310-cp310-manylinux_2_28_aarch64.whl
vmecpp-0.9.2-cp310-cp310-macosx_15_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 15.0+ x86-64 Details for vmecpp-0.9.2-cp310-cp310-macosx_15_0_x86_64.whl
vmecpp-0.9.2-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details for vmecpp-0.9.2-cp310-cp310-macosx_14_0_arm64.whl

Total release size: 152.7 MB

Release files / vmecpp-0.9.2.tar.gz

Download URL vmecpp-0.9.2.tar.gz
Size 738.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c6c3a973c6fe78c3fcc0304feea0800040c3d93ffd17da15a98f3de08d71847d
BLAKE2b-256 checksum
How to use checksums
165c65893b370235e8d80bfa5cd8409b8f7471502440dba1db7e1bd44d2d29cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL vmecpp-0.9.2-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 10.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e1f78b0061143c242df4d79add0b529689cf73229889e48bfcefc9cdb5062f17
BLAKE2b-256 checksum
How to use checksums
dd8153ae1958790469cffd0b41ebdd998aef2a83cf1e741489759125e069b60f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp314-cp314t-manylinux_2_28_aarch64.whl

Download URL vmecpp-0.9.2-cp314-cp314t-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
013bbcda36348f9905a96f7f6919d61e07b7c76ea1fcff5225c59634a7ce87a8
BLAKE2b-256 checksum
How to use checksums
81883b4dd9f3fff768de5ba508927efbc478b09d99ecd5e7617782bf16224f8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp314-cp314t-macosx_14_0_arm64.whl

Download URL vmecpp-0.9.2-cp314-cp314t-macosx_14_0_arm64.whl
Size 5.3 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
2cd29aab6c2353bd6a4da752339494793e5f57b2379d686c90d47ba8976cebbd
BLAKE2b-256 checksum
How to use checksums
60b0b695bc4c1de20e581cde3c6610a6f5c220ed15de88e6f9550ebc24d4b290
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL vmecpp-0.9.2-cp314-cp314-manylinux_2_28_x86_64.whl
Size 10.2 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1e312d291d6ac6177750baa622c8b93f9f7a5f977491fb66506013895d28565e
BLAKE2b-256 checksum
How to use checksums
ccac3488762ee10f7ee89c63fb504386bc00028e2188bd5f7d3fd32dbe834af4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL vmecpp-0.9.2-cp314-cp314-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
4e95f2dcde69b204a88c8019d79d69a9fa72d510ad5e3c4d0d62e50e3525a52c
BLAKE2b-256 checksum
How to use checksums
8ad33a088a7c3ddf3ec8818eaafa5d4a864f47504f564e685f248e563ebc0175
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp314-cp314-macosx_14_0_arm64.whl

Download URL vmecpp-0.9.2-cp314-cp314-macosx_14_0_arm64.whl
Size 5.3 MB
Tags CPython 3.14 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
65bdd60640152e9d450f950f3ab435dcd9720c57acecc495d2cf0e5270264aa2
BLAKE2b-256 checksum
How to use checksums
6415cec1a507edf67e526b48f773ceab8f103a4e28c6dfc010d76f3fbbfcfd44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL vmecpp-0.9.2-cp313-cp313-manylinux_2_28_x86_64.whl
Size 10.2 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d2df546a5b19976286633a4dd4620cf2ac66d10e4813025957bd71423d3016fe
BLAKE2b-256 checksum
How to use checksums
8ab5f0627fb04f0814adfad9cc48c00e5d9ea6c52b3f4d4f3a1eddc82696fd66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL vmecpp-0.9.2-cp313-cp313-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1837a4fc1afc013ea6c946da11b3bf36fa3883a5229269fcf47d926ff16e8fc4
BLAKE2b-256 checksum
How to use checksums
758d2d2d3e1ee5ccf33dfc152e3567296b2a77af4463adc4768508b47b3d35d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp313-cp313-macosx_15_0_x86_64.whl

Download URL vmecpp-0.9.2-cp313-cp313-macosx_15_0_x86_64.whl
Size 6.6 MB
Tags CPython 3.13 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
a562085f07859603822921514bfbe73becac00f643858d530b5991d1022b12b1
BLAKE2b-256 checksum
How to use checksums
9d988647d6b884db692706db099314348751cb38c0c6bc381383f9c72a72adec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp313-cp313-macosx_14_0_arm64.whl

Download URL vmecpp-0.9.2-cp313-cp313-macosx_14_0_arm64.whl
Size 5.3 MB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
1fa6ad5e5647bf766ab7e458201312d4caa9b8fd4f264408f7a289e82709f435
BLAKE2b-256 checksum
How to use checksums
712a915393a6e8a30048353f300ccbba8fb7569c46bae06262298e3a0dc0e240
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL vmecpp-0.9.2-cp312-cp312-manylinux_2_28_x86_64.whl
Size 10.2 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bdd2b98dcc59a5ef1d68f91129d53b8b640f685f188dc6464c6dc36c61e511cc
BLAKE2b-256 checksum
How to use checksums
b36bf1bec617c04b83718ea80b4bb9ecb710414f5605ef24c78d598344082ca4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL vmecpp-0.9.2-cp312-cp312-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
843da0103c521e593a3230e551182e7b7592dd0f06a8bef80b0975282d1c7e0c
BLAKE2b-256 checksum
How to use checksums
67854b98398a1b41889e4c3481113cbc1940a0400655ab6a7e39182f778d3e4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp312-cp312-macosx_15_0_x86_64.whl

Download URL vmecpp-0.9.2-cp312-cp312-macosx_15_0_x86_64.whl
Size 6.6 MB
Tags CPython 3.12 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
d23298efd958f53eb0d2147e7ce8369593a01b34cff8096c6e63a42676ab2be7
BLAKE2b-256 checksum
How to use checksums
762e13712fa1dd626fb2e87a54e5506a0e9baf770552ba185f91b13f7729c5f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp312-cp312-macosx_14_0_arm64.whl

Download URL vmecpp-0.9.2-cp312-cp312-macosx_14_0_arm64.whl
Size 5.3 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
a99f88f0fea96c1ab1743a8485bb7aff2e28cf29d5d287c3f1edebd9d29e9986
BLAKE2b-256 checksum
How to use checksums
43c3b2a183c764f0c483a6d77ce0920f264f735b179b52cb534470e60eb39c19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL vmecpp-0.9.2-cp311-cp311-manylinux_2_28_x86_64.whl
Size 10.2 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8c0cade747e69246b0e34a3cc87edadf1f25c2ea1602fe0676a666125a4539ed
BLAKE2b-256 checksum
How to use checksums
1c1c2d7bc8a2f0f08eebdbf07045c12e69a52508d9277dd6a27b9e0238fc7cd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL vmecpp-0.9.2-cp311-cp311-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d44c8977992ed37b958b4ddd5e324e95ae9b51a8739dab7c205058239d35bcb4
BLAKE2b-256 checksum
How to use checksums
10b298de559c0789be3ed5b595d5f584946f86c682da970c15a6f76bc9316814
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp311-cp311-macosx_15_0_x86_64.whl

Download URL vmecpp-0.9.2-cp311-cp311-macosx_15_0_x86_64.whl
Size 6.6 MB
Tags CPython 3.11 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
f52538f2fef86dcf9ff2ac834694eaab00ae523ea7113a1520fb2104e522f984
BLAKE2b-256 checksum
How to use checksums
a141afea323e9ed02c085618c4e08eee7f69f4da15c161eec00b6c3d2c4fb056
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp311-cp311-macosx_14_0_arm64.whl

Download URL vmecpp-0.9.2-cp311-cp311-macosx_14_0_arm64.whl
Size 5.3 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
cac6b980ec416c35418a9c26f9660da18334ca2d16e27d9c788086c066ddff49
BLAKE2b-256 checksum
How to use checksums
5b520879507254544f2defabd24f7e2463cf0a4afa43de65880407d9f036bf07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL vmecpp-0.9.2-cp310-cp310-manylinux_2_28_x86_64.whl
Size 10.2 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
66d8eb059ff2f7d38003462152ce945f4b54c8c9ad8424ad5d5bfe0e63be9aa3
BLAKE2b-256 checksum
How to use checksums
6c2d50cb9a4ae88334dcf53122a735e53bbc84bce40f731c8d1cc776ae6ed9d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL vmecpp-0.9.2-cp310-cp310-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1b2fda4718f9f9d67d20409b4615343940b6fdfc19a13e5405b7599243df4f3b
BLAKE2b-256 checksum
How to use checksums
d4a54a53b211b647b8a1f2e372bcc09300b31065d82710e1627a08f9bed17a44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp310-cp310-macosx_15_0_x86_64.whl

Download URL vmecpp-0.9.2-cp310-cp310-macosx_15_0_x86_64.whl
Size 6.6 MB
Tags CPython 3.10 macOS 15.0+ x86-64
SHA-256 checksum
How to use checksums
ce01a44b18cad95630ad60c53d4a9302268c4993ea04a7f0d956aabd75fbf5c0
BLAKE2b-256 checksum
How to use checksums
af91b6a647cf533358c0cdf48148a73005287c4c08e05342bff5ed17d208ea85
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / vmecpp-0.9.2-cp310-cp310-macosx_14_0_arm64.whl

Download URL vmecpp-0.9.2-cp310-cp310-macosx_14_0_arm64.whl
Size 5.3 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
ca73889a34f2e94717be8c0120ef9af57c88a69c7bb0e85311501b3612d6edaa
BLAKE2b-256 checksum
How to use checksums
9846b2488ca4cc228679f4a4b9e1c9a3e9c277db4d2c0ad366fa6cce952e0fd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Security for vmecpp 0.9.2

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.

Full provenance

All 23 files in this release have been uploaded with provenance metadata.

Select from 23 files

Attestation for vmecpp-0.9.2.tar.gz

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 Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.9.2 This release

23 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page