Skip to main content

Epochly

PyPI version Python 3.9-3.14

Epochly is a drop-in Python performance overlay. It accelerates workloads via GPU acceleration and multicore parallelism when safe and beneficial, and yields to normal execution when it cannot help. No code changes required.

Installation

From PyPI:

pip install epochly

From source:

git clone https://github.com/chandlercvaughn/epochly.git
cd epochly
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Quick Start

Default Decorator (Monitor-First)

The plain @optimize decorator runs your function on the transparent monitor-only path by default. Epochly observes the workload and adds bounded instrumentation; on a fresh default install it does not automatically JIT-compile, and epochly.stats() reflects LEVEL_0_MONITOR (no acceleration by default). This is intentional: the default path never changes results and never pays a cold-start cost you did not ask for.

import epochly

@epochly.optimize
def numeric_kernel(n):
    total = 0.0
    for i in range(n):
        total += (i * 1.5) ** 0.5
    return total

# Runs on the transparent monitor path by default (no acceleration).
for _ in range(50):
    numeric_kernel(10000)

status = epochly.stats()
print("realized level:", status.get("realized_level"))

To turn observation into measurable speedups, opt in to an explicit level (next example) or lower the JIT hot-path threshold with EPOCHLY_JIT_HOT_PATH_THRESHOLD.

Explicit JIT (Measurable Speedups, level=2)

Pass level=2 to request JIT compilation of numeric inner loops. The first call pays a one-time compilation cost; subsequent calls run compiled. On numeric-heavy loops this is where the headline JIT speedups (see docs/benchmarks.md) are realized.

import epochly

@epochly.optimize(level=2)
def numeric_kernel(n):
    total = 0.0
    for i in range(n):
        total += (i * 1.5) ** 0.5
    return total

# Warmup triggers compilation; later calls run the compiled kernel.
for _ in range(5):
    numeric_kernel(50000)

status = epochly.stats()
print("realized level:", status.get("realized_level"))
print("optimization effective:", status.get("optimization_effective"))

Context Manager

from epochly import optimize_context

with optimize_context(level=2):
    result = numeric_kernel(50000)

Run the Benchmarks

Reproduce the published benchmark results yourself (methodology and per-level reproduction paths in docs/benchmarks.md):

python -m epochly.benchmark

Pass --quick for a fast validation pass or --list to enumerate the available workloads.

Key Capabilities

The default decorator path is monitor-only: it observes and never changes results, but it does not accelerate by default. The speedup figures below are realized on the explicit, opt-in paths named in each bullet (and detailed with their reproduction recipes in docs/benchmarks.md).

  • Drop-in overlay: no code changes required; Epochly decides whether to accelerate
  • GPU acceleration (L4): up to 64x on large array workloads, on the explicit level=4 path when CUDA hardware is available (requires EPOCHLY_GPU_ENABLED=true and an NVIDIA GPU; not active by default)
  • Multicore parallelism (L3): up to 8x per core on CPU-heavy tasks via the explicit level=3 process-pool path (not active by default)
  • JIT prefilter (L1/L2): bytecode prefilter classifies eligible kernels; the explicit level=2 path JIT-compiles admitted numeric inner loops (the default path stays at L0 monitoring until you opt in)
  • Monitoring (L0): the default path; pass-through with instrumentation; bounded overhead (< 5%) on unsuitable workloads
  • Rollback safety: circuit breaker with cache invalidation; on failure, execution rolls back to the unmodified path without silent misclassification
  • Truth surface: unified status/metrics/inspect surface reflects measured execution, never heuristics

Enhancement Levels

Epochly operates through five progressive enhancement levels:

Level Name Behavior
L0 Monitoring Pass-through with instrumentation; no acceleration
L1 Prefilter Bytecode prefilter classifies eligible kernels; threading for admitted ones
L2 JIT JIT compilation of prefilter-admitted kernels
L3 Multicore Process pool dispatch with shared memory for parallel workloads
L4 GPU CUDA acceleration via CuPy when NVIDIA GPU is detected

Unsuitable workloads receive L0 pass-through with bounded overhead (5% wall-clock budget verified in tests/validation/test_acceleration_proof.py).

Level 3 requires a __main__ guard

The Level 3 multicore path dispatches work to a process pool. On macOS and Windows (and any platform where the multiprocessing start method is spawn or forkserver), each pool worker re-imports your program's main module during startup. If your script runs at module top level with no if __name__ == "__main__": guard, that re-import would replay your module-level side effects (file writes, network calls, payments) once per worker.

Epochly will not silently replay those side effects. When it detects an unguarded __main__ (or a script fed via stdin / python -c, whose module path resolves to <stdin>) under a spawn-class start method, it refuses Level 3 process-pool dispatch, emits one warning, records the UNSAFE_MAIN_MODULE fallback reason on the truth surface, and falls back to a lower level. Wrap your entry point to enable Level 3:

import epochly


@epochly.optimize(level=3)
def crunch(n):
    total = 0
    for i in range(n):
        total += (i * i) % 7
    return total


if __name__ == "__main__":  # required for Level 3 on spawn/forkserver platforms
    for _ in range(8):
        crunch(200000)

This is the standard Python multiprocessing "safe importing of the main module" requirement; Epochly enforces it rather than letting it corrupt your program.

Architecture

  • Truth surface: single unified schema for status, metrics, and inspect outputs. optimization_effective and optimization_summary reflect measured execution, not heuristics. Rollback events, fallback reason codes, admission decisions, and realized enhancement level are surfaced in machine-readable artifacts.
  • Circuit breaker: bounded HALF_OPEN probe concurrency; on failure, execution rolls back to the unmodified code path with full cache invalidation. No silent drift.
  • Inference plugin: optimizes .generate/.encode/__call__ on ML model objects when safe; falls back otherwise.
  • Prefilter correctness: all rejection paths emit explicit, machine-readable fallback reason codes. No silent false rejects on known-valid numeric workloads.
  • Memory safety: adjacent-block coalescing in HybridLargeBlockManager; real OS mprotect(PROT_NONE) guard pages; serialized FastMemoryPool bookkeeping under contention; TOCTOU guards in stale shared-memory cleanup.

Environment

  • Python 3.9 through 3.14
  • Linux, macOS, or Windows
  • NVIDIA GPU optional (required for L4)
  • Project virtual environment: .venv at project root
  • Cross-version development venvs: .venv-py38 through .venv-py313 alongside .venv

Running Tests

Always activate the virtual environment first.

source .venv/bin/activate
pytest tests/unit/<module>/ -v

Examples:

source .venv/bin/activate
pytest tests/unit/core/ -v
pytest tests/unit/jit/ -v
pytest tests/unit/memory/ -v

Never use pytest --cov. The pytest-cov plugin imports Epochly before environment variables are set, causing OpenBLAS thread creation and memory exhaustion. Use coverage.py directly instead:

source .venv/bin/activate
coverage run -m pytest tests/unit/<module>/ -v
coverage report --include="src/epochly/<module>/*" --show-missing

Project Structure

epochly/
├── src/epochly/           # Main source code
│   ├── core/             # Core runtime, enhancement levels, decorator
│   ├── jit/              # JIT compilation, artifact store, compilation queue
│   ├── memory/           # Memory management, shared memory, circuit breaker
│   ├── gpu/              # GPU detection, CUDA acceleration (L4)
│   ├── inference/        # ML model inference plugin
│   ├── monitoring/       # Metrics, telemetry, Prometheus exporter
│   ├── security/         # Signed pickle, AST sanitizer, access control
│   ├── licensing/        # License validation, trial endpoint hardening
│   ├── cli/              # Command-line interface
│   ├── config.py         # Configuration system
│   ├── bytecode_prefilter.py  # L1/L2 eligibility classification
│   └── ...
├── tests/
│   ├── unit/             # Unit tests (per-module)
│   ├── integration/     # Integration tests
│   ├── validation/      # Validation contract tests
│   └── e2e/             # End-to-end tests
├── .github/workflows/   # GitHub Actions CI/CD workflows
├── benchmarks/          # Benchmarking system
├── scripts/             # Helper scripts
├── dashboard/           # Dashboard application
└── docs/                # Documentation

CI/CD

Epochly uses GitHub Actions with self-hosted runners:

  • 16 self-hosted Linux runners on 192.168.1.17 (NVIDIA RTX 4070, Python 3.9-3.14, GPU label)
  • Self-hosted macOS runners on Mac-Studio
  • GitHub-hosted Windows runners

Key workflows:

  • release-gate.yml — tier-1/tier-2 test matrix across all platforms and Python versions
  • post-merge-assurance.yml — commit-scoped PMA on every main merge
  • full-matrix-validation.yml — nightly full matrix across all OS/Python combinations
  • security-scan.yml — Bandit + dependency audit
  • smoke-tests.yml — quick smoke validation
  • wheels.yml — build and test wheels
  • publish-pypi.yml — publish to PyPI after release gate passes

Security

For Epochly's security policy, vulnerability reporting process, threat model, and per-field telemetry data flow, see SECURITY.md and docs/security/. The latter contains threat-model.md and telemetry-data-flow.md.

Built-in security properties of the runtime:

  • Memory isolation between interpreters
  • Access control for shared memory
  • Audit logging for all operations
  • HMAC-signed pickle helper for trusted IPC boundaries (epochly.security.signed_pickle)
  • Hardened AST sanitizer for dynamically-compiled user code paths
  • Prometheus exporter defaults to loopback (127.0.0.1) with explicit warning on 0.0.0.0
  • Bounded Prometheus metric-name cardinality (user-input hashing + 1000-name ceiling)

Stabilization Evidence

P0 Stabilization (2026-04-16)

24 behavioral assertions in validation-contract.md, 30+ new regression tests:

  • Bounded HALF_OPEN probe concurrency in memory circuit breaker
  • Adjacent-block coalescing in HybridLargeBlockManager
  • Real OS mprotect(PROT_NONE) enforcement on memory-pool guard pages
  • Fixed small-slab bitmap math
  • Serialized FastMemoryPool bookkeeping under contention
  • Linux RTX 4070 verification: 1012 passed, 90 skipped, 0 failed
  • 5% wall-clock overhead budget preserved on non-beneficial workloads

Phase 2 Stabilization (M5-M13)

116 additional behavioral assertions across 9 milestones:

  • NUMA-aware memory placement and monitoring hardening (M5-M6)
  • Runtime, JIT, and ML-path correctness (M7-M8)
  • Licensing integrity (M9)
  • Boot-sequence, core, and config robustness (M10)
  • CLI, Jupyter, and deployment paths (M11)
  • GPU and native inference sweep on RTX 4070 (M12)
  • Progression integrity, hygiene, Cython wheel verification (M13)
  • Hygiene guardrails as executable tests: tests/validation/test_no_mocks_in_src.py, tests/validation/test_no_banned_env_writes.py

Transparent-Optimizer Trust Mission (M1-M9)

107 features across 9 milestones making Epochly a trustworthy transparent optimizer for the qeval evaluation corpus:

  • M1: Baseline gap map and ranked failure classification
  • M2: Truth surface unification — single schema, measured-only reporting
  • M3: Prefilter correctness — no silent false rejects, machine-readable fallback reason codes
  • M4: L3 multicore and shared memory — TOCTOU race fix, process pool caching fix
  • M5: L4 GPU admission — duplicate-init fix, numerical tolerance tightening, cross-version validation
  • M6: Rollback and circuit breaker — cache invalidation on rollback, drift detection
  • M7: optimize/wrap() bootstrap and inference plugin — 4-step bootstrap fix, ML model optimization
  • M8: Stability hardening — numerical differential tests, concurrency/memory safety, packaging/API verification
  • M9: Final qeval-gated verification — all P0 regression families HELD/PASS or CLOSED

Configuration

from epochly import configure, EnhancementLevel

# Set optimization level
configure(enhancement_level=EnhancementLevel.LEVEL_3_FULL)

# Enable profiling
configure(profile_enabled=True)

# Control worker threads
configure(max_workers=8)

Monitoring

import epochly

# Get performance metrics
metrics = epochly.get_metrics()
print(f"Enhancement level: {metrics.get('enhancement_level')}")
print(f"Functions optimized: {metrics.get('functions_optimized', 0)}")

# Check current status
status = epochly.get_status()
print(f"Enabled: {status['enabled']}")

Deployment

# Selective activation by environment
export EPOCHLY_ENABLED=1
python your_app.py

# Inspect deployment state
epochly-deploy status

# Enable or disable deployment
epochly-deploy enable
epochly-deploy disable

# Select a deployment mode
epochly-deploy set-mode monitor

# Monitor deployment for 60 seconds
epochly-deploy monitor --duration 60

# Emergency stop
epochly-deploy emergencystop

Contributing

# Development setup
git clone https://github.com/chandlercvaughn/epochly.git
cd epochly
python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
pre-commit install

# Run tests (always activate the venv first)
source .venv/bin/activate
pytest tests/unit/<module>/ -v

# Cross-version testing
.venv-py39/bin/python -m pytest tests/unit/cli/ -v
.venv-py310/bin/python -m pytest tests/unit/cli/ -v

# Coverage (use coverage.py directly, NOT pytest --cov)
source .venv/bin/activate
coverage run -m pytest tests/unit/<module>/ -v
coverage report --include="src/epochly/<module>/*" --show-missing

Cython extensions build with python setup.py build_ext --inplace.

License

Epochly is proprietary commercial software licensed under the Epochly Software License Agreement (ESLA). See LICENSE for the complete license terms.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

epochly-0.6.18-cp314-cp314-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.14Windows x86-64

epochly-0.6.18-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

epochly-0.6.18-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

epochly-0.6.18-cp314-cp314-macosx_15_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

epochly-0.6.18-cp313-cp313-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.13Windows x86-64

epochly-0.6.18-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (7.3 MB view details)

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

epochly-0.6.18-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (7.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

epochly-0.6.18-cp313-cp313-macosx_15_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

epochly-0.6.18-cp312-cp312-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.12Windows x86-64

epochly-0.6.18-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (7.3 MB view details)

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

epochly-0.6.18-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

epochly-0.6.18-cp312-cp312-macosx_15_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

epochly-0.6.18-cp311-cp311-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.11Windows x86-64

epochly-0.6.18-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (7.3 MB view details)

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

epochly-0.6.18-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (7.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

epochly-0.6.18-cp311-cp311-macosx_15_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

epochly-0.6.18-cp310-cp310-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.10Windows x86-64

epochly-0.6.18-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (7.1 MB view details)

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

epochly-0.6.18-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

epochly-0.6.18-cp310-cp310-macosx_15_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

epochly-0.6.18-cp39-cp39-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.9Windows x86-64

epochly-0.6.18-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

epochly-0.6.18-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (7.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

epochly-0.6.18-cp39-cp39-macosx_15_0_arm64.whl (6.0 MB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

Details for the file epochly-0.6.18-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.18-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for epochly-0.6.18-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 09ade8d0ff1e79dfbc6a62d72f4954ffae8722a0fea004ffccfb7243b3041fd7
MD5 49fa54fe40d925597c1852744d91891a
BLAKE2b-256 52f7c2f65fc779f2db9d9c4711f2d68553e585512ac50aa810fa4796994ed739

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp314-cp314-win_amd64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7149e5ee5c74ff43755a891f7a35957501f44a740d0e8f935953025b7a0f912d
MD5 34f65ab0969ec9eabb12a61dd5fcd992
BLAKE2b-256 1c4e3be743161496fcde474e4a062e8ab0940bda212ee015ea9471cccb9224f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 74acaf75647af3f5678a5aa5686d7c93cbf3d72cfa00e136159776eb80c00175
MD5 b65bd55a09be080d1fd7af649af5ef5e
BLAKE2b-256 2ea737aef406526229f376fc95e25c13a379dda4d6cbb8e03217ec227948c6e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f12b9a60d8b3a9e9f8b08167a0878fdd1d89af11067a1d16a231ab6aa3765ead
MD5 475e8d5509e14b7391557aeb530dc759
BLAKE2b-256 55232102b516357f54b0598cd0c2c1adf44e4d0417ea606d8eb9262200875601

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp314-cp314-macosx_15_0_arm64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.18-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.1 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 epochly-0.6.18-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 09eb63c847b30ce3f32be5c0b69c1d620f2780793efbcc57720635d2947b88a8
MD5 b94212c64d1dc720223d9b620bf03ee2
BLAKE2b-256 829361b5d68c515524789e0ff18eb583673a4bd4542545ac290323ebd8865d56

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp313-cp313-win_amd64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1d33e7ea8bf6651530b5879a2e9ddb8462d4d1206171bc6e180a064d7b734f34
MD5 8d4351e89a64f7b4e0ea3e91a8cb92cc
BLAKE2b-256 8bdcd3c2b5724e2b5b32b8e5ea1e7ef7e65faec124da76cda544af54207e559a

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cf3ffa3bad405eb1bd8591f2019c26feaba073dbc871f358ea041c71a8942724
MD5 e035d471ce289329a5a5f0d220b06f99
BLAKE2b-256 cf61b3e72808017a2b6eb8b897c39a47c30724031b4b757023385ffead09f2ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 399183449e99323d75ee17d86f4c8e5ee7bc08b3171497a33e82d955b71beb16
MD5 b1329784e38cd9db297203699a7134ab
BLAKE2b-256 fc7c877f1b8fa9911172a7ebed3c7050dc18d8c8e08c0b8d94aa89f13c6da0cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.18-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.1 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 epochly-0.6.18-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bd226535b5bf04439a8b24d1207f2e804cdc29e15e176445bf517513493827ee
MD5 486626bec5c7d28d65b19070a4cfdb3e
BLAKE2b-256 742121da50beb4aa228f4f99661ade63581da2b1b8edc23dcc14a044f8c421a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp312-cp312-win_amd64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f14271fc73645def3af48484ae328979860e5cebfde8f879b57512a7c1c896d9
MD5 db1a337dfef8bfd956b5c18517d428cf
BLAKE2b-256 13f410cc3718b47328cb4b2c066e6956a37961e2bf40328b742a7a5c32deca43

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b5355a5c8b58f745ac9c7c5f4740f52d7116c6ef4fe4dbd314d3dd0f26666ea9
MD5 7d6cc7ec1f7b22ea2d1ae8cc5e720350
BLAKE2b-256 a1e1131389d740004d2f8ca0fc96d065b686851b89a7716c2525cf436ed64a60

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 8b3d9ae5c9618797bb5a3070f09ade6e621d15be70141da55946e969681f8847
MD5 5f6d440e2900d9f5c2638a37ee059711
BLAKE2b-256 0a0d0929be853a1e5ea08ca540ced7481c3444c3a8065ab34baf53e1d147cdfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.18-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.1 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 epochly-0.6.18-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9d15b82c8cf59fdf4ce36998b7d2d1c522d8b4bf8f13d1d3e8923daf462958bc
MD5 88a5565cfcbd9a9d20538f51f2835724
BLAKE2b-256 30cfc6c3afbbd32696b8817c1c786581a17ab1c35daadda5d32746ae39be3912

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp311-cp311-win_amd64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3df123b4acbbad2098371f0359fbb7121578f6caffe8391581d3792aed184a63
MD5 7bff31053e16fda2a2feecd60aebf2a6
BLAKE2b-256 2ef9dddb084ec9c806ff95481c3db350aff6c5bb211a633b134c484a852fbb05

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 458b5f8871b75c93cd94cf0e9261a8140df2c8663d9eb601dde68d9a45f8e63a
MD5 43a6d7458aace87f5a58f3e36553d6a8
BLAKE2b-256 255e8789d9d0ceb0a329231ba6a3d88d3465fa7978390192b912836afcc69707

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ca2f8b1198a936b6a2f9254603b447d1699fd05b2f96411ded736dc42bfd16e8
MD5 852671c27611f7fe723060d479467759
BLAKE2b-256 5e2091c8d0253be710720dbc910eca5947b64a7248994e35a4797cc31c395bdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.18-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.1 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 epochly-0.6.18-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8e55382f206862aa3f3a5876268d05326e1fe42ed1330176fc456d86c1fb1adf
MD5 6ac49b89b52ed66602717b29e808e918
BLAKE2b-256 3e678d9a242f90d23a7b9c45b40967e9b7abb34e93651acb2a51c702bb5576f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp310-cp310-win_amd64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16dee4a25005cdad3f78ca4d85649b2a4defcc2c62e81792c33a66f7a369cee5
MD5 7466db6d501289f068790976f49feefc
BLAKE2b-256 1d17296637ef2ec63602002a9441f08300185735361a2c1d09f22954d7cb0447

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8ef803916d910635dee9f9d2a4a363d1e56416556170ff2316b84acd0bb49b5c
MD5 d3dde1f20b649fc7511b721ac05c0e6e
BLAKE2b-256 9c37f86cf47ac56a7481dbe257cb37542a35739238159cf7aca4850658f5b585

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 caf2ba137c433508de717e95831f9058a26e3af5955fa147b7dd9c2c034f6b98
MD5 21956de650a6fc17497c9b4aa783fba5
BLAKE2b-256 51a8afba52a47e0e24f28b10e47b69521c2fadfe0bbd952e30dc811043a9f287

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp310-cp310-macosx_15_0_arm64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.18-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for epochly-0.6.18-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c2f0e52c00c89f9ab8a0cac7bcb7652988dbeeb34dbd2be0c3bfa83e1c652b5a
MD5 4ed6f141d6953a5bf9309110142e1614
BLAKE2b-256 9de70bb166eaa5c63f28eab6b1d98d766c38019e73ba24cc0c8119e3399a522c

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp39-cp39-win_amd64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 59ab911f7457c7d6db29d08a2301b2927dd842a3df0939de7296d61aaf080286
MD5 2a5b61a459062e87bd1fe7c0a06116dc
BLAKE2b-256 21e6672cdfed799b8bd4892bb6de05f46bd9f59d6ec0a0561ef75791323a897d

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f4629bb575d15e5c39fd78015b411b3b636e32abc493cf3f393639ed43c1c64a
MD5 ca7e8ed4d671797691a6b741b189c2ff
BLAKE2b-256 07b45408226f9e986b8b6688b4df88352dbcd189de86b6704e93f166d3bc2844

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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

File details

Details for the file epochly-0.6.18-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.18-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 96c46e91bdab1582c0e0ad5d841c45801ec7e731478383b7eed521ed8402fdcd
MD5 1b706ab0de62adcc634e6c7a669cba68
BLAKE2b-256 4cc8ce086450e6ef6eb0523f6da0af49bf036d39ac129bf82e88cc386b9c0c40

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.18-cp39-cp39-macosx_15_0_arm64.whl:

Publisher: publish-pypi.yml on chandlercvaughn/epochly

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 Sentry Error logging StatusPage Status page