Skip to main content

KuoEliassen: A High-Performance Solver for the Kuo-Eliassen Equation

Project description

KuoEliassen Logo

A High-Performance Solver for the Kuo-Eliassen Equation

PyPI version DOI PyPI - Python Version PyPI - Downloads Tests codecov Build Status Platform License Python

A high-performance, production-ready solver for the Kuo-Eliassen equation describing meridional atmospheric circulation forced by diabatic heating and eddy fluxes. Combines optimized Fortran 90 backend with intuitive Python interface.

The Kuo-Eliassen Equation

The Kuo-Eliassen equation governs the zonal-mean meridional mass streamfunction response to forcing. This is an elliptic partial differential equation relating the streamfunction to diabatic heating and eddy momentum/heat flux convergences.

Governing Equation

The compact form of the Kuo-Eliassen equation:

$$\frac{f^2 g}{2\pi a \cos\phi} \frac{\partial^2\psi}{\partial p^2} + \frac{S^2 g}{2\pi a} \frac{\partial}{\partial\phi}\left(\frac{1}{a\cos\phi}\frac{\partial\psi}{\partial\phi}\right) = D$$

Complete expanded form (RHS fully decomposed):

$$f^2 \frac{g}{2\pi a\cos\phi} \frac{\partial^2\psi}{\partial p^2} + S^2 \frac{g}{2\pi a} \frac{\partial}{\partial\phi}\left(\frac{1}{a\cos\phi}\frac{\partial\psi}{\partial\phi}\right) = \frac{R}{p}\left(\frac{1}{a}\frac{\partial\overline{Q}}{\partial\phi} - \frac{1}{a}\frac{\partial}{\partial\phi}\left(\frac{1}{a\cos\phi}\frac{\partial(\overline{v'T'}\cos\phi)}{\partial\phi}\right)\right) + f\left(\frac{1}{a\cos^2\phi}\frac{\partial^2(\overline{u'v'}\cos^2\phi)}{\partial p \partial\phi} - \frac{\partial\overline{X}}{\partial p}\right)$$

Operator form (alternative notation):

$$\mathcal{L}(\psi) = D$$

where the elliptic operator $\mathcal{L}$ is defined as:

$$\mathcal{L}(\psi) = \frac{f^2}{2\pi a \cos\phi} g\frac{\partial^2}{\partial p^2} + \frac{S^2 g}{2\pi a \cos\phi} \frac{\partial}{\partial \phi}\left(\frac{1}{a\cos\phi}\frac{\partial}{\partial \phi}\right)$$

Component breakdown of RHS:

$$D = \underbrace{\frac{R}{p a}\frac{\partial\overline{Q}}{\partial\phi}}{\text{Diabatic Heating}} - \underbrace{\frac{R}{pa}\frac{\partial}{\partial\phi}\left(\frac{1}{a\cos\phi}\frac{\partial(\overline{v'T'}\cos\phi)}{\partial\phi}\right)}{\text{Eddy Heat Flux}} + \underbrace{\frac{f}{a\cos^2\phi}\frac{\partial^2(\overline{u'v'}\cos^2\phi)}{\partial p \partial\phi}}{\text{Eddy Momentum}} - \underbrace{f\frac{\partial\overline{X}}{\partial p}}{\text{Friction}}$$

Meridional velocity diagnostic:

$$\bar{v} = -\frac{1}{a}\frac{\partial\psi}{\partial p}$$

Vertical velocity diagnostic (from continuity):

$$\bar{\omega} = -\frac{1}{a\cos\phi}\frac{\partial(\psi\cos\phi)}{\partial\phi}$$

where:

  • ψ — meridional mass streamfunction [kg/s]
  • f = 2Ω sin(φ) — Coriolis parameter [s⁻¹]
  • Ω — Earth's rotation rate = 7.29 × 10⁻⁵ [rad/s]
  • a — Earth's radius ≈ 6.371 × 10⁶ [m]
  • φ — latitude [rad]
  • p — pressure [Pa]
  • g — gravitational acceleration ≈ 9.81 [m/s²]
  • — static stability [s⁻²]
  • R — specific gas constant ≈ 287 [J/(kg·K)]
  • $\overline{Q}$ — zonal-mean diabatic heating rate [K/s]
  • $\overline{v'T'}$ — meridional eddy heat flux [K·m/s]
  • $\overline{u'v'}$ — eddy momentum flux [m²/s²]
  • $\overline{X}$ — friction/dissipation function [K/s]
  • Overbars represent zonal and monthly mean, and primes represent deviations from zonal and montly mean

Static Stability

The static stability parameter $S^2$ characterizes atmospheric resistance to vertical motion and is defined as:

$$S^2 = -\frac{1}{\rho\theta}\frac{\partial\theta}{\partial p}$$

Alternatively, in terms of absolute temperature:

$$S^2 = -\left( \frac{R_d}{p} \right) \left[ \frac{\partial T}{\partial p} - \left( \frac{R_d}{c_p} \right) \frac{T}{p} \right]$$

where:

  • ρ — air density [kg/m³]
  • θ — potential temperature [K]
  • T — absolute temperature [K]
  • c_p — specific heat at constant pressure ≈ 1005 [J/(kg·K)]
  • g — gravitational acceleration ≈ 9.81 [m/s²]
  • $\frac{\partial\theta}{\partial p}$ — vertical potential temperature gradient [K/Pa]
  • $\frac{\partial T}{\partial p}$ — vertical absolute temperature gradient [K/Pa]

Example Solution

The solver produces meridional streamfunction fields that reveal Hadley and Ferrel cell circulations:

Example Kuo-Eliassen solution

Meridional mass streamfunction and Kuo-Eliassen equation solution

Features

  • Optimized Fortran Backend: Core solver implemented in production-grade Fortran 90 with advanced numerical methods
  • Component Decomposition: Separate diagnostic contributions from latent heating, radiative heating, eddy heat flux, and eddy momentum flux
  • Flexible Interface: NumPy and xarray-compatible APIs for seamless integration with scientific workflows
  • Cross-Platform Support: Pre-built wheels for Windows, macOS (Apple Silicon), and Linux
  • Extensively Tested: >90% code coverage with comprehensive test suite
  • High Performance: Dual solver architecture with LU decomposition (exact) and SOR (memory-efficient iterative)
  • Numerical Robustness: Robust handling of geometric singularities near poles (requires grid excluding exact $\pm 90^\circ$)
  • Solver Flexibility: Choose between direct sparse LU solver or optimized SOR with configurable relaxation parameters

Installation

From PyPI (Recommended)

Pre-built binary wheels are available for Python 3.9-3.13 on all major platforms:

pip install kuoeliassen

No compiler required! Wheels are provided for:

  • Linux: x86_64 (manylinux_2_28)
  • macOS: arm64 (Apple Silicon M1/M2/M3)
  • Windows: x86_64

From Source (Development)

If you want to contribute or modify the code:

  1. Prerequisites: Install a Fortran compiler

    • Windows: conda install -c conda-forge gcc-gfortran -y
    • macOS: brew install gcc
    • Linux: sudo apt-get install gfortran (Ubuntu/Debian)
  2. Clone and install:

    git clone https://github.com/QianyeSu/KuoEliassen.git
    cd KuoEliassen
    pip install -e .
    

[!IMPORTANT] Grid Selection: The input latitude grid must not include the exact poles ($\pm 90^\circ$). The Kuo-Eliassen equation contains $1/\cos\phi$ terms that are singular at the poles. Always slice your data (e.g., lat = slice(-89.9, 89.9)) before solving.

Solver Methods

KuoEliassen provides two high-performance numerical solvers:

1. LU Decomposition (Default)

  • Method: Direct sparse matrix solver using SuperLU
  • Pros: Exact solution (within machine precision), guaranteed convergence
  • Cons: Higher memory usage for large grids
  • Best for: Small to medium grids (< 100×100), when precision is critical
result = solve_ke(v, temperature, vt_eddy, vu_eddy, pressure, latitude,
                  solver='lu')  # Default

2. SOR (Successive Over-Relaxation)

  • Method: Iterative relaxation solver
  • Pros: Low memory footprint, excellent for large grids, tunable convergence
  • Cons: Requires omega parameter tuning for optimal performance
  • Best for: Large grids, production runs, memory-constrained environments
result = solve_ke(v, temperature, vt_eddy, vu_eddy, pressure, latitude,
                  solver='sor',
                  omega=1.8,      # Relaxation factor (1.0-2.0, default=1.8)
                  tol=1e-8,       # Convergence tolerance (default=1e-8)
                  max_iter=50000) # Maximum iterations (default=50000)

Omega Parameter Tuning:

The optimal relaxation factor ω depends on your grid geometry:

  • ω = 1.0: Gauss-Seidel (slow but stable)
  • ω = 1.5-1.9: Typical optimal range for atmospheric grids
  • ω → 2.0: Faster convergence but risk of divergence

Use examples/optimize_sor_omega.py to find the optimal ω for your data:

cd examples
python optimize_sor_omega.py

Example output:

Optimal Omega: 1.85
Minimum iterations: 675
Time cost: 0.0222 s

Quick Start

Basic Usage: Solve for Streamfunction

import numpy as np
import xarray as xr
from kuoeliassen import solve_ke

# Load atmospheric data from NetCDF file
# IMPORTANT: Exclude poles to avoid singularities
data = xr.open_dataset("example_data.nc").sel(lat=slice(-89.9, 89.9))

# Extract variables from dataset
# Assuming dimensions are (time, pressure, latitude)
v = data['v'].values                    # Mean meridional wind [m/s]
temperature = data['temperature'].values  # Temperature field [K]
vt_eddy = data['vt_eddy'].values        # Eddy heat flux v'T' [K⋅m/s]
vu_eddy = data['vu_eddy'].values        # Eddy momentum flux u'v' [m²/s²]
diabatic_heating = data['diabatic_heating'].values  # Total heating [K/s]

# Extract coordinate arrays (must be 1D)
pressure = data['pressure'].values      # Pressure levels [Pa]
latitude = data['latitude'].values      # Latitude [degrees]

# Solve Kuo-Eliassen equation for each time step
result = solve_ke(
    v, temperature, vt_eddy, vu_eddy,
    pressure, latitude,
    heating=diabatic_heating,
    solver='lu'  # or 'sor' for iterative solver
)

# Access results
psi_total = result['PSI']               # Total streamfunction [kg/s]
psi_d = result['D']                     # Total RHS forcing

Component Decomposition: Isolate Individual Forcings

# Separate radiative and latent heating contributions
result = solve_ke(
    v_mean, temperature, vt_eddy, vu_eddy, pressure, latitude,
    rad_heating=rad_heating,        # Radiative heating [K/s]
    latent_heating=latent_heating   # Latent heating from convection [K/s]
)

# Examine component-wise circulation response
psi_total = result['PSI']          # Total circulation
psi_rad = result['PSI_rad']        # Radiative forcing response
psi_latent = result['PSI_latent']  # Latent heating response
psi_vt = result['PSI_vt']          # Eddy heat flux response
psi_vu = result['PSI_vu']          # Eddy momentum flux response

Using xarray for Labeled Data

import xarray as xr
from kuoeliassen import solve_ke_xarray

# Load your atmospheric data (must have pressure and latitude dimensions)
ds = xr.open_dataset('atmospheric_data.nc')

# Solve with automatic coordinate handling
result_ds = solve_ke_xarray(
    ds['v_mean'], ds['temperature'], ds['vt_eddy'], ds['vu_eddy'],
    heating=ds['heating'],
    pressure_dim='pressure', latitude_dim='latitude'  # Specify if needed
)

# Result is an xarray Dataset with proper coordinates and attributes
psi = result_ds['PSI']
print(psi)  # Full metadata preserved
psi.plot()  # Easy visualization

Platform Support

Platform Python Versions Architecture Status
Linux 3.9 - 3.13 x86_64 ✅ Tested
macOS 3.9 - 3.13 arm64 (M1/M2/M3) ✅ Tested
Windows 3.9 - 3.13 x86_64 ✅ Tested

[!NOTE] macOS Intel (x86_64) Support: Binary wheels for macOS x86_64 (Intel processors) are no longer provided as of v0.2.0. If you have an Intel-based Mac, you can install from source:

git clone https://github.com/QianyeSu/KuoEliassen.git
cd KuoEliassen
pip install -e .

Requires: brew install gcc

Requirements

  • Python: ≥ 3.9
  • NumPy: ≥ 1.24.0
  • SciPy: ≥ 1.7.0
  • xarray: ≥ 0.19.0 (optional, for labeled array interface)

Development Requirements

For building from source, you'll need:

  • A Fortran compiler: gfortran, ifort, or flang
  • Meson build system
  • NumPy's f2py (included with NumPy)

License

This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.

Citation

If you use KuoEliassen in your research, please cite:

@article{Su2025,
  author = {Su, Q. and Liu, C. and Zhang, Y. and Qiu, J. and Li, J. and Xue, Y. and Cao, N. and Liao, X. and Yang, K. and Zheng, R. and Liang, Z. and Jin, L. and Huang, K. and Jin, K. and Zhou, N.},
  title = {Consistency of Changes in the Ascending and Descending Positions of the Hadley Circulation Using Different Methods},
  journal = {Atmosphere},
  year = {2025},
  volume = {16},
  number = {4},
  pages = {367},
  doi = {10.3390/atmos16040367}
}

@software{kuoeliassen2025,
  author = {Su, Qianye},
  title = {KuoEliassen: A High-Performance Solver for the Kuo-Eliassen Equation},
  year = {2025},
  publisher = {Zenodo},
  doi = {10.5281/zenodo.18060064},
  url = {https://doi.org/10.5281/zenodo.18060064}
}

Contact

For questions, bug reports, or feature requests, please open an issue on GitHub.

Acknowledgments & References

This solver implements the Kuo-Eliassen equation, a fundamental tool in atmospheric dynamics for understanding meridional circulation:

  • Su, Q., Liu, C., Zhang, Y., Qiu, J., Li, J., Xue, Y., Cao, N., Liao, X., Yang, K., Zheng, R., Liang, Z., Jin, L., Huang, K., Jin, K., & Zhou, N. (2025). Consistency of Changes in the Ascending and Descending Positions of the Hadley Circulation Using Different Methods. Atmosphere, 16(4), 367. https://doi.org/10.3390/atmos16040367
  • Kuo, H.-L. (1956). Forced and free meridional circulations in the atmosphere. J. Atmos. Sci., 13, 561–568.
  • Kim, H.-K. & Lee, S. (2001). Hadley cell dynamics in a primitive equation model. Part I: axisymmetric flow. J. Atmos. Sci., 58, 2845–2858.
  • Chemke, R. & Polvani, L. M. (2019). Opposite tropical circulation trends in climate models and in reanalyses. Nat. Geosci., 12, 528–532.
  • Pikovnik, M., Zaplotnik, Ž, Boljka, L. & Žagar, N. (2022). Metrics of the Hadley circulation strength and associated circulation trends. Weather Clim. Dyn., 3, 625–644.
  • Held, I. M. & Zurita-Gotor, P. (2025). Misuse of Kuo–Eliassen Equation in Studies of the Climatological Mean Meridional Circulation. J. Atmos. Sci., 82, 1765–1766.

The numerical implementation employs:

  • SOR (Successive Over-Relaxation) iterative solver for the elliptic operator
  • Centered finite differences for spatial derivatives with pole-aware boundary handling
  • Fortran 90 for high performance and portability

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

kuoeliassen-0.2.4-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

kuoeliassen-0.2.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

kuoeliassen-0.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

kuoeliassen-0.2.4-cp314-cp314-macosx_15_0_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

kuoeliassen-0.2.4-cp314-cp314-macosx_14_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

kuoeliassen-0.2.4-cp313-cp313-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.13Windows x86-64

kuoeliassen-0.2.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

kuoeliassen-0.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

kuoeliassen-0.2.4-cp313-cp313-macosx_15_0_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

kuoeliassen-0.2.4-cp313-cp313-macosx_14_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

kuoeliassen-0.2.4-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

kuoeliassen-0.2.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

kuoeliassen-0.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

kuoeliassen-0.2.4-cp312-cp312-macosx_15_0_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

kuoeliassen-0.2.4-cp312-cp312-macosx_14_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

kuoeliassen-0.2.4-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

kuoeliassen-0.2.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

kuoeliassen-0.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

kuoeliassen-0.2.4-cp311-cp311-macosx_15_0_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

kuoeliassen-0.2.4-cp311-cp311-macosx_14_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

kuoeliassen-0.2.4-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

kuoeliassen-0.2.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

kuoeliassen-0.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

kuoeliassen-0.2.4-cp310-cp310-macosx_15_0_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

kuoeliassen-0.2.4-cp310-cp310-macosx_14_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

kuoeliassen-0.2.4-cp39-cp39-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.9Windows x86-64

kuoeliassen-0.2.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

kuoeliassen-0.2.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

kuoeliassen-0.2.4-cp39-cp39-macosx_15_0_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.9macOS 15.0+ x86-64

kuoeliassen-0.2.4-cp39-cp39-macosx_14_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file kuoeliassen-0.2.4-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 926d7ee9d493e541a04d4d71c2ccb5b48abae73217b6aa5370c8090f7863e1e4
MD5 88aee661d81c8f5eaebe254ed831e08c
BLAKE2b-256 3ad251dff011bc33517ff85eff24f7ef2e5cdc435eeec138a022c84c78493cff

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d79dd960e6792ba357f22030c2a2978220df82db76aa1ebd0aa098ff36d77798
MD5 6512647bce7ed81cb25919f0fc103443
BLAKE2b-256 81bad491363a6ca82278e7821c7de37897bc90dbd631a60e4abfadee18e8a476

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 df0512ebb3604c83424f76d60a386ba91b085d07d829233c1b6da309833f7490
MD5 219bcb349d142f21cad55ae962da1596
BLAKE2b-256 7999b35d6acc3652c810fae7addb1558eb5bff7f17f641492cab4b5af0bc5ddf

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 002037de9a6dd153bc2d9342640cdff988f58272bde44a3a387aae7cd845df8c
MD5 220b50dd28832933ec8338188d23ebba
BLAKE2b-256 cbd59d0a1a1e60497f431aa56830f65f69eb301ba8df46e98a35404adfa194a6

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 45ef822030c2e6309945f719b698cd6042ad0781485fbff0df473ef0217eba1d
MD5 70c8bbef2d80b0b42f9d8ca9047763c9
BLAKE2b-256 90f76939928a7e693724615a29c6997e4c861883455afc74b34180c0f82b6fb2

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8d602a1d63a8059c56da010290d28a782eec3d66b3ff36eb0d3652d23159c423
MD5 2748c41d5a67bddc6b74385395c4f1a6
BLAKE2b-256 cbfabbce9c8b5f2a60380a54e0148cfadc054187ed5928ddb9d800805ab8966c

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 901c7bbd043e4a5dcbd6da922519089c51bcd188a7b0f77f8cbdf95e17c36b05
MD5 a17fb6675cbf1c78ff7fa90dded6785d
BLAKE2b-256 99e00b812593c8290c3282edc9335fd52865899bd6ed9a2347662d5b8fce95e8

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c270e19dcab65eb7fb14853766bb7194633c2b88460e9f6618a65733a0f050c6
MD5 320d1add11c7befad6d82098a180b3de
BLAKE2b-256 aac58b8b0d920661a553bc519f1cd47032f6e499d96a866a61bafb7619fc57e0

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 5f23e29c2c133ce58c60212bb57c90f496052e623ed4a50b10bf718b55f256fb
MD5 bad05f283de45c396c782fc9ab57edad
BLAKE2b-256 886efa3e9102ebdddbb7f4bb3cce1fb374c278b03ba2a066149604606894fca0

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0ee18743fbe28b6e103355488b91d542024a3f6636cb019522ca20068994d12f
MD5 d18ad7829c0708da573ba7f529c6ff67
BLAKE2b-256 8ee5d1f7c5f3c0a73df8a31398e755c318007eea8358a123e4fea6d3432efeb1

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f700422749dba18955bb93270915ac0f40272dde5226e8a81951ce8b64b8c728
MD5 5bae7143be9b86dce2c6056f6e08ffa4
BLAKE2b-256 9da5a8896474f5627325ccb34c658f2a23e5825db7ac3ca72ce2d772603ad2c2

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 74caa54ae70886b2e9248fc69c9686a118fa261a4a09cb398cf2e789db8e21c3
MD5 f7147cebe150fddfcb8b28f3c10f74ae
BLAKE2b-256 24648da98894ce1ace8cc8b6cdf88312fbe0c06d0e5519b317a6f6233b0484a7

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3ceb2ca93a605d37a240f086b6ded967489182b4eb43c79ab78aa9d4ac3d519a
MD5 88d20af306458520fbbddd197924c6ee
BLAKE2b-256 5b636884d555e8ae549de44cb4c5a204b0d3e0e91e340cc9f6e782d522db696f

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 25014ed9287e8b3815fabf03490a9eb3224de100c3c32c9f1796bf44de04f337
MD5 b3b014ac3b9efc6a0663b4957c969dc8
BLAKE2b-256 c5225e9f2363364f87d5888964fb4ce73d1882cc056ebaad0fb4aff595dae2d4

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8b73883c8f745059579403b1010bcdb703c7b435761bfbaef5f3be6065570b0e
MD5 12156ee4216bdc4d92f9ce8333c6cd6f
BLAKE2b-256 679a1d975aae4222b79bf0cd6cc176b2535629b7d7b922ec68f978cedf7c4a3f

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9e6b48251d3782e99d2feb228ef6d3c2af8c38a1edb834bebc84021072264978
MD5 955df247c813420dece055f26bd57f03
BLAKE2b-256 9261d7813515cdb75725a2562fe9e84b9c924621120408eb6d20a4a336bc105a

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9635ee65dde6607dd649804de4340d7bc6e14aea33ca0d8813ce4795fe88086b
MD5 b9ad4aad79d19f4488906079e3ea8ed8
BLAKE2b-256 ead1999e20a802dd98ae5e982a5ef3eb3148c11beee1fe6149bfdd46e4d9d24d

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c2aa0fcd4fc13f466b0d40f0becd8f95b526c34f8770a4e7f98c50b98d034159
MD5 8b823a1b8914f8e8841505fc10c44a5f
BLAKE2b-256 59f44eb965d8041f80c2b9e8846d5c74618d9486b22237aa91db48b55dcee762

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 5d81dbdccd586868b42437d01063ec057b8478987dcb1621864f9ee80a63ee4c
MD5 8a4840be3c61418a25a843aead91aa8b
BLAKE2b-256 01e2bb8063fd8a9268a1bf02c293a2fe4b69375a9a636f42b8664e7432ca6e7c

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 6caf73d77da4d7d3ca6acdded33994b70ee78893ddcac65a21fc5a14fb3a9fed
MD5 87fde9413aaa87137096e855af541e8f
BLAKE2b-256 3988b78f9e78d4dc2b461ae433ff1e966cea7c1198775f044f2944c59d95ac45

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fb8862f113ad495e229c860c312807fb1cf497102c06728fc494200a8dd4b874
MD5 82c0552d5b957b2a7b1a29abe07da849
BLAKE2b-256 1d94424ad3509e4e9612e0064d2d8c2963533c79b4c85a3269fc5eec12c38f39

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 95834a69187a0dc8c98670ed15994b37dcc3f5e70e0f281d27e1bdd2f499345d
MD5 3b356bc48f000ccf49a399b71424d082
BLAKE2b-256 141520f900b5d4039c9550a4f87fcfec6508383d5623eb29dbc1646cb86893ec

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 593bded6e217e895ef17695d013251b9dda238a4fe7ce56ae23b2bbdb9a3c32f
MD5 1f65dada672be764e4cf71f00114019e
BLAKE2b-256 510643c9fe3e64b4a7af67589f0b2d215c5e6ef0303cba2ba25af1d1a44827ea

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 ee26785da17cb3a2201170d1297fc229e7faeca57fc0a70670147742db52e3a1
MD5 70be2a6332136c6368d30ea4c67c6dde
BLAKE2b-256 daff1781f1263cbce832e6bfdaf556602f97945dfc79d344846addf1d70ef717

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ad2e902804217e80faa59710ff63baae7e1d5e60c71c5e543a7d94c77638df82
MD5 aab1dae06f2c28756585d428b58164ea
BLAKE2b-256 c4b2d9c1f0a0e5598d8081127266b08bb5633539224a3082b23819e111bb48af

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: kuoeliassen-0.2.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kuoeliassen-0.2.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 56756a396b99175d50bbbd1ac8a12d7c9b80f2d58d8360c499db6c66fe6ff573
MD5 b5b5867bf198f50da7331b9c82112f95
BLAKE2b-256 687bf046779ab166248c7ab5ee8c83b4ede3b78f9286bdfb01167cab4527dc0a

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fda93187708716ff311edee707d42ac74544f531207790d7196d671a76bf04b1
MD5 57188ed5ce85ac0ecae0d634d82dfed5
BLAKE2b-256 a233895614ef2dc0110a598596a4a9abf382c5db4a5607ccb7da76bf63f3d63b

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 903e3ac04a61f5d1f529080fe9e7ccb63cf2075b3f71fb968aa4e63fdcd633ab
MD5 b1c4c105b72b75a2522b938221328947
BLAKE2b-256 933e25b69f5554face49229afd903a831a784377322364027e0e7274ffbfa261

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp39-cp39-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp39-cp39-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 a6cd52cbca73425256bffe7685902ddbf94b570b4c753627fe39d8c1bc0a3ec8
MD5 461ce0a4621881ca9aac0ba0c1cff66e
BLAKE2b-256 6daaacbc9cbdcc5530594c907c7028b6684fedaaa7a47db084b9c6509c039868

See more details on using hashes here.

File details

Details for the file kuoeliassen-0.2.4-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for kuoeliassen-0.2.4-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c349971129ce919db5db07a69ba67b0e70ae774e0177cec53da44dd776e9929f
MD5 a2c3937b75377b3e2031f9a7e152bf5f
BLAKE2b-256 a9446ee8e437165622e1592aa425204a086efe998a4490fe3efa2b61bdcfc640

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page