Skip to main content

GSFit: Grad-Shafranov Fit

BSD-3-Clause License

Rust Rust coverage: Rust tests Rust coverage: Python tests Rust coverage: Rust + Python tests dependency status

Python 3.11|3.12|3.13|3.14|3.15 Python coverage: Python tests Ruff ty Checked with mypy

gsfit.imas_rs generated from IMAS DD IMAS DD latest IMAS DD develop commits ahead

GSFit is a modern tokamak equilibrium reconstruction tool for post-shot experimental analysis and scientific interpretation. Developed by Tokamak Energy Ltd. for use on ST40, the world's highest field spherical tokamak.

The Grad-Shafranov equation is the equilibrium solution to the ideal, single-fluid, MHD equations, assuming axisymmetry. The Grad-Shafranov equation has two free degrees of freedom, often referred to as the source functions: the pressure gradient p_prime and ff_prime, where f gives rise to the poloidal plasma current. GSFit uses diagnostics, most importantly the magnetics, to simultaneously solve the non-linear Grad-Shafranov equation while optimising the p_prime and ff_prime degrees of freedom to minimise the difference between the experimental "measured" values and the "calculated" values. More details about the algorithms used can be found in the excellent paper J.-M. Moret, et. al., "Tokamak equilibrium reconstruction code LIUQE and its real time implementation", Fusion Eng. Design, 91, 2015.

GSFit's numerical solver is written in Rust for speed and robustness, and the user interface / set-up is written in Python for its convenience.

The goal of GSFit is high accuracy, not performance; when something can be calculated accurately, it should be calculated accurately regardless of computational cost.

GSFit uses the COCOS 13 coordinate system, as described in O. Sauter and S. Y. Medvedev, "Tokamak Coordinate Conventions: COCOS", Comput. Phys. Commun. 184, 2013. Where, in summary, flux is measured in weber, and the poloidal angle increases counterclockwise, starting from the outboard mid-plane.

Why Rust and Python?

Rust is a compiled, high-performance language, nearly as fast as C and Fortran. It includes modern tooling such as a package manager and centralised registry (cargo and crates.io), autoformatting (rustfmt), and has testing built into the language. Rust enforces strict ownership rules, making programs extremely memory efficient without requiring any extra effort. These rules also eliminate entire classes of memory issues. Additionally, Rust has zero-cost abstractions, allowing object-oriented programming (implementations) to be used without a performance penalty. For more information, the official Rust book gives a complete introduction to the language with examples.

Python is ubiquitous within the fusion industry. Using Python allows easy integration into existing workflows. For example, in examples/example_02_mastu_with_synthetic_data_from_freegsnke.ipynb, we reconstruct an equilibrium using synthetic "measured" data produced by the open source forward Grad-Shafranov solver FreeGSNKE.

1. Installation and environment

1.1 Python environment

GSFit can be run on Python 3.11, 3.12, 3.13, and 3.14.

uv is both an environment and package manager and is recommended. There are several other Python virtual environment providers which should work, but we have not tested against them.

# Install the `uv` environment and package manager
python -m pip install uv

# Creating and activating a virtual environment, called `venv_gsfit`
uv venv --python=3.13
source .venv/bin/activate

1.2 Installing from PyPI

GSFit is available on the PyPI package registry as a pre-compiled binary. The binary is compiled for Linux, macOS, and Windows. For Linux the "manylinux2014" build system is used, which typically can be run on any Linux machine newer than 2014.

All of the packages GSFit depends on are listed in the pyproject.toml. These are divided into essential packages which are always required for any run and optional packages which can be installed for different purposes. An example of optional packages are machine-specific database readers.

# Install GSFit from the PyPI package registry, with only the essential packages
uv pip install gsfit
# or install GSFit from the PyPI package registry, with the "developer" packages
uv pip install gsfit[dev]
# or install GSFit with reading/writing to/from ST40's experimental database
uv pip install gsfit[with_st40_mdsplus]  # (this will only work within Tokamak Energy's network)
# or any combination
uv pip install gsfit[dev,with_st40_mdsplus]

1.3 Compiling and installing from source code on Linux

# Install the Rust compiler (only needs to be done once)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Clone a copy of GSFit from GitHub
git clone git@github.com:tokamak-energy/gsfit.git
cd gsfit

# Install GSFit
uv pip install --reinstall --editable .
# or install with the "developer" packages, such as `pytest` and `mypy`
uv pip install --reinstall --editable .[dev]

1.4 Compiling and installing from source code on macOS

# Install the Rust compiler (only needs to be done once)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Clone a copy of GSFit from GitHub
git clone git@github.com:tokamak-energy/gsfit.git
cd gsfit

# Install GSFit
uv pip install --reinstall --editable .
# or install with the "developer" packages, such as `pytest` and `mypy`
uv pip install --reinstall --editable .[dev]

1.5 Compiling and installing from source code on Windows

# Download and install Rust compiler
# run rustup-init.exe from https://www.rust-lang.org/tools/install

# Clone a copy of GSFit from GitHub
git clone git@github.com:tokamak-energy/gsfit.git
cd gsfit

# Install GSFit
uv pip install --reinstall --editable .
# or install with the "developer" packages, such as `pytest` and `mypy`
uv pip install --reinstall --editable .[dev]

1.6 IDE

VS Code is the recommended IDE for GSFit.

A particularly useful extension is rust-analyzer, which "is a part of a larger rls-2.0 effort to create excellent IDE support for Rust."

The PyO3 crate requires Python>=3.7. On machines where the python3 command links to an unsupported Python version, you can change the following file: ~/.vscode-server/data/Machine/settings.json to point to your desired Python's "standard library files", which will be similar to:

{
    "rust-analyzer.server.extraEnv": {
        "PYO3_CROSS_LIB_DIR": "/home/<user.name>/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib"
    }
}

and Python's "standard library files" directory can be found by:

python -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))"

2. GSFit program layout and flow

2.1 Initialisation

GSFit's solver and numerics are programmed in Rust, with the initialisation done within Python.

The communication between Python and Rust is handled by the PyO3 crate. From the Python side the integration is seamless, and a general user would not know if a function / class is written in Python or Rust. In a similar way, a user interacting with numpy does not know if they are calling Python, C or Fortran.

GSFit has the following implementations (which are similar to classes):

  • coils for the PF and TF coils. This object contains the geometry; measured values; and reconstructed values
  • passives for the toroidally conducting structures, such as the vacuum vessel and passive plates. passives also contains the degrees of freedom allowed for the passive conductors
  • plasma contains a $(R, Z)$ grid and the reconstructed equilibrium
  • bp_probes contains the Mirnov coils: geometry; measured values; which sensors to use in the reconstruction and their weights; and the reconstructed values
  • flux_loops the toroidal flux loops. Note the units are in weber.
  • rogowski_coils measuring toroidal currents
  • isoflux contains two time-dependent $(R, Z)$ coordinates which have equal poloidal flux
  • isoflux_boundary contains a time-dependent $(R, Z)$ coordinate which has the same poloidal flux as the plasma boundary. This can be used if we have measurements of where the strike point is, for example if there is an IR camera

All of these implementations are initialised from Python. As a result, all of the database access is contained within Python, and any pre-processing such as filtering or smoothing experimental data can also be done within Python.

Below is a reproduction of examples/example_01_st40_with_experimental_data.py.

# Note, this example will only run inside Tokamak Energy's network

from gsfit import Gsfit

# Construct the GSFit object
gsfit_controller = Gsfit(
    pulseNo=12050,
    run_name="TEST01",
    run_description="Test run",
    write_to_mds=True,
    settings_path="default",
)

# Run (solve the inverse Grad-Shafranov equation, and if requested write to database)
gsfit_controller.run()

To improve reliability and traceability, the number of arguments needed to initialise the gsfit_controller object is deliberately kept to a minimum. The settings_path="default" argument tells GSFit to use the settings (JSON files) from this directory python/gsfit/settings/default/. By storing all the settings needed to run GSFit in JSON files allows changes to be tracked through Git.

Initial plasma-current guess

The initial toroidal current density is a smooth quadratic distribution centred at r_cur, z_cur:

j_phi(R, Z) = C * max(1 - ((R - r_cur) / minor_radius)^2
                          - ((Z - z_cur) / (minor_radius * kappa))^2, 0)

C is calculated on the discrete plasma grid so that the integrated current equals the configured initial ip. The edge of this current-density support is an initial numerical guess, not an LCFS or an inverse-problem constraint. The configured ellipse must lie inside the plasma grid and vessel and must not contain a limiter point.

Custom settings directories must add minor_radius in metres and dimensionless kappa to the initial_guess section of GSFIT_code_settings.json. Direct callers of gsfit_rs.Plasma(...) must likewise pass initial_guess_minor_radius and initial_guess_elongation; these are required constructor arguments.

2.2 Adding a new experimental device or coupling to a new forward Grad-Shafranov code

The information needed to run GSFit comes from two sources:

  1. python/gsfit/settings/: Contains parameters in JSON files, such as:
    • the maximum number of iterations,
    • which magnetic sensors to use in the reconstruction,
    • the degrees of freedom given to p_prime and ff_prime,
    • and which database_reader to use.
  2. python/gsfit/database_readers/: Connects to machine-specific databases to read experimental results in, such as:
    • geometry and current in poloidal field coils
    • measured signals from magnetic sensors
    • isoflux constraints

These two sources of information are combined to initialise the Rust objects needed to run GSFit (as described in section 2.1).

Writing to the database is done through python/gsfit/database_writers/, in a similar format to database_readers.

Included are the settings and readers for ST40's experimental data, and synthetic data produced by FreeGS and FreeGSNKE simulations. We welcome and are happy to include configurations for other devices.

2.3 Where are the Green's tables stored?

We can classify objects as either "current sources" or "sensors".

  • coils, passives, and plasma are "current sources".
  • bp_probes, flux_loops, rogowski_coils, isoflux, and plasma are "sensors".

Note, plasma is both a current source and a sensor; this is because it contains the plasma current and the 2D (R, Z) grid where we want to take measurements on.

Principles about where data should be:

  • "sensors" contain the Green's tables.
  • "current sources" contain the currents.

The sensors and currents are linked by names; every magnetic probe and PF coil must have a unique name.

2.4 Decision on coils vs PSUs

On many tokamaks, including ST40, several PF coils are connected to a single PSU. For ST40 we have the BVLT and BVLB PF coils, both connected to the BVL PSU.

Several equilibrium reconstruction codes treat the PSU current as a measurement with an associated degree of freedom. To allow for this degree of freedom we would need to tell GSFit which PF coil is connected to which PSU. This is quite burdensome and to keep GSFit simple to initialise, we have decided to only consider "coils". The work-around, if you want to have the PSU currents as a degree of freedom, is to combine all of the PF coils connected to a single power supply into a single coil. On ST40 we could create a PF coil called BVL_combined which contains both BVLT and BVLB.

3. Advanced building

GSFit is intended to be a Python library, where the Rust code is called from Python (Python is not called from within Rust). The advantage of this is that the Rust binary does not need to link agains libpython-dev which is not always installed on all machines.

However, for testing, where the Rust code is run as it's own executable, not from within Python, we must link to Python!

4. Planned future development

  • Interfacing to and from IMAS & OMAS.
  • More kinetic sensors, such as MSE, polarimeters, and interferometers.

5. Citing GSFit

We intend on publishing a paper on GSFit. While GSFit is unpublished, please cite it as "P. F. Buxton, GSFit, https://github.com/tokamak-energy/gsfit, 2025"

Please use the GSFit nomenclature, not GS-Fit, GSFIT, or g/s fit.

Metadata

Release files for gsfit 0.0.11

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

Source distribution (sdist)

Source distribution for gsfit 0.0.11
File Size Uploaded
gsfit-0.0.11.tar.gz 2.4 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for gsfit 0.0.11
File
gsfit-0.0.11-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
gsfit-0.0.11-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.11-cp315-cp315-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 macOS 11.0+ ARM64 Details
gsfit-0.0.11-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
gsfit-0.0.11-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.11-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
gsfit-0.0.11-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
gsfit-0.0.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.11-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
gsfit-0.0.11-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
gsfit-0.0.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.11-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
gsfit-0.0.11-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
gsfit-0.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.11-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 46.2 MB

Release files / gsfit-0.0.11.tar.gz

Download URL gsfit-0.0.11.tar.gz
Size 2.4 MB
Tags Source
SHA-256 checksum
How to use checksums
908b2b26ca3b89ab816f3d2daffe98f99d05581d8951d2d8316df9465623677f
BLAKE2b-256 checksum
How to use checksums
40b810466473b58168d76043e22938fe357a693d8e4346616ae4fe22c0405fc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp315-cp315-win_amd64.whl

Download URL gsfit-0.0.11-cp315-cp315-win_amd64.whl
Size 3.0 MB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
a74d48948c2658d2dee05d231cf6bf0ce9b6236ff8bdc3e8fb4d5b7c14bda9cb
BLAKE2b-256 checksum
How to use checksums
4cc1b5972c2f09db8a823c25f1949629af2743681d9a6c296c91161934e24462
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.11-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.2 MB
Tags CPython 3.15 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7bf8d92b71e2dca88f089e65a3bda3bc7a9d642759e1aceafa8173147460770b
BLAKE2b-256 checksum
How to use checksums
35570640e3f1a227891c0698e2610589da8c1e83c2cb872b7f90373e42e3a151
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp315-cp315-macosx_11_0_arm64.whl

Download URL gsfit-0.0.11-cp315-cp315-macosx_11_0_arm64.whl
Size 2.6 MB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e26a68f39f99f4039850e00ab598ea5dc640ab24ecef2536dc2d0f2e435c199c
BLAKE2b-256 checksum
How to use checksums
61221735cfd5a9a94b6c4dd414e2b62d17febd0953c115962dfee67731ca1c9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp314-cp314-win_amd64.whl

Download URL gsfit-0.0.11-cp314-cp314-win_amd64.whl
Size 3.0 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
6cb29a07da2d92a0ce72e4226dbf6524b2f241d08075d62c5826231c7b6211c3
BLAKE2b-256 checksum
How to use checksums
fbef846497d4a3772ac2b957de64eabfe3ed86418825cfa7c0d643032391a999
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.11-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.2 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
765a36629f390081be8fc017a25298b0e4be644cee3a8d05cf756bac17f1ff7d
BLAKE2b-256 checksum
How to use checksums
444b6e8a449c010931cc1d47219402b5d2d35e721806bdbd2335f6ceb1fdb4ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp314-cp314-macosx_11_0_arm64.whl

Download URL gsfit-0.0.11-cp314-cp314-macosx_11_0_arm64.whl
Size 2.6 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
86aa7e06eb1cf7ac576ae58931ae91f7279ee326003af672ebbfc4c49fa7a711
BLAKE2b-256 checksum
How to use checksums
de394d0b593fa584a3aaa6c0f24c14e94012db27838dce4700faef99ac577f4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp313-cp313-win_amd64.whl

Download URL gsfit-0.0.11-cp313-cp313-win_amd64.whl
Size 3.0 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d77415aafa9874b17c0fe692d0f421ef3fca7c3a4a002a1153bafd3f07e4aa71
BLAKE2b-256 checksum
How to use checksums
e490a319a2314950774e2c75d77705c9b55b7f540970f5524a88966eda443798
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.2 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b03d443ac3a775cdf83eb3833c1e47ab6a983d3bbcd52b38987fb5e26e875407
BLAKE2b-256 checksum
How to use checksums
e01bb6b2e5a895888aad487d3dfa1b7a1f7ed486d7e738a04b52862b2e858ed3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp313-cp313-macosx_11_0_arm64.whl

Download URL gsfit-0.0.11-cp313-cp313-macosx_11_0_arm64.whl
Size 2.6 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a393855f5b5f72a821e239b02ad3b17ccf5a5093d5ec3381b0af7c14ba9b953a
BLAKE2b-256 checksum
How to use checksums
7f4f77f9fda0bb00c1b74d0d1929b5bb7e4de4beef0fbdf8e3abf439127d0307
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp312-cp312-win_amd64.whl

Download URL gsfit-0.0.11-cp312-cp312-win_amd64.whl
Size 3.0 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
85902973893d97b7d8387bcab0cd35efb560f0ba4a0a85ab06274ff2100c358b
BLAKE2b-256 checksum
How to use checksums
ca3cf2544357fdfb0786b4ad197b6b2fd8d40481b9c4f531d57b25a184de5566
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.2 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
542a1277d957aa286c0ba878732a19b103964bfb15bca26833fa756846521815
BLAKE2b-256 checksum
How to use checksums
3cb7a96ab84a070dce19b3b0b773687dbe7a2953e4999976ea8782a386ddf897
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp312-cp312-macosx_11_0_arm64.whl

Download URL gsfit-0.0.11-cp312-cp312-macosx_11_0_arm64.whl
Size 2.6 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
49dfc5db768d0d23d29a38a0a91291fe29fe1d0a9077f66cf585f2ff51c19337
BLAKE2b-256 checksum
How to use checksums
2db51cf81942cf5a07b568b0307e08a7d89aa6c649e7a456b3b91b2c50127a13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp311-cp311-win_amd64.whl

Download URL gsfit-0.0.11-cp311-cp311-win_amd64.whl
Size 3.0 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ed81faa04c71a5ec8944e5a96483a3789b43b7e2c68536511a9ba487356a366c
BLAKE2b-256 checksum
How to use checksums
3ff82f90735041ed13e53c2cc34a6d052845e5874c88d7b37f3dafa4fe8ba5e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.2 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
41cec8166027493aa7c9a075bf5fbc352d8077294c31f332bf6887ab08296cd5
BLAKE2b-256 checksum
How to use checksums
bbc323573a46b225b94e8d591aaadef30dfd7582de9477a0c192c3742bf4f3d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / gsfit-0.0.11-cp311-cp311-macosx_11_0_arm64.whl

Download URL gsfit-0.0.11-cp311-cp311-macosx_11_0_arm64.whl
Size 2.6 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
395d650751f3cb80b621f3a7fe05e63d30ee068e1fe83a31ffc5c9d45ca1c1b7
BLAKE2b-256 checksum
How to use checksums
eacaac20a5815b84dab89abd26dbfcf349349633eb2f3bafeb69ed2e34e88cf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

This release

0.0.11 This release

16 release files

0.0.8

16 release files

0.0.4

10 release files

0.0.3

10 release files

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