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
├── _core.py             # monitor implementation and atexit save logic
├── CallContext.py       # lazy call-context tracking (call_id / parent_call_id / call_depth)
├── FileWriter.py        # JSONL output
├── HistoryBuffer.py     # in-memory history buffer
├── 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.4

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.4
File Size Uploaded Provenance
oscilo-1.0.4.tar.gz 471.6 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for oscilo 1.0.4
File
oscilo-1.0.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
oscilo-1.0.4-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
oscilo-1.0.4-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
oscilo-1.0.4-cp313-cp313-musllinux_1_2_i686.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-32 Details
oscilo-1.0.4-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.4-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.4-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
oscilo-1.0.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
oscilo-1.0.4-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
oscilo-1.0.4-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
oscilo-1.0.4-cp312-cp312-musllinux_1_2_i686.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-32 Details
oscilo-1.0.4-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.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-32, Linux glibc 2.17+ x86-32 Details
oscilo-1.0.4-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
oscilo-1.0.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
oscilo-1.0.4-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
oscilo-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
oscilo-1.0.4-cp311-cp311-musllinux_1_2_i686.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-32 Details
oscilo-1.0.4-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.4-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.4-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.4.tar.gz

Download URL oscilo-1.0.4.tar.gz
Size 471.6 kB
Tags Source
SHA-256 checksum
How to use checksums
7bbcff5b1e68a7ba7d228117fb64f4269db5c6e51a6dd06a26f95637039e4201
BLAKE2b-256 checksum
How to use checksums
416d96311133ed44d93212b173fd793c1c70abd3633400e8f1bb0093292eb186
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp313-cp313-win_amd64.whl
Size 25.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2fa84b43f589d754bb295ba16327d8c838cabf488b265d9af4fe65a13a815b0d
BLAKE2b-256 checksum
How to use checksums
facfc3cf882286553cb7cacd37a63ae166da0ac10f47cff5f2e5e5526048e91b
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp313-cp313-win32.whl
Size 25.1 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
14dd58e7a4f2def95ac1a403d857069ba6eeeb51aa8ccdb2f915309b6058dbac
BLAKE2b-256 checksum
How to use checksums
d4500ee557e95ab3c3145adbe8b5ed91b1311935d086c5b74833d2d8451fa520
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp313-cp313-musllinux_1_2_x86_64.whl
Size 32.1 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
9e9369dc7d872021680bafdf2258eb6acd042e371c02bcdc84eff40c0f7fe4a0
BLAKE2b-256 checksum
How to use checksums
4f6adc7a2dfb4b548f56f09fb807b48f8bd506d71c64ac9910cb8860b475a9c2
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp313-cp313-musllinux_1_2_i686.whl
Size 32.1 kB
Tags CPython 3.13 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
3a8af3ce8d338738d6bef07499cfcc8e4dff153e410bc245de30ccf73aa6d1b0
BLAKE2b-256 checksum
How to use checksums
7f95683014c99ce9d4db411bfbbf4f930ab3127b65f7abcd7590d7f1aeb922ce
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 32.3 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
282b0c35b141b47cce8f2997dd1bd37b7c0b97a8cadc7d61f43928ed1d3aa6d2
BLAKE2b-256 checksum
How to use checksums
e3514295cca5963e2c942395cc04fcb55cda93aab33c1615f6887abd221bd5b7
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 31.9 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
05cb77ecb45f16e44ca12ed5e2df5a3685dc463f358c32736ac3500be92b6ae8
BLAKE2b-256 checksum
How to use checksums
5775229290ba621f0a8d70782043546a1ce9c3ff5f054588192b42fcc77c22c0
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp313-cp313-macosx_11_0_arm64.whl
Size 23.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
56ed7c906b3e26de2196d3b5d19247d58950fa6d653ccbdc463b1e1f848c9d09
BLAKE2b-256 checksum
How to use checksums
bbf7dc21cc1f5776da04c676c07ebbf5c620bf48ca0a8f2e778e9690d5524697
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp312-cp312-win_amd64.whl
Size 25.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b512016826241bbf278eb4f34501ff854e259eb0db376bebd9d2a4ebf5fa8608
BLAKE2b-256 checksum
How to use checksums
1f922f422b84968f51e37395f08ad51c734b7bea964dc70fd978ee8451c7730a
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp312-cp312-win32.whl
Size 25.1 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
1de231ff6eee32274c3366d7de9184ed0ecd44d898f35e750fe2ea32c7b1ee09
BLAKE2b-256 checksum
How to use checksums
960501a967ac5bf9323af3cdf099d76fb090bd1f195ecceb3dec97a11be9f2e8
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp312-cp312-musllinux_1_2_x86_64.whl
Size 32.3 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
cadecd527505a253b58e817f1a9b574589229d31bcca0a9d9e20415b95cee65d
BLAKE2b-256 checksum
How to use checksums
eaacedea629e2f5d6c7c17731b59dba82bde6b8558fe885a037afd04bd304019
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp312-cp312-musllinux_1_2_i686.whl
Size 32.3 kB
Tags CPython 3.12 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
8090e8b0d8932b76048d3a5ecf9e63b41cf547a5aca9704feaaf1b49b3835dc5
BLAKE2b-256 checksum
How to use checksums
3645a9e2d5de48a1a7710041d1190f85d0b652494b402099849bba0c1e2ae9e0
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 32.5 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
dc5d66dfe7138eb35cff152ca28f55d76a85533a92b7e4daa0db43bd4149176d
BLAKE2b-256 checksum
How to use checksums
3839c98e3003342c8f2c35ef18e2d7226a5fad8934307a2b97c71ccb615422be
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 32.0 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
867fc9b1b7dbd8be9d13401206ec5da5221bd263ff800f33070b4854fcbce2b7
BLAKE2b-256 checksum
How to use checksums
5d5de2dc2ecb09b17cdc67da155494a2e0345a3ae137884ffce30768814012e5
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp312-cp312-macosx_11_0_arm64.whl
Size 23.1 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3df71f354f1363abcb1fc829b166966cea2ab55c27fc7d1b3cace3f5942b1433
BLAKE2b-256 checksum
How to use checksums
95fc7d775e93c6546fcb04a0e497836e6a6d07aa4f3009614868ab44cbba9b96
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp311-cp311-win_amd64.whl
Size 25.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
30947de09ba28e7e3cbebbe7061484ab2faf3d40efc6b2cf3263f04efce0b8e9
BLAKE2b-256 checksum
How to use checksums
4ef50378bd5fba9f68b6f2cdc0f6e31aa9352176cdaddcc7f5674632b4a30a83
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp311-cp311-win32.whl
Size 25.1 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
0a5e4eb09e3168d1d54b0ca423cf457425da7658239a74b250e4852fa72f3745
BLAKE2b-256 checksum
How to use checksums
bfa8d2cf8b279ae23f89e4f36772e511134b191a9bd97a90edc4e3d8c8b79c9b
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl
Size 31.9 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
7df54eac427459fb7a000a8291290ae193fec7c8126da0caeaa39b0bca2b1cf1
BLAKE2b-256 checksum
How to use checksums
2afdc65ae5472106854b5b8e2fa4e4b46513508d5b9209d0fc9835700567112f
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp311-cp311-musllinux_1_2_i686.whl
Size 32.0 kB
Tags CPython 3.11 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
23f86b9c02d957970991731f1d3d08c864e74b63e94b0503a4c88d6c8087f7f2
BLAKE2b-256 checksum
How to use checksums
8e8caaea60e8bcbd181b006701fc022e3c564c4d4c2dda0b449afb4d1c949247
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 32.0 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
247ce01aae6c7203dc621278e0d01821ce4b153b29b7ad7e4abd112a9bf0dce1
BLAKE2b-256 checksum
How to use checksums
81e6b4c462a3b8c84aabf829d3d416dd49a26abcb5a645a3d7c77c341b42c737
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 31.8 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
65fb5a5a4f399e6a095f4bd13793814899d09de58861fe79deb396a5fbdf50fe
BLAKE2b-256 checksum
How to use checksums
75cfa5e6a11a021a56ce1aae04f4e9eda37498c15b64205c4a497e3c1cc9f901
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 12, 2026.

Transparency log

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

Download URL oscilo-1.0.4-cp311-cp311-macosx_11_0_arm64.whl
Size 23.1 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
08ce179d3fe9085c359c064b715b60a2b8ec402831bc22351a095078b0ece06a
BLAKE2b-256 checksum
How to use checksums
398efa28a8fb4ba6aa1d672423d9064ed8a29762187afc5169bb5fce98435569
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 12, 2026.

Transparency log

Security for oscilo 1.0.4

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.4.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 12, 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