High-performance circuit simulator for power electronics
Project description
██████╗ ██╗ ██╗██╗ ███████╗██╗███╗ ███╗
██╔══██╗██║ ██║██║ ██╔════╝██║████╗ ████║
██████╔╝██║ ██║██║ ███████╗██║██╔████╔██║
██╔═══╝ ██║ ██║██║ ╚════██║██║██║╚██╔╝██║
██║ ╚██████╔╝███████╗███████║██║██║ ╚═╝ ██║
╚═╝ ╚═════╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═╝
Header-only C++23 + Python power-electronics simulator with an in-house sparse-LU kernel.
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_aware →
monte_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:
- Open an issue describing the change (or pick one from the issue tracker).
- For non-trivial work, draft an OpenSpec proposal under
openspec/changes/<name>/(see existing proposals underopenspec/changes/archive/for the format). - Implement + add tests under
core/tests/(C++) orpython/tests/(Python). - Ensure all 498 C++ tests + 6 Python tests pass and
openspec validate --strictis green. - 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 thedevchannelvX.Y.Ztag: deploys release docs and updateslatest
In repository settings, set Pages Source to GitHub Actions.
Live docs: https://lgili.github.io/Pulsim/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pulsim-1.7.0.tar.gz.
File metadata
- Download URL: pulsim-1.7.0.tar.gz
- Upload date:
- Size: 37.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a473272177192c1562cb077a54fa15217588f272f2c351325bef81e7893e0a07
|
|
| MD5 |
058dde3f9ac8d0b1af709a59b3ffcca8
|
|
| BLAKE2b-256 |
07a9c168b19e0a2e18ee32a1571daa7f49d4061acce20af27311afa87220ea94
|
Provenance
The following attestation bundles were made for pulsim-1.7.0.tar.gz:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0.tar.gz -
Subject digest:
a473272177192c1562cb077a54fa15217588f272f2c351325bef81e7893e0a07 - Sigstore transparency entry: 1711820133
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pulsim-1.7.0-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cd65ef2df843dfe94833b289b5e6811d1c1d0d7826ed9798024169bcf6ca089
|
|
| MD5 |
32e01d2471637c9e170cbe135b231d42
|
|
| BLAKE2b-256 |
b890cf13322c115f1060aa1d0dabd5a36d7ca5385af7be5857679aa5f1b2b74b
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp313-cp313-win_amd64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp313-cp313-win_amd64.whl -
Subject digest:
6cd65ef2df843dfe94833b289b5e6811d1c1d0d7826ed9798024169bcf6ca089 - Sigstore transparency entry: 1711820338
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pulsim-1.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afae6cde18f6fdf71632e0a5b455e829ac17ecf21aa4bdb1f52f2d4bb8e42afa
|
|
| MD5 |
4cfa31c52ea28094236315b1d1b343ef
|
|
| BLAKE2b-256 |
049ab92f3ee2d279cf5ec2d662c99af85d450cb65de9fc9cf62dfbf593138a11
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
afae6cde18f6fdf71632e0a5b455e829ac17ecf21aa4bdb1f52f2d4bb8e42afa - Sigstore transparency entry: 1711820154
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp313-cp313-macosx_13_0_arm64.whl.
File metadata
- Download URL: pulsim-1.7.0-cp313-cp313-macosx_13_0_arm64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.13, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8703532c6d9e6fdb3184ac42856e46e69ba03434859a93840192498b1041f06
|
|
| MD5 |
b403b1e43c0154ec8da66229488634f8
|
|
| BLAKE2b-256 |
d20003e14d63ae1a799d9191087b2c2b4dc2abbc644bd2251801991960499cce
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp313-cp313-macosx_13_0_arm64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp313-cp313-macosx_13_0_arm64.whl -
Subject digest:
b8703532c6d9e6fdb3184ac42856e46e69ba03434859a93840192498b1041f06 - Sigstore transparency entry: 1711820225
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pulsim-1.7.0-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0dd26ba9a2f6ad3c46ec3985ae0269297e0b4e608396c9fcdfada342d55e9d1a
|
|
| MD5 |
25ba8c8d29154067822ebeb9d682b7fa
|
|
| BLAKE2b-256 |
b1fd7ea0cadc6a79d596b47e44e0d24c5e1ba57f0a784e760c83cb01d4d3d31d
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp312-cp312-win_amd64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp312-cp312-win_amd64.whl -
Subject digest:
0dd26ba9a2f6ad3c46ec3985ae0269297e0b4e608396c9fcdfada342d55e9d1a - Sigstore transparency entry: 1711820198
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pulsim-1.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c3a1f46208fb9533f2f0c7391087919c75a22a8425c29d303b0cdffa7599258
|
|
| MD5 |
5aa5c15afaed60773c92f3d9691406cb
|
|
| BLAKE2b-256 |
900d6b9c1e880ec43928dbc8f985952088c05834896496c87319558b123b220e
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
9c3a1f46208fb9533f2f0c7391087919c75a22a8425c29d303b0cdffa7599258 - Sigstore transparency entry: 1711820385
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp312-cp312-macosx_13_0_arm64.whl.
File metadata
- Download URL: pulsim-1.7.0-cp312-cp312-macosx_13_0_arm64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.12, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8320e9ac4ebf2383746ec4f4206ea038e6508a2298f9ceaeacbfd3a3152e5792
|
|
| MD5 |
2eb8e9958be408b6b33336ce8b29033a
|
|
| BLAKE2b-256 |
c0719703ffba1e25fb7cbd0c072f61176841ccb08f4fab5b0438edd3491e55c3
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp312-cp312-macosx_13_0_arm64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp312-cp312-macosx_13_0_arm64.whl -
Subject digest:
8320e9ac4ebf2383746ec4f4206ea038e6508a2298f9ceaeacbfd3a3152e5792 - Sigstore transparency entry: 1711820365
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pulsim-1.7.0-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d003783bb4162f62fb695ea5c95db6c775ded55a7dac7c5f9779c1c27bd567c
|
|
| MD5 |
ce6ec1ed378c2a853ba535aa454675ed
|
|
| BLAKE2b-256 |
477ed6a8b17ed1c4bbec3e5327383aabc71f636d40788185e405034014d2bf55
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp311-cp311-win_amd64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp311-cp311-win_amd64.whl -
Subject digest:
8d003783bb4162f62fb695ea5c95db6c775ded55a7dac7c5f9779c1c27bd567c - Sigstore transparency entry: 1711820317
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pulsim-1.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0860aad33f30e8a0ce3b1790d097ec13ef90110ccc461450c59ec045e61ee3b8
|
|
| MD5 |
3da132bf10abd01476c302e81b5a6c38
|
|
| BLAKE2b-256 |
751661964d237a5584cc8b2993cab49bdcc971292a44fe12b94e5f2bab852e4e
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
0860aad33f30e8a0ce3b1790d097ec13ef90110ccc461450c59ec045e61ee3b8 - Sigstore transparency entry: 1711820170
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp311-cp311-macosx_13_0_arm64.whl.
File metadata
- Download URL: pulsim-1.7.0-cp311-cp311-macosx_13_0_arm64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c6cec73c95ae66aa6a400f630841af78ae9de90003ad2d453aa6b91a67342d2
|
|
| MD5 |
5871abb92b7d35fd64d8e50f1fc3375e
|
|
| BLAKE2b-256 |
da1eb2a3b50300144f2301429c86565a5bbed75eae4731967177407c134364e1
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp311-cp311-macosx_13_0_arm64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp311-cp311-macosx_13_0_arm64.whl -
Subject digest:
3c6cec73c95ae66aa6a400f630841af78ae9de90003ad2d453aa6b91a67342d2 - Sigstore transparency entry: 1711820241
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pulsim-1.7.0-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
121e90cc655f4fae2c054d367381da78a75317ba08eb4b5d462691553e3b26db
|
|
| MD5 |
7d4ef020df15a34f22bc8f4449490f70
|
|
| BLAKE2b-256 |
e5effb3e1f9ed5659567aa297fed41a05bcefebd0408a030eeba2db85bcb193d
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp310-cp310-win_amd64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp310-cp310-win_amd64.whl -
Subject digest:
121e90cc655f4fae2c054d367381da78a75317ba08eb4b5d462691553e3b26db - Sigstore transparency entry: 1711820210
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pulsim-1.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
868154a39127977fc0f6ed563c32bdfa677ac196b84b6323532fa35b2c32b4a4
|
|
| MD5 |
aa5d4a7e92ac79f34517a92034386ddc
|
|
| BLAKE2b-256 |
2f2f68fac73224a715b82ee8fcd9d1177f655f0c3c6e1552108440e3ba1dffc3
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
868154a39127977fc0f6ed563c32bdfa677ac196b84b6323532fa35b2c32b4a4 - Sigstore transparency entry: 1711820258
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file pulsim-1.7.0-cp310-cp310-macosx_13_0_arm64.whl.
File metadata
- Download URL: pulsim-1.7.0-cp310-cp310-macosx_13_0_arm64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.10, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23ab9d5b5e6d7eb235fa842c840f6c064cfcb551ff1e31d6cf71a1a6351f5184
|
|
| MD5 |
0eaca7df4c586f31aff153da00bba712
|
|
| BLAKE2b-256 |
0d682788d4a707b9bde29ca87bee42fe5722082555092ec2890eeda34514dff5
|
Provenance
The following attestation bundles were made for pulsim-1.7.0-cp310-cp310-macosx_13_0_arm64.whl:
Publisher:
publish.yml on lgili/Pulsim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pulsim-1.7.0-cp310-cp310-macosx_13_0_arm64.whl -
Subject digest:
23ab9d5b5e6d7eb235fa842c840f6c064cfcb551ff1e31d6cf71a1a6351f5184 - Sigstore transparency entry: 1711820285
- Sigstore integration time:
-
Permalink:
lgili/Pulsim@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/lgili
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@93e1eac992f3c5b7d33a755e29a67b90af4033bd -
Trigger Event:
push
-
Statement type: