Skip to main content

Epochly - Transparent performance optimization for Python applications

Project description

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)

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).

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.

Project details


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.13-cp314-cp314-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.14Windows x86-64

epochly-0.6.13-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (6.4 MB view details)

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

epochly-0.6.13-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (6.4 MB view details)

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

epochly-0.6.13-cp314-cp314-macosx_15_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

epochly-0.6.13-cp313-cp313-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.13Windows x86-64

epochly-0.6.13-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (6.5 MB view details)

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

epochly-0.6.13-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (6.4 MB view details)

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

epochly-0.6.13-cp313-cp313-macosx_15_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

epochly-0.6.13-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

epochly-0.6.13-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (6.5 MB view details)

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

epochly-0.6.13-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (6.4 MB view details)

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

epochly-0.6.13-cp312-cp312-macosx_15_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

epochly-0.6.13-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11Windows x86-64

epochly-0.6.13-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (6.5 MB view details)

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

epochly-0.6.13-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (6.4 MB view details)

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

epochly-0.6.13-cp311-cp311-macosx_15_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

epochly-0.6.13-cp310-cp310-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10Windows x86-64

epochly-0.6.13-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

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

epochly-0.6.13-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (6.2 MB view details)

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

epochly-0.6.13-cp310-cp310-macosx_15_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

epochly-0.6.13-cp39-cp39-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.9Windows x86-64

epochly-0.6.13-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (6.3 MB view details)

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

epochly-0.6.13-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (6.2 MB view details)

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

epochly-0.6.13-cp39-cp39-macosx_15_0_arm64.whl (5.4 MB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

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

File metadata

  • Download URL: epochly-0.6.13-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.13-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0ae858a60e050e5f2dad6287147e6841e0f95e46f7109586662e53ac8d32c754
MD5 67cd38864f1a5fd17f576b31f7a8d20d
BLAKE2b-256 02ec334ad97cf9a22ec07efe632e2c5c8230cb49258c47d3a8b357f140e84894

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 980a83b269af7452eb76e9dca3391a82ea93ac6452610ad9cd22f9d8234412bb
MD5 051db269d4f48d7cc57faf07ae986fea
BLAKE2b-256 59ac2eb1a976d5c68417be58bdf7c6252c0c55d098b5ed67075150c6be202411

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 afed409ec65c79f06790dbdc17b49c01cde138600ea0f56ab32b12b1231357de
MD5 8ac86a8649f49c3ff6c176003fd2e47d
BLAKE2b-256 f2cf2d3c6f669df3293eba286c2bdabb0df2a1b310fc2c7d55ea81c4c7e0e30e

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 62f2f74504dd6cc2b333d87172029d85ab0b2d1220c519081b49924854bd2379
MD5 eef15341da23735505d02d99a6d8f262
BLAKE2b-256 7414dba96871658efc34e50a2d1bc1a31ca12fd411041a7bd62096a54ed6dfe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.13-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9379893c1d81bc123fb9c1b2a4af712a50b8dd847355bc2ba39b6902eca86fb5
MD5 d546f22bf5852ff52197043ed57a70c7
BLAKE2b-256 57cfc4dbae77b58b58194e3c5845e67c06217bc8d9492377317e060819203e9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 31bd8ec92d4a65ca12a0bf4b08203f996537fa8216e5934ee464a420f8c1d56c
MD5 d2a942aadcc7be1611d5c0dd508ad75b
BLAKE2b-256 0ec165183f2bf5c26adbf4a1a8593ee5250a47a3ae460dc1c531405c8d157935

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 37688ce7e83c94349dba70cd3f722c7bd24149deaec6a737fb8b02487861bd4e
MD5 9f4a7724ec933e28c8d08a155cccee02
BLAKE2b-256 ba26a94a2f11f10239123232992c0b1d52a46c754d1782f8f5723b2557b50ec4

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 81b4e680ffc23dc91b53e1d627c1cc620cef633ea4f8854310c91ba92826f690
MD5 7baa9c7ce9f81e78c22357f9a3e06681
BLAKE2b-256 95d9a339b289368b5a58afc1b58775e66bfc22acf18b2cdd1521f3a9460258e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.13-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9dad01d58676399c9564e24d7bf02afe00f1134afad86dfe5b9426fa65f44270
MD5 3916de9091004f172834938b75030a53
BLAKE2b-256 4a4f749a3a1a3efa82f9751c0074303499be4efed5831d3fc4b9299af113365f

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd1e5c4ddfbb33347e5d39c9731fd855b289b7167e52fec0470194fb216e3e31
MD5 b74267d755085618e29fe920ea0a0e35
BLAKE2b-256 71a47103374bf6c9b0e4ab65597440a96afafa8b0c05e6122d0f37657d0cffa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a150f8d312591ea24e999fe43e3164fd4b00096f474a166b2e3e1adbc029bb05
MD5 cb55120624989c4047a9b89f8b33d6fa
BLAKE2b-256 62300e1a50bffe6b53a49681cdb51caf115dc642b744ca60b0d6638707f7fcdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4a371bbfd24bd412226606bdda09975140a802737e7ea9ce101314468eaf4c3e
MD5 60350925001210ee762641483063b900
BLAKE2b-256 71bb164e966b7e78a001a75eaddb3012fc5572afeaf041c71bf0b3dca230beeb

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.13-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 13323e08a9918225064a526e7bb6991f3e46db420a211ed40363a7f2e32cca56
MD5 cda612a9ed9abf3f2d854cefa9601321
BLAKE2b-256 74e816c630aa252d8310a406af26d04fff1ef0d68616f9ee0a3eb65d02e7de5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1c6a5ba0855510d36047b6438da73e2626f054e31c5fc4a7bbe5ea313c0b0be3
MD5 05df8daf7a6e0fac5c3f2a75a5b04d49
BLAKE2b-256 64c7e7c2c21d2e7796b8b2bf8b7ecd3406873a3c2201f21d48661b8f92ae7761

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 08b60075bf93e23fa2ef17d5d2eefdfd519a24a4b240b65c62e92241d264782d
MD5 7724a391ec66d07e29354030c27f6d49
BLAKE2b-256 3cb0da5121dbf79a75ffe6b8cab451932ed3ccbd35f51083e5d6bd14b9b6aa19

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 252d3a2d77277154ed5804ef51b5fdef1c274be8ebb4572863e8a1cf709dc104
MD5 33a9872b121eca2d2b76f31067dafd1e
BLAKE2b-256 1822f09cb18c59c2d59aa58f8aab66b4e5a206302ebf03f0e3fa062816d52231

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.13-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a82521fd78f85f29fe7c8355493fe851b74864f9d4e63e484ab08ed3ef1b173f
MD5 b7b619640d70d9fffd7f0931b2680cd7
BLAKE2b-256 63a958fe438c44b5a660205df176fe75493b34f0036f05a108ec2c571f98da86

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fadcf08eca16f4f436a98265728c6720630688910f6da5f21b7bce0a5fc25ad1
MD5 62dcf4d58d67d42eabd2769aa9791ffc
BLAKE2b-256 59be0c6d5679ee0caea12e1e00a94f43d9ad4b71312411fed2c0012d77a85b35

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4e885e9c8192d5bf67b77a89183f357bef459fe02e6360a5f3d58e33abe67b4a
MD5 f75b5a0205be7602de45cdf021da24f7
BLAKE2b-256 4532979197f98d84b2b15fb931a67a74e4d1d60a2bfd4ae41e09c2ff2976ce40

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d237d8114433595249b90ae23b58542bff5e09e8f6deafbe61f4287d307f0d93
MD5 75d34db9d1deaadd604d6a8a4cefda3b
BLAKE2b-256 0a96673eea418e761a14bf9134f39a020f54c1e4e94092e3f2e9aad2b167c2f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: epochly-0.6.13-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.13-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 59b3a21fa985f7e8c8ced2455740e03abafef771c129851a4776dcda15851bd8
MD5 906a9f8c54c560f556282646603f0a89
BLAKE2b-256 9df97d27c8a9a5052672d94879e236f0e4481cfe59d5ac7881905b5207620d3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c5368e3b33d37b9ae3597bcfbb1ea543cc1286181697be5714205ddd0eeaaeec
MD5 c7075dbac7593260dbd0170578db9462
BLAKE2b-256 d8ef7375635d727f198b42f0f03cb8eb04bc0ce117bae95d09ff8dd001cec3cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e76c809468b70809f7574dabbd6d4a224be6eb65ad455f33610921ddb1654077
MD5 23ed79d3a1d704d8f660018406625855
BLAKE2b-256 dab4ea64cf879ba62979bfd2403959e78c40dde45983c6e7109a0eb7fe47a5d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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.13-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for epochly-0.6.13-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 39c7b4d30c23bf2a4184e8f98b461aaf6ac3909d89b3f990dab4cfe8877d95ca
MD5 d35881062deb6c3afa387acb00905bbf
BLAKE2b-256 5b24c82510f72c641f4a87dd37212449ca5c2ef67eb9ab2040fa3e04af124e3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for epochly-0.6.13-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 Pingdom Monitoring Sentry Error logging StatusPage Status page