Skip to main content

Pulsar

Rust-backed Python library for topological data analysis. Implements the Thema pipeline: imputation → scaling → projection → Ball Mapper → Cosmic Graph.

Performance-critical algorithms are written in Rust (PyO3/maturin) and exposed as pulsar._pulsar. Python orchestrates the pipeline.

MCP!

Let the Agent Do the Math

Until now, topological data analysis required a Ph.D. in algebraic topology and a masochistic tolerance for parameter tuning.

By default, Pulsar exposes a rich Python API. This is great when you actually want to build custom pipelines, but when you just want to find out why your dataset is acting weird, writing boilerplate is tedious and unintuitive.

We get lots of complaints about it actually, with people asking things like:

Why is my cosmic graph a hairball? What the hell should my epsilon range be? Why did my PCA just drop 90% of the variance?

We hear you, but we're not convinced that writing a 50-line hyperparameter grid search is what you really want. You don't want to have to manually calculate k-NN distances every time you load a CSV. And I doubt you really want to stare at a raw NetworkX adjacency matrix either — you want answers. You want to point an LLM at your data and say, "Find the natural clusters and tell me why they exist."

The Pulsar MCP (Model Context Protocol) Server is our attempt to give you what you actually want, without any of the downsides of doing something stupid like guessing topological parameters.

Setup

You do not need to clone this repository. Install uv, then register Pulsar with your agent tools:

uvx --from thema-pulsar pulsar install

pulsar install detects Claude Code, Claude Desktop, Codex CLI, Gemini CLI, GitHub Copilot CLI, Cursor, VS Code, and Google Antigravity, then writes the MCP server entry each client expects (absolute-path uvx by default). Re-run anytime to repair drifted configs. Check status with uvx --from thema-pulsar pulsar status; remove registrations with uvx --from thema-pulsar pulsar uninstall.

The installer prompts on your terminal directly, so it still appears when output is piped (pulsar install | tee install.log). Where there is no console at all — CI, a systemd unit — pass explicit harness ids (claude, claude-desktop, codex, gemini, copilot, cursor, vscode, antigravity) or --all:

uvx --from thema-pulsar pulsar install --all
uvx --from thema-pulsar pulsar uninstall --all --yes

Prefer a persistent server binary? Use pipx install "thema-pulsar[mcp]" and pulsar install --mode pipx.

Manual client configuration

For clients configured with JSON (Claude Desktop, Cursor, Windsurf):

{
  "mcpServers": {
    "pulsar": {
      "command": "uvx",
      "args": ["--from", "thema-pulsar[mcp]", "pulsar-mcp"],
      "env": {}
    }
  }
}

For CLI clients:

claude mcp add pulsar -- uvx --from "thema-pulsar[mcp]" pulsar-mcp
gemini mcp add --scope user --timeout 60000 pulsar uvx -- --from "thema-pulsar[mcp]" pulsar-mcp

GUI-launched apps on macOS often do not inherit your shell PATH. If a client cannot find uvx, run which uvx and use that absolute path as "command", or use pulsar install which resolves it for you.

Two things that trip people up: the first launch can take up to a minute while uvx downloads Pulsar (hence Gemini's --timeout 60000), and Gemini will not start stdio MCP servers in an untrusted workspace—choose Trust folder when prompted. The MCP setup guide covers both, per client.

General Overview

What follows from here is the exact workflow we designed to dogfood the pipeline. It covers every sensible step of a topological analysis, from geometry probing to statistical dossiers.

It's important you let the agent follow this exact sequence for a few reasons:

  1. We want the graph to actually have signal out of the box.
  2. Really just the first reason, that's the whole point of these tools.

Here is the exact loop the agent should run:

  1. Ingest the dataset to get a stable dataset_id handle.
  2. Create a calibrated config via create_config(dataset_id) — calibrates epsilon and projection dimensions against the processed feature space.
  3. Sweep the topology using that config.
  4. Diagnose the graph to see if it's a giant useless blob or actually balanced. Use the metrics to decide what to adjust, then iterate via refine_config.
  5. Generate the dossier to explain the clusters in plain English.
  6. Compare clusters for academic-grade p-values.
  7. Export the labeled data.

Tool Fly-By

We didn't just wrap our Python functions in JSON schemas. We built Thick Tools—stateful, workflow-aware engines that pass configuration directly between each other so you don't have to watch the agent screw up file I/O.

  • ingest_dataset(path): Registers a host-visible CSV/Parquet path and returns the stable dataset_id every other tool keys off of.
  • create_config(dataset_id): The primary config generation tool. Analyzes k-NN distances and projection dimensions in the processed feature space (after preprocessing + scaling) to produce a calibrated YAML config. Never let the agent guess parameters.
  • run_topological_sweep: Runs the heavy Rust pipeline. Takes inline YAML and returns structured JSON with metrics and experiment diff. Config persistence is opt-in via save_config=True.
  • diagnose_cosmic_graph: Returns current graph-state observables: scale, component morphology, weight distribution, sweep support, observed patterns, and risk factors. The agent interprets those measurements against the user's objective.
  • refine_config: Applies targeted overrides (or deletions) to a config by dotted path instead of regenerating the whole YAML, for iterating after a diagnosis.
  • generate_cluster_dossier: Returns structured JSON with per-cluster profiles (Z-scores, homogeneity, concentration) plus a Markdown summary. Includes clustering method metadata (method used, silhouette score).
  • compare_clusters: Runs Welch's T-tests, KS-tests, and Cohen's d between two specific clusters. Because sometimes your boss wants a p-value.
  • export_labeled_data: Maps semantic names to a cluster_assignment_id from generate_cluster_dossier and dumps that exact clustering to a CSV.

That's the core loop — there's a much larger surface for longitudinal/temporal panels, graph artifacts, threshold tuning, and HTML/Parquet exports. See the MCP guide for the full tool table, or call get_workflow_guide from the agent itself for the opinionated end-to-end procedure.

Pitfalls & Annoyances

We try to make things foolproof, but some of you goofballs are going to try to break it anyway. Here is what to avoid:

  • Don't let the agent write YAML files manually. The tools pass YAML strings directly in memory (suggested_params_yaml -> config_yaml). If you watch the agent try to use write_file to save a params.yaml before running the sweep, stop it. If you make the agent do unnecessary file I/O you belong in prison.
  • Don't skip the diagnosis step. If the graph is a giant hairball, your clusters will be garbage. Use diagnose_cosmic_graph to inspect graph-state measurements, then decide whether the user's objective calls for threshold inspection, config refinement, or a different interpretation surface.
  • Handle non-numeric data appropriately. Pulsar is a geometric engine. It needs floats. characterize_dataset will automatically tell the agent which low-cardinality strings to one-hot encode and which high-cardinality strings to drop. Don't fight it.

[!NOTE]
For more guides, workflows, and an end-to-end MCP example, see demos/penguins/README.md.

Citation

If you use this package in your research, please cite:

@article{Gathrid2025,
  author  = {Gathrid, Sidney and Wayland, Jeremy and Wayland, Stuart and Deshmukh, Ranjit and Wu, Grace C.},
  title   = {Strategies to accelerate US coal power phase-out using contextual retirement vulnerabilities},
  journal = {Nature Energy},
  year    = {2025},
  volume  = {10},
  number  = {10},
  pages   = {1274--1288},
  month   = {October},
  doi     = {10.1038/s41560-025-01871-0},
  url     = {https://doi.org/10.1038/s41560-025-01871-0},
  issn    = {2058-7546}
}

Which introduced the original Thema algorithm.

Installation

Agent / MCP (recommended)

Install uv, then:

uvx --from thema-pulsar pulsar install

That registers Pulsar with the agent tools on your machine. No clone, venv, or Rust toolchain required. See the MCP Setup section above for status/uninstall, pipx mode, and manual client config.

Library (from source)

Requires Rust and Python 3.10+.

uv sync
uv run maturin develop --release

Quick start

from pulsar import ThemaRS

model = ThemaRS("params.yaml").fit()

graph = model.cosmic_graph        # sparse networkx.Graph with 'weight' edge attributes
adj   = model.weighted_adjacency  # dense weighted adjacency, materialized lazily on access
edges = model.weighted_edges()    # thresholded sparse edge list
reps  = model.select_representatives()  # uses the configured default

# Opt-in spectral sparsification hook: a leverage-aware, epsilon-controlled graph
# that preserves spectrum/distances (not topology). Useful for spectral analysis;
# it is NOT a construction-time speedup. update=True refreshes model.cosmic_graph.
model.spectral_sparsify(epsilon=0.8, seed=7, update=True)

Copy params.yaml.sample to params.yaml and edit it for your dataset.

Progress reporting

  • Stage weight constants for progress_callback live in pulsar.runtime.utils._STAGE_WEIGHTS; pulsar.runtime.utils._build_cumulative_fractions turns them into cumulative fractions (used by ThemaRS.fit).
  • _rayon_thread_override in pulsar.runtime.utils caps RAYON_NUM_THREADS for Rust-heavy stages when notebooks need stricter thread control.
  • For notebooks: use pulsar.runtime.progress.fit_with_progress(model, data) or fit_multi_with_progress(model, datasets) — renders a transient rich progress bar.

Demos

Demo scripts organized by domain under demos/:

Energy domain:

uv run python demos/energy/coal.py  # US Coal Plants (downloads dataset automatically)

EHR domain:

uv run python demos/ehr/physionet.py --synthetic             # Synthetic data mode
uv run python demos/ehr/physionet.py --data path/to/eicu.csv # Real eICU CSV data
uv run python demos/ehr/ecg_arrhythmia.py                    # ECG arrhythmia classification

LLM/MMLU domain:

jupyter notebook demos/mmlu/mmlu_topology_demo.ipynb

Configuration

Cosmic graph thresholding is automatic by default, and representative selection has a sensible default. Most users only need to configure data, preprocessing, and sweeps.

run:
  name: my_experiment
  data: path/to/data.csv # CSV or parquet

preprocessing:
  drop_columns: [id, timestamp]
  impute:
    age:
      method: sample_normal # fill_mean | fill_median | fill_mode |
      seed: 42 # sample_normal | sample_categorical
    category:
      method: sample_categorical
      seed: 7

sweep:
  projection:
    method: jl # default; set to pca for legacy randomized PCA
    dimensions:
      values: [2, 3, 5]
    seed:
      values: [42, 7, 13]
    center: true
  ball_mapper:
    epsilon:
      range: { min: 0.1, max: 1.5, steps: 8 } # or: values: [0.3, 0.5, 0.8]
cosmic_graph:
  construction: minhash
  minhash_d: 256
  minhash_seed: 42
  construction_threshold: auto
  sparsify: false # opt-in spectral sparsification hook (off by default)
  sparsify_epsilon: 1.0
  sparsify_seed: 42

Development

uv run maturin develop        # debug build
uv run maturin develop --release  # optimised build
uv run pytest tests/ -v
uv run pytest tests/test_benchmark_accelerations.py -s -v

Release files for thema-pulsar 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thema-pulsar 0.3.1
File Size Uploaded
thema_pulsar-0.3.1.tar.gz 3.6 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for thema-pulsar 0.3.1
File
thema_pulsar-0.3.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
thema_pulsar-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
thema_pulsar-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
thema_pulsar-0.3.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
thema_pulsar-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
thema_pulsar-0.3.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
thema_pulsar-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
thema_pulsar-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
thema_pulsar-0.3.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
thema_pulsar-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
thema_pulsar-0.3.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
thema_pulsar-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
thema_pulsar-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
thema_pulsar-0.3.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
thema_pulsar-0.3.1-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
thema_pulsar-0.3.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
thema_pulsar-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
thema_pulsar-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
thema_pulsar-0.3.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
thema_pulsar-0.3.1-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details

Total release size: 20.7 MB

Release files / thema_pulsar-0.3.1.tar.gz

Download URL thema_pulsar-0.3.1.tar.gz
Size 3.6 MB
Tags Source
SHA-256 checksum
How to use checksums
1ccebabb7c2e45e4cb199d908854112a3dda9e1ddaa7e6da366b569e50546897
BLAKE2b-256 checksum
How to use checksums
2c66f59e9e60c7b45302c41f008ed0ea454b1cc6ee44d2bd84ebfe9b3b937699
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp313-cp313-win_amd64.whl

Download URL thema_pulsar-0.3.1-cp313-cp313-win_amd64.whl
Size 798.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d7c569231ed7f02439cf2a40644cff2581f14030545029e292c567169f60817c
BLAKE2b-256 checksum
How to use checksums
7180e3dc5bc65999f6c0c6a78c218e94f23ea6002e3a09b24d3fd19924008319
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL thema_pulsar-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 918.0 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c1cc615136984738d560e1017db79229f7d8f642d956977fad0ffab0e0d0d01e
BLAKE2b-256 checksum
How to use checksums
227e4bf89ab35e6496de236b324b5e594849004b25d5eb7049c735995140f80c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL thema_pulsar-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 846.2 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
600b4c9ee1e7211e87bbc7203261ac2274110b84f1c229727767ad12d9daa022
BLAKE2b-256 checksum
How to use checksums
9fc5a809e158c9b693944ab2cecac5237122db457deaf026942576f69978c289
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL thema_pulsar-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Size 814.5 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1636d1df7633673992101542b6768af2f48b1ab06c290bb71ba8b0e97f411368
BLAKE2b-256 checksum
How to use checksums
41421ed0e721638e4304cf729696ea5059e9638da852762b2ac23d6d1cc5acc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl

Download URL thema_pulsar-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl
Size 882.6 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
764b1ab9dd1b6c74c17911c634dc9d6b3a67e6f39b4a4e7acd0b1a7001e50050
BLAKE2b-256 checksum
How to use checksums
c89684f46b889135229e48ff607b34fdf735711510dc1db14518f93b2edccf77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp312-cp312-win_amd64.whl

Download URL thema_pulsar-0.3.1-cp312-cp312-win_amd64.whl
Size 798.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8ccba4abaa66a842f65f6aa58a0ce1ad06a424c399c6b627a955cd3eae96fe1c
BLAKE2b-256 checksum
How to use checksums
e81c9b11288dcba3f7b5a97da064a64393fb3b6295b0db49ae296ff668c9b9ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL thema_pulsar-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 918.3 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
efa9024f019f72bf92ba69aa29af19fce2752e69522e4e9960d048dfaa9ab4a3
BLAKE2b-256 checksum
How to use checksums
07990b0e6de2d3f589428043603f54184a0fb58f5c6efd832c07e1029078c5a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL thema_pulsar-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 846.6 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
6fedd300127d703babe157360d5dd6ecc59dbbe5b523141a99f801a4ee2da6a4
BLAKE2b-256 checksum
How to use checksums
337bd5cdea7a3ae023ffb654d91198528d44c949b3a49f4f4aed009299bdb99d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL thema_pulsar-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Size 815.1 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0ca5842130b74bad0d824e9b645b91965f6f6995081da8a8fd7921114c599920
BLAKE2b-256 checksum
How to use checksums
d8624e7e3501b08bef6dcc467b0f0f15ed29a445c95cda6afbb9700a4dbdb8c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl

Download URL thema_pulsar-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl
Size 883.0 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
486cfa713243a29dbff3626f44e525b50da042254a293d52c19fefe231e079bb
BLAKE2b-256 checksum
How to use checksums
47f145f494fd9aad848c5e343c2b00a958702309af16f331c3b04ad3ec817fb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp311-cp311-win_amd64.whl

Download URL thema_pulsar-0.3.1-cp311-cp311-win_amd64.whl
Size 798.0 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
486dd1898df604a21a9da7967e49d728405bf9bc182d124c880f0bac075ff519
BLAKE2b-256 checksum
How to use checksums
84aebd49ef7a63b205e0a037ba5079e6e35f1d9caae4ef4e0cf178d8d153468a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL thema_pulsar-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 917.6 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4b541318fb28ba54c1cf6690c52946d20c41948206c058c6844d8db2069ed6bd
BLAKE2b-256 checksum
How to use checksums
6869c9b4fc2a6b50a6e7c96545f9ba22dbd24d1a24365b508f124352540fea81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL thema_pulsar-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 846.6 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
5238cf29e376e5f6221008e0843e6199ed2ff18c664b55cca5c499243445cbbf
BLAKE2b-256 checksum
How to use checksums
deeb7984e53292699ad89cc601b2ff4caf3288c513b3ac4b2fd7eb0d0eaefc0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL thema_pulsar-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
Size 814.7 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
df4abfb624002e857beba33a6751efc655502013e60d37777166937a93031b6a
BLAKE2b-256 checksum
How to use checksums
9095b97ea2b0616990f4450c9883644b9775693a7facd93bc1a69b3af98894df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp311-cp311-macosx_10_12_x86_64.whl

Download URL thema_pulsar-0.3.1-cp311-cp311-macosx_10_12_x86_64.whl
Size 882.5 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6a35ee69ffe96dcd1ca8ee8ebbaf901da5f2fa03a4c71a9f447b30470144b094
BLAKE2b-256 checksum
How to use checksums
4ab695671c7f4daee95829ca98d65d12ce1d819f31ac93937741c616878d2d9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp310-cp310-win_amd64.whl

Download URL thema_pulsar-0.3.1-cp310-cp310-win_amd64.whl
Size 798.1 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
8da467a200771e406c45c2b06b06b9ca4d32f00b0bdec32d7daecf9dfcf1d170
BLAKE2b-256 checksum
How to use checksums
c4cfb4e1fa2e7ead26b6a46c0218145b22ef6227159dfadedc98ea616c42c98d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL thema_pulsar-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 917.7 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7c09805ba68af3072a03ba012825751ec1108e3e40a5e94301b022c9ad5da2fa
BLAKE2b-256 checksum
How to use checksums
a68e6a6b5b488909c84c58d4fdf8e1c4699fb7f840d6a2bf78c2738eab2f3b6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL thema_pulsar-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 846.8 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
2911b6aa2f4df1acd178bd360a9200b364a40bc5521228f47b8485ad73c791b3
BLAKE2b-256 checksum
How to use checksums
9ac65a697382bd40d8368693704a1eede04003ce0e427e51a487513420b82ba4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL thema_pulsar-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
Size 814.9 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d0cd91c831cf94a75142aa03871640d10e0cd47f69c256a051c9a1fe4fcacc8b
BLAKE2b-256 checksum
How to use checksums
0612ad29123b1c3ed260557e40afc668d38f324c01f48b3b234b38a223b48356
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / thema_pulsar-0.3.1-cp310-cp310-macosx_10_12_x86_64.whl

Download URL thema_pulsar-0.3.1-cp310-cp310-macosx_10_12_x86_64.whl
Size 882.3 kB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
da8a1b027671c4822bc7566ddbfc672da9f8a8728f8c9090cb9dc178b6ddb0e2
BLAKE2b-256 checksum
How to use checksums
a2a131acd20f45d6210504a59ec9c0c81fb9cd17cd2c2985740ec3719a4394ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.1 This release

21 release files

0.2.5

21 release files

0.2.4

21 release files

0.2.3

2 release files

0.2.2

1 release file

0.2.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page