Skip to main content

EML-tree representations of Clifford algebras, octonions, exceptional algebras (E7/E8/Freudenthal), named GR metrics, lattices, and Lorentz-invariant ops. Built on eml-math.

Project description

EML-Spectral

v1.3.0 · The physics-and-algebra companion to eml-math. Pure Python core, zero required dependencies, optional Rust acceleration and C API.

Python 3.11+ License: MIT

EML-tree representations of:

  • Clifford algebras Cl(p, q) with the geometric product, rotors, and the sandwich product
  • Octonions — 8-component non-associative normed division algebra (Fano-plane multiplication)
  • Exceptional algebrasFreudenthalTripleSystem (J₃(𝕆), 27D), E7_56 (56D rep), E8_248 (adjoint), E8xE8 (heterotic)
  • Lorentz-invariant operations on EMLPoints (functional spacetime namespace)
  • Named GR metricsMetricTensor.flat / schwarzschild / flrw / ads5_x_s5 / calabi_yau_3 / klebanov_strassler / heterotic_e8x8 / g2_holonomy
  • Lattices — E₈ root lattice, Leech lattice, Planck-scale discrete helpers
  • Spectral flow — the discrete Φ operator, racetrack fixed points, the (b₃/24)·χ_eff topological invariant

Install

pip install eml-spectral

This pulls in eml-math >= 1.3.0 automatically. Zero other required deps.

Optional extras:

pip install eml-spectral[ext]        # + numpy, sympy
pip install eml-spectral[precision]  # + mpmath
pip install eml-spectral[rust]       # + maturin (to build the Rust extension)
pip install eml-spectral[dev]        # + pytest, ruff, mypy, maturin

Quickstart

from eml_math import EMLPoint
from eml_spectral import (
    EMLPair, EMLMultivector, Octonion, basis_octonion,
    FreudenthalTripleSystem, E7_56, E8_248, E8xE8,
    MetricTensor, EMLNDVector, MinkowskiFourVector, FourMomentum,
    spectral_flow, racetrack_fixed_point, topology_invariant,
)
from eml_spectral import spacetime

# Lorentz-invariant Minkowski interval (preserved under boost)
p = EMLPoint(1.0, 2.718)
print(spacetime.minkowski_delta(p))
p2 = spacetime.boost(p, 0.693)
print(abs(spacetime.minkowski_delta(p) - spacetime.minkowski_delta(p2)))   # ≈ 0

# Discrete spectral flow Φ — racetrack fixed points
traj = spectral_flow(EMLPoint(1.0, 1.0), steps=10)
print(traj[-1].x, traj[-1].y)

# Schwarzschild metric — analytic Christoffel symbols
g = MetricTensor.schwarzschild(rs=2.0)
print(g.is_curved(EMLPoint(3.0, 1.0)))                                    # True

# Octonion multiplication via the Fano plane
e1, e2, e4 = basis_octonion(1), basis_octonion(2), basis_octonion(4)
print((e1 * e2).norm())                                                   # 1.0  (= e4)

# Clifford algebra rotor — preserves quadratic form
mv = EMLMultivector([EMLPoint(1, 1)] * 4, signature=(1, -1))
R = mv.rotor(angle=0.5, plane=(0, 1))
print(abs(mv.rotate(R).quadratic() - mv.quadratic()))                      # ≈ 0

# E₈ × E₈ heterotic gauge group — analytic Cabibbo proxy
ee = E8xE8()
print(ee.portal_coupling())                                                # 1/√6
print(ee.racetrack_potential()["lambda_eff"])                              # exp(−2π/24)

What's new in v1.3.0

Layer What's added
Datasheet Get() API Uniform with eml_math.Get() / metaphysica.Get() / future periodica.Get(). eml_spectral.Get('E8_dim') returns a JSON-serialisable dict for any spectral or math constant. 167 total constants reachable via one entry point (31 spectral + 136 math, delegated).
Rust acceleration eml_spectral_core PyO3+Rayon module: octonion_mul_n, octonion_norm_n, spectral_flow_n, spectral_flow_batch, geometric_product_n, e8_norms_squared_n. Pure-Python fallback always present.
C / C++ API c_api/eml_spectral.h plus libeml_spectral.{dll,so,a} — 14 exported functions covering spectral flow, octonions, Lorentz boosts, Schwarzschild Christoffels, Clifford geometric product, lattice norms. Zero deps.
Documentation Static-HTML site under docs/ — index, API reference, user guide, mathematical concepts. Mirrors eml-math's docs style.
Tests 1166 tests (was 873) — full coverage of exceptional/, spectral flow, functional spacetime, axiom invariants, frame-shift safety, datasheet API.
Polish Versions kept in sync with eml-math v1.3.0; _HAS_RUST flag exported; pyproject classified as Production/Stable.

Datasheet API

from eml_spectral import Get, list_constants

Get('E8_dim')          # {value: 248, kind: 'dimension', source: 'eml-spectral', ...}
Get('alpha_leak')      # {value: 1/√6, formula: '1/√6', kind: 'heterotic', ...}
Get('lambda_eff')      # racetrack-stabilised modulus exp(-2π/24)
Get('leech_kissing')   # 196560 — kissing number of the Leech lattice
Get('topology_invariant')  # 144 — the conserved Φ-flow Noether charge

Get('pi')              # delegated to eml-math: math.pi with EML derivation

list_constants()       # 167 total names (spectral + math, deduplicated)

Categories surfaced via the spectral catalogue:

  • Algebra dimensions: g2_dim, f4_dim, e6_dim, e7_dim, e8_dim, e7_56, j3o_dim, octonion_dim, quaternion_dim, spacetime_dim, leech_dim
  • Lattice constants: e8_min_norm, e8_min_norm_sq, e8_kissing (240), leech_min_norm, leech_min_norm_sq, leech_kissing (196560), d4_kissing (24)
  • Topology: b3 (24), chi_eff (144), topology_invariant
  • Heterotic / racetrack: alpha_leak (= portal_coupling), lambda_eff, cabibbo_proxy, n1_flux, n2_flux
  • Spectral / G₂ seeds: edof, g2_seed_t_re, g2_seed_lambda
  • Discrete / Planck: planck_d

Optional Rust acceleration

When the wheel ships with the prebuilt extension (or you build it yourself with maturin develop --release), batch operations dispatch to Rayon-parallel Rust:

from eml_spectral import _HAS_RUST, eml_spectral_core as core

print("Rust available:", _HAS_RUST)
print(core.spectral_flow_step(1.0, 1.0))                          # → (1.0, e)
print(core.octonion_norm_n([[1, 0, 0, 0, 0, 0, 0, 0]] * 1000))     # parallel batch
print(core.e8_min_norm_squared())                                  # 2.0

To build from source:

$env:PYO3_PYTHON = "C:\path\to\python.exe"   # Windows
cargo build --release -p eml_spectral_core
# the .pyd / .so lands in target/release; copy into src/eml_spectral/

Listed via dir(eml_spectral_core):

Function Purpose
octonion_mul, octonion_mul_n, octonion_norm_n Fano-plane multiplication, batched
spectral_flow_step, spectral_flow_n, spectral_flow_batch Φ iteration, batched starts
geometric_product_n Clifford geometric product for Cl(p, q), Rayon-parallel
e8_norms_squared_n, e8_min_norm_squared, leech_min_norm_squared Lattice norms
add_n Element-wise addition (sanity check / template)

Optional C API

A standalone C shared library — no Python needed — lives under c_api/. Build:

cargo build --release -p eml_spectral_c_api

Outputs (in target/release/):

  • eml_spectral.dll (Windows) · libeml_spectral.so (Linux) · libeml_spectral.a (static)
  • c_api/eml_spectral.h — full header with extern "C" guards

Exports 14 extern "C" functions:

Topic Functions
Spectral flow els_spectral_flow_step, els_spectral_flow, els_spectral_flow_batch
Octonion els_octonion_mul, els_octonion_norm, els_octonion_mul_batch
Lorentz els_minkowski_delta, els_rapidity, els_boost, els_boost_batch
Schwarzschild els_schwarzschild_christoffel
Clifford els_geometric_product (any Cl(p, q))
Lattice els_e8_norm_squared, els_leech_norm_squared

Minimal C example (c_api/example.c):

#include <stdio.h>
#include "eml_spectral.h"

int main(void) {
    double x, y;
    els_spectral_flow_step(1.0, 1.0, &x, &y);
    printf("Phi(1, 1) = (%g, %g)\n", x, y);   /* (1.0, 2.71828) */
    return 0;
}

Build the example (Linux/macOS):

gcc example.c -L./target/release -leml_spectral -lm -o example

Documentation

docs/ contains a static-HTML site (no build step, open files directly):

  • docs/index.html — landing page with quickstart
  • docs/api.html — full API reference (every public name in __all__)
  • docs/guide.html — 11-section user guide
  • docs/concepts.html — mathematical / physics primer
  • docs/style.css — shared with eml-math for visual parity

API surface

Major exports from eml_spectral:

# Algebras
EMLPair, EMLMultivector, Octonion, basis_octonion,
FreudenthalTripleSystem, E7_56, E8_248, E8xE8

# Spacetime  (functional namespace + class wrappers)
spacetime,                         # spacetime.minkowski_delta(p), boost(p, phi), …
MinkowskiFourVector, FourMomentum

# Spectral dynamics
spectral_flow, racetrack_fixed_point, topology_invariant, G2_SEEDS,
EMLState, simulate_pulses, simulate_flips, quantized_trajectory,
verify_conservation, frame_shift_count, find_resonance_bands

# Metrics  (factories: flat / schwarzschild / flrw / ads5_x_s5 / calabi_yau_3 /
#           klebanov_strassler / heterotic_e8x8 / g2_holonomy)
MetricTensor

# Lattices
EMLNDVector, e8_lattice_points, leech_lattice_points,
planck_delta, lattice_distance, is_lattice_neighbor

# Optional Rust flag
_HAS_RUST                          # True when eml_spectral_core is importable

Why a separate package?

eml-math is the universal-math toolkit (operator, expression trees, symbolic regression, flow rendering). It stays small and physics-agnostic.

eml-spectral houses every EML-tree construction that's domain-specific to physics or exceptional algebra. Splitting them lets casual users of eml-math install the core without pulling in the algebra/physics weight, while researchers add pip install eml-spectral for the full toolkit.


Project layout

eml-spectral/
├─ src/eml_spectral/          # Python sources (pure stdlib core)
│  ├─ pair.py                 # EMLPair (two-real complex)
│  ├─ geometric_algebra.py    # EMLMultivector — Clifford Cl(p, q)
│  ├─ octonion.py             # Octonion — Fano-plane product
│  ├─ exceptional/            # FreudenthalTripleSystem, E7_56, E8_248, E8xE8
│  ├─ metric.py               # MetricTensor + 8 factories
│  ├─ ndim.py                 # EMLNDVector + E₈ / Leech lattice generators
│  ├─ discrete.py             # Planck-scale lattice helpers
│  ├─ spacetime.py            # Functional Lorentz operations
│  ├─ momentum.py             # FourMomentum
│  ├─ fourvector.py           # MinkowskiFourVector
│  ├─ state.py                # EMLState
│  ├─ simulation.py           # simulate_pulses, verify_conservation, …
│  └─ spectral_flow.py        # Φ operator + topology_invariant + racetrack
├─ rust/eml_spectral_core/    # Optional PyO3+Rayon Rust extension
├─ c_api/                     # C/C++/Rust shared library
├─ docs/                      # Static-HTML documentation
├─ tests/                     # 1116 pytest tests
└─ examples/

License

MIT — © Andrew K Watts. Based on the EML Sheffer operator established by Andrzej Odrzywolek (arXiv:2603.21852v2, CC BY 4.0).

Project details


Download files

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

Source Distribution

eml_spectral-2.0.2.tar.gz (51.0 kB view details)

Uploaded Source

Built Distributions

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

eml_spectral-2.0.2-cp313-cp313-win_amd64.whl (218.9 kB view details)

Uploaded CPython 3.13Windows x86-64

eml_spectral-2.0.2-cp313-cp313-musllinux_1_2_x86_64.whl (424.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

eml_spectral-2.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (369.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

eml_spectral-2.0.2-cp313-cp313-macosx_11_0_arm64.whl (318.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

eml_spectral-2.0.2-cp312-cp312-win_amd64.whl (218.9 kB view details)

Uploaded CPython 3.12Windows x86-64

eml_spectral-2.0.2-cp312-cp312-musllinux_1_2_x86_64.whl (424.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

eml_spectral-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (369.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

eml_spectral-2.0.2-cp312-cp312-macosx_11_0_arm64.whl (318.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

eml_spectral-2.0.2-cp311-cp311-win_amd64.whl (219.6 kB view details)

Uploaded CPython 3.11Windows x86-64

eml_spectral-2.0.2-cp311-cp311-musllinux_1_2_x86_64.whl (425.1 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

eml_spectral-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (370.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

eml_spectral-2.0.2-cp311-cp311-macosx_11_0_arm64.whl (318.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file eml_spectral-2.0.2.tar.gz.

File metadata

  • Download URL: eml_spectral-2.0.2.tar.gz
  • Upload date:
  • Size: 51.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for eml_spectral-2.0.2.tar.gz
Algorithm Hash digest
SHA256 44e018d5191422fe38c99702cb22125a141c4eb9a8caa2733c0c58206cbd967d
MD5 35d13c87c6362723604a18265fc707c4
BLAKE2b-256 aa1769b0f5606f34732b13e31d03da99cae3234a51f0f8b058866856ddda9718

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2.tar.gz:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 27ce2b49f29380bb3511197c2b001563fdc4c3f66e29a9b6f3c402ac4c63fe19
MD5 d34563e165e862194d58f0bb88d76990
BLAKE2b-256 b922e6278f9be5313dec054a6734d7c1d1566847161f7aa971e6d7cee73f7221

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp313-cp313-win_amd64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f643f59ba89834edcaa94854974c41989fae790c4fad6ca921da7fefb0a07c7a
MD5 bf3d5c68fd2d4d7af22eb5943f2a9f24
BLAKE2b-256 d520e218cc81ad4554687bf2635dc7ca597c0f08229b85b537e62cc17215a437

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 29381815a2492b846d01e394efc47f41e31ad3674f4333d9591f00a498dd3d1e
MD5 fcf743e91f013122f9ee55e98603febe
BLAKE2b-256 11abc7dcd35e8c2c1de54c83dddf35a65fdbb32431297ff78bdf51499a51cecd

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11011cc3cdb1a97c8026707370a1b05328f86c001ff4fb4bf3cfb41cbde5beeb
MD5 8dfba1a4394b12d1e219dc2c373755e5
BLAKE2b-256 1d57b443446d246c221486867520b793c5cc0d79386ce775383435f2735ee7db

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 81e5f14ba765a9e60cbdd3998a971d037d516eb10067f1e3409af77f101421ae
MD5 7fb0b3854f35fc507bc5b479c2ff7ac6
BLAKE2b-256 bb735e143bda9ebb80a72627079b9c5000fb25ef2ff8915b9afe9a007ac6484e

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp312-cp312-win_amd64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 db43d8026dccdb40b44c6565f74bb319d2d1d7d3eed1967bebc29caf9a749af1
MD5 02c0e9e63186d7696c3397b415f9d309
BLAKE2b-256 6f71b4123f651494ecabc6e43eb7a89a1b6224b90b154c272d6fa690bc229e2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6234b5ca41d8e2f36348743d0862efab57876a57ebede93d52ba5c1a6a04a256
MD5 a0e0a49f5ad53a845be12953af7b0764
BLAKE2b-256 8fcf070e9e633cfbba694898c7035112c206241d59f9fd594206da838ef44135

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d85521af3c9c24fa0b402fa13f01092756b058495e2d924b02dbd2ff2b9dcd6a
MD5 9fb67b376dd0411ce44f7e5eb6b97baa
BLAKE2b-256 79de11f315d2c42dc75225ec7a9cce9f88bd7e05e461fd46f9aa250211ea262b

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 362ee70435aeaa51e7b9ebef81abde123365d366ae63ee6da98178308f90eddb
MD5 1be529c8b16c47f0910d58ab360c5dcb
BLAKE2b-256 5231027fd63f26797a055eb88b7280589a2ff890dc06ba44aaab98fd928115b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp311-cp311-win_amd64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 36a1b6289525bb474b0385824ddb8ccc991ced471c784b1b1ff3f85233f72777
MD5 cf90e8ccbe62dd367d82a747eba4e64e
BLAKE2b-256 f8261a2404b56e7e6f8f4685657a317a040cb98fd5911ab3a2670083c0595f41

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b9210b42a5f0009507ac043e6f4fbcb4d16e9a77c75ec99f93433bdde48a955
MD5 e402b1de6f68cf97fb5142a2d1b9e3fe
BLAKE2b-256 646cd05ba8e6c039a9aa210ddca7944d1c87d08b7b566d88f8dac5e09d95f5f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eml_spectral-2.0.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for eml_spectral-2.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f82d75091d898891d1cb633dc220046efcd72bcc96bde334a6da637962b50c53
MD5 d3e8474335fa87a1ec9586e8d4190493
BLAKE2b-256 b91b66f029a453b6849db10583460e7e568f628a441adcd4d4a8589e33943769

See more details on using hashes here.

Provenance

The following attestation bundles were made for eml_spectral-2.0.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: workflow.yml on andrewkwatts-maker/EML-Spectral

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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