Skip to main content

oscilo

Zero-invasive variable-change tracker for Python. Register a variable once and oscilo records every change it undergoes — without touching your code.

PyPI version Python License: MIT

English | 한국어

oscilo observes program execution in the background and captures how a variable evolves over time — reassignments, in-place mutations, and deletions — then writes the full history to a JSON Lines file when the program exits. The value comparison that runs on every line is delegated to a small C extension to keep the runtime overhead low.

Contents

Motivation

Inspecting variable state during debugging usually means scattering print calls through the code:

def solve(data):
    result = []
    for x in data:
        result.append(x * 2)
        print("result:", result)   # temporary, easy to forget to remove
    return result

This clutters the source, is easy to leave behind, and does not scale to hot loops. Interactive debuggers avoid the clutter but interrupt execution, which is impractical when a loop runs thousands of times.

oscilo takes a different approach: register a variable by name once, and its history is collected automatically.

import oscilo

def solve(data):
    result = []
    oscilo.register("result")   # every change to `result` from here on is recorded
    for x in data:
        result.append(x * 2)
    return result

Installation

pip install oscilo

oscilo ships a C extension. A prebuilt wheel is used when available; otherwise the extension is compiled locally, which requires a C compiler.

Building from source
pip install -e .                        # editable install (recommended for development)
pip install .                           # standard install
python setup.py build_ext --inplace     # build the C extension only

Requirements

  • Python 3.11+
  • A C compiler (GCC / Clang / MSVC) when building from source

Quick start

The public API is a single function, oscilo.register(), which takes the variable name as a string.

import oscilo

def run():
    target = [100, 200]
    oscilo.register("target")   # recorded as an "init" event

    target.append(300)          # updated (in-place mutation)
    target = "reassigned"       # updated (reassignment)
    del target                  # deleted

run()
# On exit, the history is written to oscilo.jsonl

Calling oscilo.register() multiple times adds each variable to the same monitor, and all histories are merged into a single output file:

import oscilo

def run():
    score = 10
    items = ["potion", "shield"]

    oscilo.register("score")
    oscilo.register("items")

    score += 55
    items.append("sword")

run()

Notes:

  • register() returns None; registration is its only effect.
  • Importing oscilo has no side effects — tracing starts only when register() is called.
  • If no change is ever recorded, no file is written.
  • If a tracked value cannot be deep-copied, oscilo records <uncopyable> and tracks reassignment only. In-place mutations of the same object cannot be detected because no comparison snapshot is available.

Output format

History is written as JSON Lines (oscilo.jsonl by default). Each line represents a single change:

{"name": "target", "var_id": 1, "data": [100, 200], "event": "init", "domain": "LOCAL", "line": 4, "func": "run", "call_id": 1, "parent_call_id": null, "call_depth": 1}
{"name": "target", "var_id": 1, "data": [100, 200, 300], "event": "updated", "domain": "LOCAL", "line": 6, "func": "run", "call_id": 1, "parent_call_id": null, "call_depth": 1}
{"name": "target", "var_id": 1, "data": "reassigned", "event": "updated", "domain": "LOCAL", "line": 7, "func": "run", "call_id": 1, "parent_call_id": null, "call_depth": 1}
{"name": "target", "var_id": 1, "data": null, "event": "deleted", "domain": "LOCAL", "line": 8, "func": "run", "call_id": 1, "parent_call_id": null, "call_depth": 1}
Field Description
name The tracked variable name
var_id Identity of the tracked binding; records sharing a var_id refer to the same variable (matches call_id for locals; stays stable across frames for globals and closure variables)
data The value at the time of the change (null for deleted)
event init, updated, or deleted
domain Variable scope: LOCAL or GLOBAL (a closure/enclosing variable is reported as LOCAL from its owning frame's point of view and is identified by var_id)
line Source line where the change was detected
func Function in which the change occurred (<module> at module level)
call_id Unique id of the function call (frame) where the change occurred
parent_call_id call_id of the calling frame (null for a root call)
call_depth Call depth relative to the registration frame (root = 1)

The call_id / parent_call_id / call_depth fields let a consumer reconstruct the call tree — i.e. which call each change happened in, and how the calls nest.

The line-delimited format streams and parses efficiently for large histories.

How it works

oscilo watches execution in Python and delegates value comparison to a C extension.

  1. The first register() call lazily creates a single monitor and installs a trace hook via sys.settrace.

  2. On each executed line, the C engine (oscilo_engine) determines whether a tracked variable changed, using a short-circuiting sequence:

    Variable no longer in scope?      → deleted
    Reference identity changed?       → updated   (reassignment)
    Immutable type (int/str/...)?     → unchanged (skip comparison)
    Container size changed?           → updated
    Otherwise, compare values         → updated / unchanged
    
  3. When the process exits, an atexit hook flushes the in-memory history to disk in a single write. Records are buffered rather than written per change to avoid I/O overhead.

Unchanged values produce no record, and immutable values are skipped entirely when their reference is unchanged — both are central to keeping the per-line cost low.

Project layout

src/oscilo/
├── __init__.py          # public API (register) and single-instance management
├── CallContext.py       # lazy call-context tracking (call_id / parent_call_id / call_depth)
├── FileWriter.py        # JSONL output
├── HistoryBuffer.py     # in-memory history buffer
├── Oscilo.py            # monitor implementation and atexit save logic
├── ScopeResolver.py     # LEGB scope resolution (local/enclosing/global/builtin)
├── TraceDispatcher.py   # sys.settrace event handling
├── VariableTracker.py   # per-variable change detection and value snapshots
└── oscilo_engine.c      # C extension for value comparison

Testing

python tests/test.py

Tests are discovered from tests/ (test_*.py). Component tests run in-process, while the end-to-end scenarios (registration and process lifecycle) spawn a separate interpreter process, since atexit-driven saving and sys.settrace behavior can only be verified across a full process lifetime.

Contributing

Contributions are welcome — bug reports, feature ideas, and pull requests alike.

  • Open an issue using the bug report or feature request template.
  • Follow the checklist in .github/pull_request_template.md when submitting a PR.
  • Include tests with new features or fixes where practical.

License

MIT © 2026 sdkurjnk

Metadata

Release files for oscilo 1.0.7

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

Source distribution (sdist)

Source distribution for oscilo 1.0.7
File Size Uploaded Provenance
oscilo-1.0.7.tar.gz 476.4 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for oscilo 1.0.7
File
oscilo-1.0.7-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
oscilo-1.0.7-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
oscilo-1.0.7-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
oscilo-1.0.7-cp313-cp313-musllinux_1_2_i686.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-32 Details
oscilo-1.0.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.5+ x86-64 Details
oscilo-1.0.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.13 CPython 3.13 Linux glibc 2.5+ x86-32, Linux glibc 2.17+ x86-32 Details
oscilo-1.0.7-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
oscilo-1.0.7-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
oscilo-1.0.7-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
oscilo-1.0.7-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
oscilo-1.0.7-cp312-cp312-musllinux_1_2_i686.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-32 Details
oscilo-1.0.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.5+ x86-64 Details
oscilo-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-32, Linux glibc 2.5+ x86-32 Details
oscilo-1.0.7-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
oscilo-1.0.7-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
oscilo-1.0.7-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
oscilo-1.0.7-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
oscilo-1.0.7-cp311-cp311-musllinux_1_2_i686.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-32 Details
oscilo-1.0.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.5+ x86-64 Details
oscilo-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.11 CPython 3.11 Linux glibc 2.5+ x86-32, Linux glibc 2.17+ x86-32 Details
oscilo-1.0.7-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 1.1 MB

Release files / oscilo-1.0.7.tar.gz

Download URL oscilo-1.0.7.tar.gz
Size 476.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0f95a1f4210a72a7a2d0e0183ac8009d8c271d53a2ba3ca1fa191a376b61719c
BLAKE2b-256 checksum
How to use checksums
dc17d36344f9af94702752aaa0d872113194aa366e2bcac7b0ebeb58e2a8f93d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp313-cp313-win_amd64.whl

Download URL oscilo-1.0.7-cp313-cp313-win_amd64.whl
Size 26.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
f8b0fa3c9eaa645d03a5664407aebeceadaae889df5914d5b4c78f1f5b46cced
BLAKE2b-256 checksum
How to use checksums
1b8a9893836148b3c6dd405d83595a405e01e4124bfac888dfca2749bae3299a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp313-cp313-win32.whl

Download URL oscilo-1.0.7-cp313-cp313-win32.whl
Size 26.3 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
133ecfa1dd2de5f1be7cbb671a6f2f52170c278cb972e4d9a288fcb0afd67ffd
BLAKE2b-256 checksum
How to use checksums
a2f6ef703b338fb26da92fbae0caea26d40a4e07c35bb15b5a8441c6b4f13d2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL oscilo-1.0.7-cp313-cp313-musllinux_1_2_x86_64.whl
Size 33.3 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
83b9c92c8c03bdd922702c11d60e83e9de08866a46ed21278318ba1ddeee3cb0
BLAKE2b-256 checksum
How to use checksums
a83711e735f4493cc06bdf708b405974a7ad13386c074f29d46939298f34e97d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp313-cp313-musllinux_1_2_i686.whl

Download URL oscilo-1.0.7-cp313-cp313-musllinux_1_2_i686.whl
Size 33.3 kB
Tags CPython 3.13 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
e6d77172d8de46ec608dd3be44ecfe959cc8fc4308a6a4c8aa6e32b00dfcae27
BLAKE2b-256 checksum
How to use checksums
8dee6fda1bfc2cdfecde509a9a7423b5821e48813db4d4f81087f0e2e1e381d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL oscilo-1.0.7-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 33.5 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
95669ee56ec9d21e64332f590832e84f2ad60bf15671adedb5bc76c2d600789c
BLAKE2b-256 checksum
How to use checksums
c60d62e26597af7cb21dff100615ee51ed5a78795537f3b3670e0a10bc5f0243
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl

Download URL oscilo-1.0.7-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 33.1 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
85db8a798f4b5b3721d2bac3035d4313e192e3a18332eebe95831bbccf8a9fd6
BLAKE2b-256 checksum
How to use checksums
f6bf44686008d8194a74ca8676910fae5e0bfd679258bad334cfb0d3bb689f51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp313-cp313-macosx_11_0_arm64.whl

Download URL oscilo-1.0.7-cp313-cp313-macosx_11_0_arm64.whl
Size 24.4 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b776ac812385d4b5f42f47e6edf4e3c47395ab7f27a13d669c5e249c629f19a0
BLAKE2b-256 checksum
How to use checksums
4d0d10d8a2c727d32d9031c3325c2e1931343349ff125e09f2739cac10f2f883
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp312-cp312-win_amd64.whl

Download URL oscilo-1.0.7-cp312-cp312-win_amd64.whl
Size 26.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
15d12f68acea4072bbc19322797bbae46cb94ba3ceda439d4510ad54851776bb
BLAKE2b-256 checksum
How to use checksums
d82d64e5897d68f408c314151b0c1ad4394ef2b14643c0559df467565026537e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp312-cp312-win32.whl

Download URL oscilo-1.0.7-cp312-cp312-win32.whl
Size 26.3 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
df7d1d3b53ccfe987789a56f58fc882214183abe9ec9b410512c92ed5a80cd09
BLAKE2b-256 checksum
How to use checksums
c6192ca400ca6d92cd9163eacf58fb0b8d9c442cd6f26ba79caf7d64ca35c38b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL oscilo-1.0.7-cp312-cp312-musllinux_1_2_x86_64.whl
Size 33.5 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
1766a9b51fce36c001fff2090b7e7f4f9b98407122ca9ed3ee4189997d6b8f03
BLAKE2b-256 checksum
How to use checksums
a76ff94cfc3f38ea3f8afea8434685e8545855190d34942c026f713fb91da2f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp312-cp312-musllinux_1_2_i686.whl

Download URL oscilo-1.0.7-cp312-cp312-musllinux_1_2_i686.whl
Size 33.5 kB
Tags CPython 3.12 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
77d3c551aa0fe5a3cfefbe4d5667be41f48e4d01c83534e1ccb8a149d3f51971
BLAKE2b-256 checksum
How to use checksums
9a75915e5975cf0e56c201ec5f817e399ce3d6892308802088277f87ec36568e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL oscilo-1.0.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 33.7 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
1cc6b4a5e939533da24b1b173c729a370a2f66d2453feb835b9ba7b6dd2cbd71
BLAKE2b-256 checksum
How to use checksums
f2a509aa80b484aac23ab0a897b36f468a1ea14828087fc8cd0b0c990cef51df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl

Download URL oscilo-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 33.3 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
ef7bc2ad854792d9444326fa1b519e3fd7fb3a9b3a41d8daac108c05f0f371d5
BLAKE2b-256 checksum
How to use checksums
79f902b4cc3b271d127b61cd73fd8cb9f55456526db1a7fdf64867ecb96a1cb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp312-cp312-macosx_11_0_arm64.whl

Download URL oscilo-1.0.7-cp312-cp312-macosx_11_0_arm64.whl
Size 24.4 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dc40318fddd48e02d7441f11523a810507b9639dd4dc77fbcbaf3fd9efbb9e70
BLAKE2b-256 checksum
How to use checksums
fb97da0d60829c7ba29e5f8e600ffca79300a0fa82df423def87bada2dd3facb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp311-cp311-win_amd64.whl

Download URL oscilo-1.0.7-cp311-cp311-win_amd64.whl
Size 26.5 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2e596439f0457063138a570d0fe87e8b3bba5b9bd0d4bfbedcd6421995e81114
BLAKE2b-256 checksum
How to use checksums
8c688ff3297c61ac1373cdab51c502dba1777ccd28486005513833ac564da795
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp311-cp311-win32.whl

Download URL oscilo-1.0.7-cp311-cp311-win32.whl
Size 26.3 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
4d0281a8483f487428a0fba21887e17c0905c8c20ca948f8a2147fec73160fac
BLAKE2b-256 checksum
How to use checksums
b330d1d01408c202026d953f8f7d82973e463ecf385c7cf29fde7141a77c261c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL oscilo-1.0.7-cp311-cp311-musllinux_1_2_x86_64.whl
Size 33.1 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
20532044b4ac12593bcf85f41b59eb64586bc713b747a8668fdbcecb6d542071
BLAKE2b-256 checksum
How to use checksums
aeed0f04f190c01b050de1e06fee1f9dd4f1e5caf439b7750f5ad0db99ba9c73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp311-cp311-musllinux_1_2_i686.whl

Download URL oscilo-1.0.7-cp311-cp311-musllinux_1_2_i686.whl
Size 33.2 kB
Tags CPython 3.11 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
ca3a5f3e410970b50f506813776111d1829cbf677ca11abf498090e4e78c667a
BLAKE2b-256 checksum
How to use checksums
3e74af53de2df2559c4b292b7d9c33f113e2ad30cbc867744b827313707bf65b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL oscilo-1.0.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 33.3 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
9c8dc68e2efd1559dc1df59ef23d5f264884fea9585e79079205f8255b1a1d1d
BLAKE2b-256 checksum
How to use checksums
cdbf453ec87ab991371c34886cd5493787ed7bbee91c1328257fafc5c9d1e38f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl

Download URL oscilo-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 33.0 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
75776944cb8b452a06b54592ba16fec4fe4355f7e3de1da736e39a94da264601
BLAKE2b-256 checksum
How to use checksums
0c19928e005945d0ed7d1511ec2bbcaa5354c462cdc6ad333095dd1d5017ae60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Release files / oscilo-1.0.7-cp311-cp311-macosx_11_0_arm64.whl

Download URL oscilo-1.0.7-cp311-cp311-macosx_11_0_arm64.whl
Size 24.3 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ee48931fd95be6685ca6a97b7831588b027f010973d21063ab22ad88fe55ad34
BLAKE2b-256 checksum
How to use checksums
711cc514978a37b21154b54fce8e10702f8bc2f29bb45e3ef3662d005a8875ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

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

PyPI Publish Attestation

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

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

Transparency log

Security for oscilo 1.0.7

Provenance

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

Full provenance

All 22 files in this release have been uploaded with provenance metadata.

Select from 22 files

Attestation for oscilo-1.0.7.tar.gz

PyPI Publish Attestation

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

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

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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