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

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.6
File Size Uploaded Provenance
oscilo-1.0.6.tar.gz 476.4 kB With provenance Details

Built distributions (wheels)

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

Download URL oscilo-1.0.6.tar.gz
Size 476.4 kB
Tags Source
SHA-256 checksum
How to use checksums
65349ac8df0a35d473a08d9a7031cd035a3a609e87c802f6a61e1164433f6a5f
BLAKE2b-256 checksum
How to use checksums
bd2cf215a2dc638bc264ad5284a9c406603bbf2ab4ec97f511340001cda131fc
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp313-cp313-win_amd64.whl
Size 26.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
9955d66816b9318ff82c2a184150035436151b4a0b86663f18da26ce9bce4624
BLAKE2b-256 checksum
How to use checksums
f2e81f754e5b295e51bf500cde9ace84ce0a42eb87668082c02a1b374cae960f
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp313-cp313-win32.whl
Size 26.3 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
f68aedf5cadbe38fcd73d3dc92b9163f6f9afd2eb04003b251b9995ef26076e8
BLAKE2b-256 checksum
How to use checksums
94f85e8795d33349a230680207bbab3d37d618d57b792b2d4317e0f6597517c3
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-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
42d9296fb3d9bf8909448b93546f101a36e8318b1d3edd31da50b6cc9c4b26c9
BLAKE2b-256 checksum
How to use checksums
6fd06ec3a91b945f48448faff94b391844b32994dd72cdef0284102501577d9d
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-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
4eacc3a2e5d79b4b93bc04e1ae493c1f8d62ed6e2c83426dc840cf75110f6eb1
BLAKE2b-256 checksum
How to use checksums
c0b055fffa101ba39677bf7bf0fc60d5bffc90e02d1c280d9d05d38e90438cfe
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 33.4 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
db6d2413b0cb1fd7e4fb0a3dee205fa6befb3e2a6e2528433ae1b22bbc1209ed
BLAKE2b-256 checksum
How to use checksums
a7b1f11c001028c630158040d49437933b8d64d26ace8090760045090f31fe27
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 33.0 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
2eafe433709d8246c756d09d4a8034fac80048fae73722bf8fb3d43d2a199125
BLAKE2b-256 checksum
How to use checksums
6499ab9b6472da25eadb3278ee2f94f21369c30fb76ae4865d01a8533fd9c132
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp313-cp313-macosx_11_0_arm64.whl
Size 24.3 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a1521eb5370a7e4c88197de1e510e081ceebd92c2dbeb829fc04468eac8e0a4a
BLAKE2b-256 checksum
How to use checksums
4c6149bec2d7acb0e0a85f8bf76cc4cf827cc7442ae4c86ae5066420bf2b7d8c
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp312-cp312-win_amd64.whl
Size 26.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
650a1aa50e785b976e9d947bacce77337763c086d5feefcee486ee1d4be7065d
BLAKE2b-256 checksum
How to use checksums
7a8b06ca529a35ca9caf3c324a43b3fae0157bd8c6df7aac8cf6f01ca61d5a1b
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp312-cp312-win32.whl
Size 26.3 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
ebb63b9587c2c763d088fdafc9d89ab23b1c52705b97275aa78ed4eb60300425
BLAKE2b-256 checksum
How to use checksums
732567d344452d404aa186fc8e2719da590608ed00ace4277d685e84c99ed65e
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-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
d74cddc659e2eaf4b8720260b33ee72216a98c6bde972364f797dc145da6cb2c
BLAKE2b-256 checksum
How to use checksums
86425522063dab5e8bab82b25c3e8c7cbded2a2f86a9390ac36b471af8bdc13c
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-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
ae80faec6a7ab338e89e669a925865c90e36ce1954c68b99cb15c34ca27d7353
BLAKE2b-256 checksum
How to use checksums
de194835de3cb1166706e933beeba952b01e8a0087a0f452227fb572ee945a66
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 33.6 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
e4cd0e8d2f515a574b729f210adc6de4bd05b56b301b7cb7371601a2f79ec323
BLAKE2b-256 checksum
How to use checksums
e8751ecbaf492af1034378d35e8e1fd77b61053b191c10f162f73bab6a6bb760
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 33.2 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
e50a56f65be5b07867848335fce6a6eb514caa103c697c9510f2c9ecf0bbb138
BLAKE2b-256 checksum
How to use checksums
087350c27e9dcb0e6d26dd1498b6c65d0c58d6571f139f37ec36768e06e7c33b
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp312-cp312-macosx_11_0_arm64.whl
Size 24.3 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
516567d0b11fda2e764aeed9caf74463341c292c0d1f350a7d79886d77993958
BLAKE2b-256 checksum
How to use checksums
a9bb1e7aba012747faa57aeebde98d963354a1313fca3c18fb38d5311c1c08b8
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp311-cp311-win_amd64.whl
Size 26.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
baec69a53e89c5a6dab4ee03f9eaba4bca59980a08a837249083dee7fcb571c0
BLAKE2b-256 checksum
How to use checksums
604406fdf3a51ba467966242eeb0fc6c1984358172760c6bfb1ef0515ea0849a
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp311-cp311-win32.whl
Size 26.2 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
ee86d6d16375a243380006965be55602b54f2bd153f414926889d0d21ea45632
BLAKE2b-256 checksum
How to use checksums
12fba82f30478846be4ec8aa2573cc9d97f2fa7203b4cb7e13a0ea7f00abd018
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-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
6561894f741d666c9b3ec60815dcb3833d9149654ae02f9e343b509b94ba2129
BLAKE2b-256 checksum
How to use checksums
fecde69fc3f4f5ac6c4bc36de9d32a41ae1aeaf21b048e8368187a11bba98d56
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp311-cp311-musllinux_1_2_i686.whl
Size 33.1 kB
Tags CPython 3.11 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
cdbd2451e9c83b97e6bd4e60aeeeb78352b3e613d040a7ef2941dfc55a66de95
BLAKE2b-256 checksum
How to use checksums
86388b195a9b5780aab6a9cbf1dafb7c3cec404e15daed4220801eb93cf81933
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 33.2 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
e77e589b5d9b6bd920c03f53f8634472779f89b3c9f66b244eb3e6f8d73e50b4
BLAKE2b-256 checksum
How to use checksums
62243226d725bc5d0c8a8ba335f4859b0ae7bb2f7127a4e4abb3a2c4d9a96122
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Size 32.9 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
4b2e685fee10807400177da032c1985d3bd89c5432685819706801690bd2fd97
BLAKE2b-256 checksum
How to use checksums
2d3212c89ed1b7c97fb7013431d0a5dc73ccb92277ae008f447d67eaaa36d6b7
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 16, 2026.

Transparency log

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

Download URL oscilo-1.0.6-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
a774b11aa21523b70bab99ad9a03e21f93856669a2a32c5b3f554725353910ab
BLAKE2b-256 checksum
How to use checksums
2b4f6dbdd6fb532ee7481a5009f389ca1406818d7f44bb49d60339d55027f8c7
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 16, 2026.

Transparency log

Security for oscilo 1.0.6

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.6.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 16, 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