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 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_minor_radius and initial_kappa; 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.10

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.10
File Size Uploaded
gsfit-0.0.10.tar.gz 2.0 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for gsfit 0.0.10
File
gsfit-0.0.10-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
gsfit-0.0.10-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.10-cp315-cp315-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 macOS 11.0+ ARM64 Details
gsfit-0.0.10-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
gsfit-0.0.10-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.10-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
gsfit-0.0.10-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
gsfit-0.0.10-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.10-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
gsfit-0.0.10-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
gsfit-0.0.10-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.10-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
gsfit-0.0.10-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
gsfit-0.0.10-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.10-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 35.4 MB

Release files / gsfit-0.0.10.tar.gz

Download URL gsfit-0.0.10.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
302559cadf1d79e8728207ef6bde21f9d612e9c23e5afd0386c3dfda98ab5948
BLAKE2b-256 checksum
How to use checksums
14a27ae075f87f4b0a8531ed1785080e6020d3f9a8f6672769db461d6e70c789
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp315-cp315-win_amd64.whl
Size 2.4 MB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
562233cee8acf39ccebee086e11e050fab1fb64718332503bbc789950736fe56
BLAKE2b-256 checksum
How to use checksums
7e6a4fc20c3bdd4a5fcdccb69b9ef0fef6a562ddb15825fe5392204b472f20d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.15 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c074a212173e6f725e9487cee35efce2930ec3c4731e3053cd9459c4e8a98903
BLAKE2b-256 checksum
How to use checksums
802ec0fe511b625a9f69149467170fb5eb5c88d909a2c26b7576c72aab752da4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp315-cp315-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0a1034f942bd17f4f9255c135e2fc152ba8c41d69435a45b2c0f372050c4cad0
BLAKE2b-256 checksum
How to use checksums
6e59e768870b6707eef3bf415a7bc7b055fc572007b062472cc78bd5442cb509
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp314-cp314-win_amd64.whl
Size 2.4 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
e0e9cc2b9144a75c6b721c6c21c6e8f5f4a1aec1f3063463b5b7dd5481e79b75
BLAKE2b-256 checksum
How to use checksums
e1bcb7d060aa9dfe23ee12775f76bf4669638f271ec5733b8484aa1ed182dc95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f98d5839106e22d9ae4ea106ab8afaea320ea479b2793ab94f0d546acfa41ecf
BLAKE2b-256 checksum
How to use checksums
ccb000d9e6624e6dfc99880f94e91a3e4814d9c72e8f79699ce716a75d22e818
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp314-cp314-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f54892dab8f5c40ff2378d4c488635b721b3a8846046381467827316f7fff357
BLAKE2b-256 checksum
How to use checksums
afe0ac74c06a5dafa525fea74a99c0b22ff406dfd2f3113b7cf724f0df0bfd4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp313-cp313-win_amd64.whl
Size 2.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
aad3a1e9d36123310f2c5d0e212c492f950801acb0cac5d4305f93ca33193ad7
BLAKE2b-256 checksum
How to use checksums
c6de8553eb3f335caef2c3705e055776fa6d803cc9f694ce88ea3b19df1bcd21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
cfc7f4db138fc76a3b1cfc9061d50e197dd24d8a2063d4cd6b1c074062824185
BLAKE2b-256 checksum
How to use checksums
639212ae327f318cee5ace9724bd1c5b8c706c22e69451aa4f60d3b15c222cd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp313-cp313-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ba483b75ac2e0e1483a37458e2757a3ec84037a9f95e6e8479220418434dff54
BLAKE2b-256 checksum
How to use checksums
949cf9b104ec19db3948e849d6cfa2e6dddf9dbb36b43a1c6630a505bc0abb19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp312-cp312-win_amd64.whl
Size 2.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9b9f7e517b92474b170fc3e4c87cc991a1a756ac7209a06b964edbaa67f96764
BLAKE2b-256 checksum
How to use checksums
9f1df1ec7138f455bb797121014985a0740bb80e9d7b7e6a23823d08fecbae95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
9b2ed298ccd8c70f96573dd271d51c0fe2ae2b17eedab9c2234511de07b19120
BLAKE2b-256 checksum
How to use checksums
32eaf0ce9d2f2dd7638cefefcba7b8e4f9001888b55a5ff38f1533a403be3c5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp312-cp312-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
97e21af046c8c4fcc68ad2ef7d29053ed7267912f1aa863e305f6853f2b2cc0c
BLAKE2b-256 checksum
How to use checksums
fab98fa3cea34d09396985af134af406689d9006646753aac83cfb7755bd80ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp311-cp311-win_amd64.whl
Size 2.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
250aab5d60888902d72c0f8548d12583214f2dfee2b11e5c3d84e2a67605e49b
BLAKE2b-256 checksum
How to use checksums
8fd30b521de357f0e3e35044ecce0870dabab031ab4a5fd9ee5db83f4c4dc539
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6321b0ac51585b8c80cc7bc5e2f2ef4c6feb2fc112bd8064a1b05ac382c680ac
BLAKE2b-256 checksum
How to use checksums
3cb14d6fb017c46ad37027a82399940c326b9e0ab898833503adcd30706957c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

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

Download URL gsfit-0.0.10-cp311-cp311-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
89c48b10f6a7d997be0dcb0f2a9a63bf54a71d28ee979c039bf69121371d289a
BLAKE2b-256 checksum
How to use checksums
fe133541bb1f148ff7807044b9dd5ec65860daffedbcfe221d66f296d6fb8bcf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release history Release notifications | RSS feed

This release

0.0.10 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