Skip to main content

Async Multi Objective Hyperparameter PBT (fast-cython, parameterless)

Project description

ZenFronts

ZenFronts is a compact facade for asynchronous, noisy, multi-objective population management (Population-Based Training style), built around a Cython-accelerated Monte Carlo Pareto-ranking kernel.

ZenFronts targets the operational regime where:

  • objective signals arrive asynchronously (partial metric updates are common),
  • objective values are stochastic (noise, heavy tails, drift),
  • selection must be reproducible (deterministic under a fixed seed),
  • one wants a clear and auditable separation between evaluation, state, and selection.

ZenFronts does not prescribe a particular optimizer. Instead, it provides a rigorously defined, high-throughput selection engine and a small, policy-driven API to manage a population.


Visual intuition

The figure below shows a typical snapshot produced by examples/demo_noisy_zdt1_snapshots.py.

  • Left panel (objective space): point means (μ) with semi-transparent uncertainty ellipses derived from per-objective variances (σ²).
  • Right panel (rank space): the same population expressed in stable rank coordinates, which is the space in which the Pareto machinery is applied.

Color encodes an aggregate selection-quality scalar (quality_score) computed from Monte Carlo statistics.

ZenFronts snapshot (objective space vs rank space)

Note on reproducibility: for release-tag pinning on PyPI, replace main with your tag (e.g. v1.0.4) in the URL.


At a glance

What ZenFronts provides

  • Population state and lifecycle

    • add_point, add_random_point, delete_point (tombstone model)
    • stable point_ids for logging/auditing
  • Asynchronous objective/criterion storage

    • per-(point, criterion) statistics: μ, trend, σ², t_last, ready
    • updates from raw samples or external statistics
    • eligibility gate: only fully ready points are considered by selection
  • Compiled Monte Carlo Pareto selection core

    • Monte Carlo sampling from (μ, σ²) per objective
    • Pareto ranking in stable rank-space
    • per-point distribution summaries: place/front/within (mean, std, median, quantiles)
  • Deterministic selection

    • fixed seed yields stable winners/losers and statistics
  • Versioned selection-statistics schema

    • stable contract for downstream pipelines and experiment tracking

What ZenFronts does not provide

  • a parameter space DSL (you inject a sampler/mutator)
  • a training/evaluation runtime (you call update_crits when metrics arrive)
  • a black-box optimizer with hidden heuristics (policies are explicit)

Installation

pip install zen-fronts

For local development with examples and tests:

pip install -e ".[dev,examples]"

Quick start

Runnable demo (produces the snapshot above)

python examples/demo_noisy_zdt1_snapshots.py --out out/demo --epochs 80

Minimal API sketch

from zen_fronts import ZenFronts
from zen_fronts.selection import SelectionConfig

# Define two objectives (minimization in this example)
crits = {"f1": "min", "f2": "min"}

zf = ZenFronts(
    crits=crits,
    selection=SelectionConfig(
        n_samples=256,
        percentile=0.2,
        seed=42,
        collect_stats=True,
        quantiles_mode_i=2,          # 0 exact, 1 P² streaming, 2 auto-by-budget
        quantiles_budget=200_000,    # used when quantiles_mode_i=2
    ),
    sampler=lambda rng: {"x1": rng.random(), "x2": rng.random()},
    # mutator must return (child_params, meta)
    mutator=lambda parent, rng, **kw: (
        {
            "x1": parent["x1"] + rng.normal(0.0, 0.05),
            "x2": parent["x2"] + rng.normal(0.0, 0.05),
        },
        {},
    ),
)

# 1) initialize a population
zf.add_random_point(128)

# 2) repeatedly: ingest metrics -> refresh -> replace
for t in range(1, 101):
    # ingest / compute metrics for active points
    for pid in zf.active_point_ids():
        params = zf.params(pid)
        f1, f2 = evaluate(params)  # user-defined
        zf.update_crits(pid, {"f1": f1, "f2": f2}, t=float(t))

    losers = zf.refresh(now=float(t))

    for loser in losers:
        parent = zf.choose_parent(loser)
        child, _meta = zf.perform_new(parent, looser=loser, remove_looser=True)

        # IMPORTANT: evaluate the child at least once, otherwise it stays invisible
        f1, f2 = evaluate(zf.params(child))
        zf.update_crits(child, {"f1": f1, "f2": f2}, t=float(t) + 0.1)

Conceptual model

Points and tombstones

A point is an individual in the population, identified by an integer point_id.

  • delete_point(point_id) marks a point inactive (a tombstone).
  • tombstones do not participate in selection.
  • params(point_id) raises KeyError for tombstones.
  • info(point_id) remains available; its last selection snapshot is preserved.

This supports stable experiment logging: you can keep IDs forever while still maintaining a bounded active population.

Criteria and readiness

Each criterion is defined by a name and a direction ("min" or "max"). Internally, selection operates in a unified maximization convention.

ZenFronts implements an explicit ready gate:

  • a point becomes eligible for selection only when it is ready on all criteria,
  • partial updates are allowed (typical for asynchronous pipelines),
  • refresh() considers only active ∩ fully_ready points.

Selection in rank space

Selection is performed using Monte Carlo sampling from the per-criterion distributions.

For each Monte Carlo sample:

  1. sample a synthetic objective vector for each point,
  2. transform each objective into stable ranks (per objective),
  3. compute Pareto fronts and within-front ranks in this rank space,
  4. accumulate per-point statistics across samples.

This rank-space formulation reduces sensitivity to scaling and improves robustness under noise.


How to run an optimization cycle (operational semantics)

A full guide is provided in docs/how_to_run_cycle.md. The essential rules are below.

1) When is a point considered ready?

A point participates in refresh() iff it is:

  • active (not a tombstone), and
  • ready on every criterion.

Practical consequence: adding a point (or creating a child) does not automatically make it eligible for selection; you must provide at least one update for every criterion.

2) What to do with newly created children

perform_new() creates a child via your mutator and (optionally) removes a loser.

A new child is not ready until you evaluate it and call update_crits(child_id, ...) for all criteria.

A safe pattern per epoch is:

  1. ingest updates for existing active points,
  2. call losers = refresh(),
  3. for each loser: choose a parent, spawn a child, evaluate the child once, update criteria.

This prevents two common pathologies:

  • silently shrinking the effective population (many non-ready children),
  • delayed “mass activation” of children that suddenly distort selection.

3) Choosing percentile and n_samples

Let N be the number of active-and-ready points. ZenFronts selects:

  • k = ceil(percentile · N) losers (and symmetrically winners)

Heuristics:

  • percentile (selection pressure)

    • start at 0.2–0.3 for PBT-like loops,
    • for small N, keep k ≥ 2 to reduce jitter.
  • n_samples (Monte Carlo stability)

    • low noise: 64–128
    • medium noise: 128–256
    • high noise / heavy tails: 512+

Quantiles (median/q25/q75) can be computed exactly or via streaming P². A strict contract is enforced by tests:

Changing the quantile mode must not change winners/losers, mean/std, or quality_score.


Selection statistics contract (versioned)

After each refresh(), ZenFronts persists a per-point selection snapshot under info(pid)["selection"].

The structure is explicitly versioned:

  • schema_name = "zen_fronts.selection_stats"
  • schema_version = "1.0.0"

Downstream code can validate and normalize this contract:

from zen_fronts.selection.schema import validate_selection_stats

st = validate_selection_stats(zf.info(pid)["selection"])  # raises on incompatible schema

Compatibility rule:

  • newer minor/patch versions are accepted,
  • newer major versions are rejected.

This enables additive evolution of telemetry without breaking consumers.


Performance

ZenFronts is engineered so that, at typical population sizes (≈128–256, ≈3 objectives), the dominant cost is the compiled Monte Carlo kernel.

Empirical measurements (AMD Ryzen 5950X, Linux, Python 3.12.12, NumPy 2.4.1)

End-to-end refresh() (median; M=3, percentile=0.2, criteria supplied as external stats; collect_stats=True):

N (active+ready) n_samples median refresh() practical interpretation
128 64 ~10 ms interactive
128 128 ~18 ms interactive
128 256 ~35 ms interactive
128 512 ~68 ms moderate
128 1024 ~134 ms heavy
256 64 ~28 ms interactive
256 128 ~52 ms interactive
256 256 ~102 ms moderate
256 512 ~202 ms heavy
256 1024 ~396 ms very heavy

Rule of thumb at M=3 on this hardware:

  • refresh_ms ≈ a + b · n_samples

    • for N=128: b ≈ 0.13 ms/sample
    • for N=256: b ≈ 0.38 ms/sample

Scaling intuition

The kernel builds and uses a domination matrix; the dominant term scales approximately as:

  • O(n_samples · N² · M)

Consequences:

  • doubling n_samples roughly doubles runtime,
  • doubling N increases runtime by roughly 3–4× in the measured regime,
  • increasing the number of objectives scales sublinearly in some regimes due to early-exit in dominance checks.

Benchmark scripts

  • Core kernel only:

    python examples/bench_mc_rank.py --out out/bench_mc_rank.csv
    
  • End-to-end loop (“as in production”):

    python examples/bench_refresh.py --out out/bench_refresh.csv \
      --Ns 128,256 --Ss 64,128,256,512,1024 --epochs 30 --reps 3
    

Development notes

Cython HTML annotation

To generate Cython HTML annotation (hot-line visualization), enable annotate=True in the cythonize(...) call or guard it behind an environment variable (recommended).

Typical local workflow:

CYTHON_ANNOTATE=1 python setup.py build_ext --inplace

The generated *.html files appear next to the compiled modules.


Repository navigation

  • src/zen_fronts/ — library implementation
  • src/zen_fronts/selection_core/ — Cython Monte Carlo ranking kernel
  • docs/how_to_run_cycle.md — operational semantics and tuning guidelines
  • examples/ — runnable demo + benchmarks
  • tests/ — unit tests and property-based tests (Hypothesis)

License

MIT (see LICENSE).

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

zen_fronts-1.0.5.tar.gz (650.8 kB view details)

Uploaded Source

Built Distributions

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

zen_fronts-1.0.5-cp312-cp312-win_amd64.whl (677.8 kB view details)

Uploaded CPython 3.12Windows x86-64

zen_fronts-1.0.5-cp312-cp312-win32.whl (644.4 kB view details)

Uploaded CPython 3.12Windows x86

zen_fronts-1.0.5-cp312-cp312-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

zen_fronts-1.0.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

zen_fronts-1.0.5-cp312-cp312-macosx_11_0_arm64.whl (718.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

zen_fronts-1.0.5-cp311-cp311-win_amd64.whl (686.1 kB view details)

Uploaded CPython 3.11Windows x86-64

zen_fronts-1.0.5-cp311-cp311-win32.whl (654.1 kB view details)

Uploaded CPython 3.11Windows x86

zen_fronts-1.0.5-cp311-cp311-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

zen_fronts-1.0.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

zen_fronts-1.0.5-cp311-cp311-macosx_11_0_arm64.whl (722.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

zen_fronts-1.0.5-cp310-cp310-win_amd64.whl (685.9 kB view details)

Uploaded CPython 3.10Windows x86-64

zen_fronts-1.0.5-cp310-cp310-win32.whl (655.4 kB view details)

Uploaded CPython 3.10Windows x86

zen_fronts-1.0.5-cp310-cp310-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

zen_fronts-1.0.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

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

zen_fronts-1.0.5-cp310-cp310-macosx_11_0_arm64.whl (725.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file zen_fronts-1.0.5.tar.gz.

File metadata

  • Download URL: zen_fronts-1.0.5.tar.gz
  • Upload date:
  • Size: 650.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zen_fronts-1.0.5.tar.gz
Algorithm Hash digest
SHA256 105ca2611edafdd2a942b9d9fc420221e7c3983622e25202ae62b02adf48a7fc
MD5 64cf0d980ac4e4ea2ce18530549b48de
BLAKE2b-256 f45f9d59b8bce7dde61e00d33547688b9108bec1b1811bc1dfe28accd5b343c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5.tar.gz:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: zen_fronts-1.0.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 677.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zen_fronts-1.0.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e22161f71adece1afab04cb7964e52832d4d448009c5a1c84a25919b1f7aeec9
MD5 9be41bfe15512ff3a8c07f65e6d9330b
BLAKE2b-256 474fef4beb78348b3a29a1237a3b769261aa41b886f31a1290e65fde4c4e6461

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp312-cp312-win32.whl.

File metadata

  • Download URL: zen_fronts-1.0.5-cp312-cp312-win32.whl
  • Upload date:
  • Size: 644.4 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zen_fronts-1.0.5-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 68a44ee01acfbd5d40b73c9ddda53575359173df69c9190ab1ebcf04f083f748
MD5 a8542d81f83326453316bae842593537
BLAKE2b-256 216b1cbb68db61df8abe278dd962629124e39e181f859f09fbd1d59ad9edbd38

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp312-cp312-win32.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 227edaa9e31582c80718fa295c8b93b9d764b110036bc42d9679d1cf9853053f
MD5 e564c0875db1932e5da73ba119ff99c5
BLAKE2b-256 8f6ab76265bf548b1c98ae57da3df2b7c7b14ff3a92b7c8888c1cae832c16043

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc3f062d3b8f24af55d45ebeaf8b2379f46870eabcb85d2e60781723bb4f0ee4
MD5 40aed384fecb2946dcdb4d537c726c26
BLAKE2b-256 e4dea8a427afb14ec8b81467d2ea75079bc505b989a80f128772fbe012ba2b82

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db96ab0dd53e99acdb03de627da9c4ad97e00bfea6fc020d2b0152b09ce27d7d
MD5 d22c679bb14f0fe368c2ebe37f7004ea
BLAKE2b-256 2750aed0622802045d5962c0efbc86c43d7c34dccccc158e23c9039885da6d8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: zen_fronts-1.0.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 686.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zen_fronts-1.0.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eb85a59fc12b30a70faae7fad4536680845aa343771a674db9b5fcd1a4c2fb94
MD5 3841d2fde152b10b93c0e1b5f89a369f
BLAKE2b-256 a24fc6e844edb40e02fcadf7a2a77f366e9f6bed774f75b4915c820e8dc572b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp311-cp311-win32.whl.

File metadata

  • Download URL: zen_fronts-1.0.5-cp311-cp311-win32.whl
  • Upload date:
  • Size: 654.1 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zen_fronts-1.0.5-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 88f9a8f5b686e9f955805257a52fa0d48c23cba2fca9516283ce9a6017571cfa
MD5 730be9c370ab7bcaf219ca28c091c1b3
BLAKE2b-256 efc391e32681ad22bd5381f303a23e148071a1b10dd1e7b97789045eba6f2029

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp311-cp311-win32.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aaa2f02104ff7415afb40a2c569dd8203b0613844e213c783fdefc156e43070f
MD5 6237d333487fb06d3c6ada0124b252d4
BLAKE2b-256 0d7a59945d2946d1fbfbe87f4510f3732600cba1a2efed2f9ebf070227d02daf

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 86c74783054ab1161d89e376e2e1ee8e057b9e8f6b980e0b6c1b26d906e51e4c
MD5 bdde851b97a9c5ed71a45ade5aab05be
BLAKE2b-256 0e2c1e8f71ac661bc39008d01a312b6f42b50bd9d340d75b83304e8ac62391e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 959204eeecf6183dbb6ea5cf02ed1c6da108b49e451f548dad7f85d9e26d210f
MD5 881571ad23f6f478cd3739385b38281c
BLAKE2b-256 9d04c81e4969ebadeffe771008b67900ec191821454d847a8ab83bc16b244bde

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: zen_fronts-1.0.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 685.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zen_fronts-1.0.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 003d20fdb432f9c164074555bb2ae579449c7f1ab0f9de75f27b7d9824366a90
MD5 b6a9b009a169f196dbfe793f78cdeb57
BLAKE2b-256 7c44e218bd2e8e0ed3424004b9d4106add83bba9774d11cf2527eae50ef240d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp310-cp310-win32.whl.

File metadata

  • Download URL: zen_fronts-1.0.5-cp310-cp310-win32.whl
  • Upload date:
  • Size: 655.4 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zen_fronts-1.0.5-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 ede2762045aeb114126b09b2396ff204581e6cbca3e251da64889c7b553d3e5c
MD5 b9c8e455a4c5ac2d223515f75f6fcd36
BLAKE2b-256 6208cdc2de2556c145220e3defc717194d2dd3de77f38ff091e26e3b04597d52

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp310-cp310-win32.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b2c73e5e8c88cad4145deef1531fa9338c8aef78a842ebf13ce36d95cc310c8e
MD5 4f6a5f29525174e6ffa1d4f972897541
BLAKE2b-256 9b7170ca9fa77ece4043c23cbb1b82b2c3c0061e9166decbc33cdafb2bee65f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b98880869dd27dd0e2364565d972e20b202b7d71d5f6af34a0da25fe9201762d
MD5 8f075140cd6cdaad7c60011b6ddd73ac
BLAKE2b-256 23897539165ef1e7f0ddde831e9b94cdbc8090c2db7eb2a5632a7a09c9fb694a

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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

File details

Details for the file zen_fronts-1.0.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zen_fronts-1.0.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 05f37b0966b9a60af64db672dca0977792cdbf77dc7228662b7a3d55f45a7fa0
MD5 523e4bd32567d61dc7d75a11a73a3841
BLAKE2b-256 496794c5b905b2f1bc8107ebb5fa172019f0700695617fd45af1d0777ff598dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_fronts-1.0.5-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on TovarnovM/zen_fronts

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