Skip to main content

High-performance circuit simulator for power electronics

Project description

██████╗ ██╗   ██╗██╗     ███████╗██╗███╗   ███╗
██╔══██╗██║   ██║██║     ██╔════╝██║████╗ ████║
██████╔╝██║   ██║██║     ███████╗██║██╔████╔██║
██╔═══╝ ██║   ██║██║     ╚════██║██║██║╚██╔╝██║
██║     ╚██████╔╝███████╗███████║██║██║ ╚═╝ ██║
╚═╝      ╚═════╝ ╚══════╝╚══════╝╚═╝╚═╝     ╚═╝

Header-only C++23 + Python power-electronics simulator with an in-house sparse-LU kernel.

CI Docs PyPI Python C++23 License: MIT Citation v1.4.0 release

Docs · Tutorials · API reference · How Pulsim works · Examples · Changelog


TL;DR

Pulsim is a SPICE alternative tuned for the switched-mode power electronics workload: PWL devices, finite-state topologies, $10^8$-step transients. Where SPICE pays full assembly + LU factorization on every step, Pulsim caches one state-space per switch combination and updates only the columns of $L+U$ that actually changed.

The v1.3.0 sparse LU rewrite + the v1.4.0 generalised path-based update framework give:

Workload n_state Speedup vs baseline
Buck single-bit Gray-code 14 2.81×
Multi-bit δ=2 switch transition 14 1.58× vs Eigen LU
Parametric sweep (R/L/C) 14–26 3.0–3.7× vs rebuild
AC sweep complex LU 8–32 rough parity with Eigen

Both single-bit and (v1.4.0+) multi-bit / parametric paths run through an in-house C++23 sparse LU. No KLU, no SuiteSparse, no Eigen::SparseLU<complex> in production — only Eigen as a matrix container.


Why Pulsim

Feature What it buys you
PLECS-style PWL cache (Layer 4) switched-converter transient in milliseconds, not minutes
Header-only C++23 kernel drop pulsim/ into your CMake via pulsim::core; no static-library link
In-house sparse LU (Pulsim's own, v1.3.0+) path-based partial refactor for switch flips + parameter sweeps; zero third-party LU
Python-first ergonomics CircuitBuilder takes string node names + SI units; one SimulationResult for transients, AC, sweeps, MC
Mixed-domain control chain PID / comparator / rate-limiter / FOC / thermal at kernel speed (no Python interpreter per step)
Frequency-domain analysis small-signal MNA Bode + swept-sine FRA + closed-loop GM/PM in the same surface
Drop-in parameter sweep + MC (v1.4.0+) sweep_path_aware / monte_carlo_path_aware reuse the cached LU across all sweep points

Performance

Numbers captured 2026-05-24 on macOS / Apple Silicon (-O3 -DNDEBUG). Reproducible end-to-end via cmake --build build --target pulsim_benchmarks followed by ./build/core/pulsim_benchmarks "[rank1][microbench]" (and the analogous tags [multi_bit], [parametric], [ac_sweep]).

1) Single-bit rank-1 (v1.3.0, N-switch chain)

3-backend microbench. (A) baseline solve per-mask cache, (B) Eigen sliding solver, (C) Pulsim path-based partial refactor.

N n_state µs/solve (A) µs/eigen (B) µs/pulsim (C) C/A
4 6 6.74 6.15 2.30 2.93×
12 14 10.01 5.41 3.56 2.81×
16 18 12.15 7.08 4.31 2.82×
20 22 13.85 8.24 5.08 2.73×
24 26 16.41 9.83 6.13 2.68×

Zero fallbacks across all 1999 single-bit Gray-code flips × 8 N values.

2) Multi-bit path-union (v1.4.0, Pulsim ÷ Eigen sliding solver)

N (n_state) δ=1 δ=2 δ=3 δ=4
8 (10) 3.12× 1.62× 1.61× 1.42×
12 (14) 1.72× 1.58× 1.58× 1.42×
16 (18) 1.56× 1.28× 1.51× 1.25×
20 (22) 1.36× 1.42× 1.54× 1.51×
24 (26) 1.55× 1.46× 1.33× 1.42×

Hit rate decays gracefully: ~45 % path-union at δ=2 → ~10 % at δ=4 (rest fall back cleanly to full factorize).

3) Parametric sweep / Monte Carlo (v1.4.0, Pulsim ÷ legacy rebuild)

n_state 50 pts 100 pts 500 pts 1000 pts
8 5.18× 3.29× 3.55× 3.68×
14 3.57× 3.02× 3.51× 3.35×
26 3.53× 3.31× 3.38× 3.40×

Zero fallbacks across all 12 cells.

4) AC sweep complex LU (v1.4.0, Pulsim ÷ Eigen)

n µs/freq Eigen µs/freq Pulsim Pulsim ÷ Eigen Parity Δ
8 8.98 5.48 0.61× (Pulsim faster) 1×10⁻²²
16 8.16 7.64 0.94× 5×10⁻²²
32 13.98 14.56 1.04× 3×10⁻²¹
64 28.49 33.36 1.17× 1×10⁻²¹
128 46.13 91.52 1.98× (Eigen faster) 4×10⁻²¹

Both solvers numerically interchangeable. v1.4.0 contribution is no third-party LU on the production path; Backend::Eigen is kept explicitly available as a paper-comparison baseline.


Quick start

Prerequisites

Two native dependencies — everything else is header-only or vendored at configure time:

Dependency Why
Eigen 3.4+ Header-only sparse linear algebra (matrix + vector containers). Pulsim ships its own sparse LU on top.
C++23 compiler AppleClang 15+ / Clang 17+ / GCC 13+
# macOS (Homebrew)
brew install cmake ninja eigen

# Debian / Ubuntu
sudo apt-get install -y cmake ninja-build libeigen3-dev

# Fedora
sudo dnf install cmake ninja-build eigen3-devel

Install from PyPI

pip install pulsim

Or build from source

git clone https://github.com/lgili/Pulsim.git
cd Pulsim
pip install -e .

First simulation — 8 lines

import pulsim as p

b = p.CircuitBuilder()
b.add_voltage_source("Vin", "n0", "gnd", 5.0)
b.add_resistor      ("R1", "n0", "vc",   1000.0)
b.add_capacitor     ("C1", "vc", "gnd",  1e-6)

res = p.simulate(b, t_end=5e-3, dt=1e-5)
p.plot.scope(b, res, signals=["vc"])      # one-line waveform

Parametric sweep — exploit the v1.4.0 path-based refactor

import numpy as np
import pulsim as p

def make_rc(R=5.0, C=10e-6):
    b = p.CircuitBuilder()
    b.add_voltage_source("v1", "vin", "gnd", 10.0)
    b.add_resistor      ("R_load", "vin", "vout", R)
    b.add_capacitor     ("C_out", "vout", "gnd", C)
    return b

def steady_state_vout(res, _params):
    states = np.asarray(res.states)
    return {"vout": float(states[-1, 1])}

# Sweep R_load through 100 values. v1.4.0 path-based refactor:
# build the cache ONCE, then reuse the L+U factors at each point.
out = p.sweep_path_aware(
    make_rc(),                               # initial builder
    params={"R_load": np.linspace(1, 20, 100).tolist()},
    kpi_fn=steady_state_vout,
    t_end=5e-3, dt=1e-6,
)
print(out.to_dataframe().head())

For Monte Carlo, swap sweep_path_awaremonte_carlo_path_aware(builder, distributions={"R_load": lambda r: r.uniform(1, 20)}, n_samples=1000, ...) and get the same ~3.4× speedup over the legacy rebuild-per-sample pattern.


What's new in v1.4.0

Two algorithmic contributions ship in one release — see CHANGELOG.md for the full breakdown.

In-house complex sparse LU

PulsimSparseLuSolver is now templated on Scalar. The new PulsimComplexSparseLuSolver = PulsimSparseLuSolverT<std::complex<Real>> drives the AC-sweep production path — Eigen::SparseLU<complex> is no longer compiled in. Backward-compat aliases keep the v1.3.0 real-scalar API source-identical:

using PulsimSparseLuSolver        = PulsimSparseLuSolverT<Real>;
using PulsimComplexSparseLuSolver = PulsimSparseLuSolverT<std::complex<Real>>;
using Matrix                      = MatrixT<Real>;
using Vector                      = VectorT<Real>;

Multi-bit + parametric path-based update

The v1.3.0 single-bit path-based partial refactor now generalises to three SMPS-relevant use cases:

Case Mechanism Speedup
Single-bit switch flip (v1.3.0) etree path of one column 2.7–2.9×
Multi-bit switch flip (v1.4.0+) union of etree paths 1.3–1.7×
Parametric value sweep (v1.4.0+) path of param-affected cols 3.0–3.7×

The MAX_PATH_LENGTH_RATIO = 0.6 gate skips the path-based attempt when the union path covers > 60 % of $n$ (the path-walk would cost the same as a fresh factorise).

Python helpers

Drop-in replacements for the legacy sweep / MC APIs:

import pulsim as p
p.sweep_path_aware(builder, params={...}, kpi_fn=..., t_end=..., dt=...)
p.monte_carlo_path_aware(builder, distributions={...}, n_samples=..., ...)

Auto-fallback to the legacy code path when a parameter name isn't recognised (warns + delegates) — drop-in safe.


What's NOT in Pulsim (intentionally)

Many simulators inherit a sprawling dependency tree from their sparse-LU backend. Pulsim deliberately doesn't:

❌ Not used Why
SuiteSparse / KLU The v1.3.0 in-house LU replaces KLU completely. No SuiteSparse linkage, no licensing complexity.
Eigen::SparseLU Replaced in v1.4.0 by the in-house complex specialisation. Backend::Eigen is retained explicitly as a paper-comparison baseline.
dpsim / dwf / PSCAD vendored code Pulsim's algorithms are entirely first-party; the methods paper claims ours, not someone else's.
Runtime Python in kernel The C++ kernel has zero Python dependency. pybind11 only crosses the boundary at the API surface.
Heavy installer / multi-step build pip install pulsim or cmake --build; no make-then-make-install dance.

What IS used: Eigen 3.4+ (header-only, as a sparse matrix container) and pybind11 (for the Python binding). That's it.


Architecture

10 layers, bottom-up:

Layer 0:  Sparse LU + matrix containers      (in-house, real + complex)
Layer 1:  Topology graph + switch state mask
Layer 2:  Device models (R, L, C, MOSFET, IGBT, source, ...)
Layer 3:  Symbolic stamping helpers (Newton refresh)
Layer 4:  PWL state-space cache  ← refactor_parametric + solve_rank1
Layer 5:  Solver loop + event detection + run_transient
Layer 6:  CircuitBuilder (ergonomic API surface)
Layer 7:  YAML loader + reference circuits
Layer 8:  AC analysis (small-signal MNA Bode + FRA)
Layer 9:  Python facade (CircuitBuilder, simulate, sweep, plot)

See docs/how-pulsim-works/ for the chapter-by-chapter walkthrough (18 figures, 11 chapters, MNA basics through path-based partial refactor with full provenance).


Validation

# C++ kernel tests (Catch2 binaries per layer)
ctest --test-dir build --output-on-failure
# 498 / 498 tests pass on a fresh checkout

# Python runtime tests
PYTHONPATH=build/python pytest python/tests -v
# 6 / 6 path-aware sweep tests pass

# Benchmark suite (opt-in, not in default ctest)
./build/core/pulsim_benchmarks "[rank1][microbench]"
./build/core/pulsim_benchmarks "[multi_bit][microbench]"
./build/core/pulsim_benchmarks "[parametric][microbench]"
./build/core/pulsim_benchmarks "[ac_sweep][microbench]"

Reference CSV traces for the 10 converter showcases live under benchmarks/baselines/. A 1.0-native regression runner that consumes them is on the roadmap.


Roadmap

Version Highlight Status
v1.3.0 In-house real sparse LU (KLU removed) ✅ shipped
v1.4.0 Complex sparse LU + multi-bit + parametric refactor + Python helpers ✅ shipped (this release)
v1.5.0 Reachability-based sparse triangular solve (close the n ≥ 64 Eigen gap on AC sweep) planned
v1.6.0 AC-sweep symbolic-reuse: amortise analyze across all frequencies planned
v1.7.0 BTF block-triangular ordering — composes with path-union for an extra ~2× on wide multi-bit transitions planned
v2.0.0 TBD — first breaking Python API change since v1.0.0 TBD

Citation

If you use Pulsim in academic work, please cite:

@software{pulsim,
  author  = {Gili, Luiz Carlos},
  title   = {Pulsim: A piecewise-linear state-space simulator for switched-mode power electronics},
  version = {1.4.0},
  url     = {https://github.com/lgili/Pulsim},
  year    = {2026},
}

Machine-readable CITATION.cff is in the repo root.


Contributing

PRs welcome. Workflow:

  1. Open an issue describing the change (or pick one from the issue tracker).
  2. For non-trivial work, draft an OpenSpec proposal under openspec/changes/<name>/ (see existing proposals under openspec/changes/archive/ for the format).
  3. Implement + add tests under core/tests/ (C++) or python/tests/ (Python).
  4. Ensure all 498 C++ tests + 6 Python tests pass and openspec validate --strict is green.
  5. Open the PR; CI runs on every push.

See CONTRIBUTING.md for the full guide.


License

MIT © 2026 Luiz Carlos Gili. Free for academic + commercial use; please cite when used in academic work.


Documentation deployment

Docs are published by .github/workflows/docs.yml using MkDocs Material + mike:

  • PR: strict docs build (no deploy)
  • main: deploys to the dev channel
  • vX.Y.Z tag: deploys release docs and updates latest

In repository settings, set Pages Source to GitHub Actions.

Live docs: https://lgili.github.io/Pulsim/

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

pulsim-1.6.4.tar.gz (36.9 MB view details)

Uploaded Source

Built Distributions

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

pulsim-1.6.4-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

pulsim-1.6.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

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

pulsim-1.6.4-cp313-cp313-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pulsim-1.6.4-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

pulsim-1.6.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

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

pulsim-1.6.4-cp312-cp312-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

pulsim-1.6.4-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

pulsim-1.6.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

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

pulsim-1.6.4-cp311-cp311-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

pulsim-1.6.4-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

pulsim-1.6.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

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

pulsim-1.6.4-cp310-cp310-macosx_13_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

Details for the file pulsim-1.6.4.tar.gz.

File metadata

  • Download URL: pulsim-1.6.4.tar.gz
  • Upload date:
  • Size: 36.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pulsim-1.6.4.tar.gz
Algorithm Hash digest
SHA256 f4087c46626e8d2e0c51b99dc6df13607fcdd4b1859869b5ba49f9d678df75c2
MD5 7f4ae8a568a66f7735c9259a1b40f6ff
BLAKE2b-256 a02a9f60ccfe692f308538d6a5b7aedbac7596515f080b2df7986b26aec9ad91

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4.tar.gz:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pulsim-1.6.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pulsim-1.6.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6b0a61ac7afe119956a1906117afc48ac222d554c63ce9ad41a0a315782e9894
MD5 0f18cc3983b37366d057e1634e086a70
BLAKE2b-256 2445f9006d1d320672fe5153eaa5240a285a50251f2b2527b90a87fb3a42eb54

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pulsim-1.6.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a4fc7bd4f4a76b98d700cf0c169956c5722fef58dfb8153cbcb3f523fbb5be2a
MD5 4547dcfcf69fc28c3b4f7bb6b03d519a
BLAKE2b-256 b3c00041011420b3590d16e81f6dfcbd5b4270059e207dbe29dcb764da9d49a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pulsim-1.6.4-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 e7c89f6a5d2c28f2e9665c5048de91d9e52cfd3b51614f7fe69064ce8847b2dd
MD5 9bee3185cb5199f94059fc12c69aec2a
BLAKE2b-256 eafa708b35312e1a652972d0320a081ada8640811fdec1a3d720c062a9d59420

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp313-cp313-macosx_13_0_arm64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pulsim-1.6.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pulsim-1.6.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 276d9c3d1f636a1b6b28b95098ec4868082644b6fcd3d220b0810d5dd5aff7b6
MD5 8ac0cd94f792c90856e0a4cd2e1f8f30
BLAKE2b-256 6d2270c28cd38f6b53cc6ec8987b8c31dcfb2f51a006e3da68bcf7886eeb9633

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pulsim-1.6.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b758d4c284b9293fb6a0365fe60523d76ec301f860aeb854e43abff1656a5dd4
MD5 59034ef4ecab355f833cbe785ba9d829
BLAKE2b-256 5f05c0f43c86a1e8be7bb363fc21b950fa2abab7f586b8852aaf26afee93a1e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pulsim-1.6.4-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 82eb0419f876af3752b43101b88be949f6ae78976a0aa68e0d5a1d6a35d7e18c
MD5 987ee7c1bebcdf628c3824cdc3f4f7c0
BLAKE2b-256 e6b03c4f45723d4229c8accc90ad9b5d9181c24e48bbaef04f8bb61eea251df7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp312-cp312-macosx_13_0_arm64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pulsim-1.6.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pulsim-1.6.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7bf618f504414ff4a4b00dbf838b34089e7a765bf0c563c852b1d977fd9e1a85
MD5 5f49d62784c5fb2284443f057cab7518
BLAKE2b-256 52ca780c1a7740889269c9c727cb4b6092ea7d0d271d0a6d98afe8843f4a56ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pulsim-1.6.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ad579ac6c43765ac8c7d52702c04d207e692dd270ce86bdc6d18737efa56896
MD5 f07ee682006559f8e9cb322922f7624b
BLAKE2b-256 b8c0af7bebc71da395bea1164a40024e112100a498e286a35753cf5278c17f75

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pulsim-1.6.4-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 2b3618e5edded6f67dc77ea4a556c9f49d39d2517028401a7cb9345d0eacc285
MD5 a4d7cd3056a4aeef8ff84b88bc31aeda
BLAKE2b-256 81b502fcde577e53b3f6c231aa8c8fa7e34db4190bd736d2f312cdab935dd5b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp311-cp311-macosx_13_0_arm64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pulsim-1.6.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pulsim-1.6.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f13ab5a8ca900117cd545a38a09d2f5333a89f8b9beabb58bb07d89cc2ccf557
MD5 adb7fb0cf63f3fe2fbc03b7c56c79b7e
BLAKE2b-256 44b7e77491a6534f5d02be7ee5c5dee09d54258d47cb3eb34aff4193ca9d72aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pulsim-1.6.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48a2b55571d806de82394d0c1184acf030a2eb796da0f249eb364f85de9cbc59
MD5 ae4ba29797c7e537246d80443f7e2960
BLAKE2b-256 99df61a2ac1363e8466b52a771f35f1813005e01d0d2c2cc444abfb3d5d3a8ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on lgili/Pulsim

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

File details

Details for the file pulsim-1.6.4-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pulsim-1.6.4-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d4853f758e6b35f183e9717ca37d651fc5d7b84ce9eaad23bdfa35420154c9c7
MD5 d37254680adec3bebc16fffcafb07990
BLAKE2b-256 577fe099d04dcf8de31271183b558a95e0a1701ada0966c974ae5c058cdb898d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsim-1.6.4-cp310-cp310-macosx_13_0_arm64.whl:

Publisher: publish.yml on lgili/Pulsim

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