Skip to main content

Zero-invasive Python variable-change tracker powered by a C-extension trace engine with automatic scope resolution and JSONL history output

Project description

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.

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

Project details


Download files

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

Source Distribution

oscilo-1.0.0.tar.gz (41.2 kB view details)

Uploaded Source

Built Distributions

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

oscilo-1.0.0-cp313-cp313-win_amd64.whl (23.9 kB view details)

Uploaded CPython 3.13Windows x86-64

oscilo-1.0.0-cp313-cp313-win32.whl (23.7 kB view details)

Uploaded CPython 3.13Windows x86

oscilo-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl (30.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

oscilo-1.0.0-cp313-cp313-musllinux_1_2_i686.whl (30.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

oscilo-1.0.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

oscilo-1.0.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (30.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

oscilo-1.0.0-cp313-cp313-macosx_11_0_arm64.whl (21.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

oscilo-1.0.0-cp312-cp312-win_amd64.whl (23.9 kB view details)

Uploaded CPython 3.12Windows x86-64

oscilo-1.0.0-cp312-cp312-win32.whl (23.7 kB view details)

Uploaded CPython 3.12Windows x86

oscilo-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl (30.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

oscilo-1.0.0-cp312-cp312-musllinux_1_2_i686.whl (30.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

oscilo-1.0.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (31.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

oscilo-1.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (30.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

oscilo-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (21.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

oscilo-1.0.0-cp311-cp311-win_amd64.whl (23.9 kB view details)

Uploaded CPython 3.11Windows x86-64

oscilo-1.0.0-cp311-cp311-win32.whl (23.7 kB view details)

Uploaded CPython 3.11Windows x86

oscilo-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl (30.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

oscilo-1.0.0-cp311-cp311-musllinux_1_2_i686.whl (30.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

oscilo-1.0.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

oscilo-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (30.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

oscilo-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (21.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file oscilo-1.0.0.tar.gz.

File metadata

  • Download URL: oscilo-1.0.0.tar.gz
  • Upload date:
  • Size: 41.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oscilo-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2263710392b5de5466d2c19301db99a23ecebec4d98af2cc2002dcd3f0bf2d9a
MD5 7d17b5f5232bbce0cd5168b39268961e
BLAKE2b-256 c5da6d9b37f8c1211f0742187bcfde3a8518f3c26a23a65d5986c08aa23681a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0.tar.gz:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: oscilo-1.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oscilo-1.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b345a898027bf35bb4d2d8a3447698c161de4f6ff96a58e619de324ceb579179
MD5 206383e367ec88ad77052a65166c54db
BLAKE2b-256 7698e57db4c4746d48499e8361756f51dace13383ef0a1e466a20db147d37d6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: oscilo-1.0.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oscilo-1.0.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 87e26668d6dad5b0f77d2b5d43467352e01fd184d7975e746d75fb6ac1228afd
MD5 0e47b0929be7757e676b9b8de4b10f85
BLAKE2b-256 140e2da67931313ec991659027d36f2b9dd2ad54e5c2aab6382acabe2bee52c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp313-cp313-win32.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 16b207003f6d16adadaa29cb29a87fe308e52dc47a78c99d4b514ee9715eac05
MD5 345166e85f4c5c5c7d011e96d0d7b30a
BLAKE2b-256 1ce39a91ab20ac7a06707fc2fad8782241c54cefb6f1887871b3c25eacf8ccb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f965c6e800193a8097e8540fbc65d47175bdae65fa5dcdbefb299e0398824f90
MD5 12744c73c762b3cea8c06093cc115cf5
BLAKE2b-256 694d60fc43f36699907b1e95083fb67f3dd1adf3f9fcd3f9edb25d37a40b7c51

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 20bb96db07b3125bce077db12bf3cc8f7f8fd19d33d293f3e83a15ed52951ba5
MD5 3b8ed2b942c2497c5cdf00bcac8aae5f
BLAKE2b-256 37f0c027ae8d71ef6098bf3affe00fca692a286695fe1c90984fee615d943cf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9724bfb33c7b3d0df55d68074dbab841293111c501c1d100157d4cec5ac99d70
MD5 32dd6229d23caa036395ff872f5f450f
BLAKE2b-256 7b3acd847e8a4ae1c45b1d7de9e282fe262bd68710e44171ef828f4d9c328d60

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 62eb3d53c4d6df8325d38dd7743aa75dd63e6886f849c97e3ebd9063fe552f6e
MD5 0cf4ceb0f88e2135e1fb72fbd7da1181
BLAKE2b-256 3ebc2013a9e8ece6f67fed693892f58df5f7d608254dbf509b88fcf7a8bfaa0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: oscilo-1.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oscilo-1.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a65c1ca7ab280fa61fe2a0b624121de26b15c841abb187c836094dab00d2ec60
MD5 04f043157f70821bdfb305c5d726a540
BLAKE2b-256 f41f757e95dcace823f6094bd0788df5006b689e0b507a45dd92fb3fa086b8e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: oscilo-1.0.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oscilo-1.0.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 bb0348bbeb4c65469d7dc39951d5ee9f1d4b3938d64305cf302957f0dcaa47a2
MD5 bf730ae1ec2f7d4f85da36a6534b1d29
BLAKE2b-256 aa293d88330ec79909a90c44121e7cd57998323c94a40f553ef55f570ef6f4a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp312-cp312-win32.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 55045f74670a8eaa7e7188448608fea23879b04092b51e6b1e9caa80323da0fd
MD5 2ca70349dc28f8ad4e24cdde14efdc6c
BLAKE2b-256 4de238834ab990b868b06db58864a770bf0dccb1d7f2d07437b9f53e11a26f40

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 8b35a0676c4d17bdbb59f9664da3149f98d5289612f92a6f100b658af046c410
MD5 0765936fa6062b7a38be481a20426605
BLAKE2b-256 19ec9fbf73556085c31c78e9a5094743fffa4528f52f2f1487229a564af388fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 37157b1b38f70769e7dd0268766a66d07aed2d1ab4148bef7e56e85b0d3b7ead
MD5 4eef6c058dc2d3f93e024c641c31cffd
BLAKE2b-256 d2b382df1cf87711001b0c07ec910b816feaeed5bc88e48e07bbecbbba8b1648

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0ee06db95575081d49bb64066bfbb9acb9beefdd8871a2610847263264108803
MD5 2035e6968e3f7c5f4a38bb4481be1f9a
BLAKE2b-256 681e1d23091237f05c4d4dd5750d519f15fb3f696e45a419932918802554859c

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ce1dc01ad4abac85d138bbca573dce7cdd407019e44f7abfa0b98aa203e8267
MD5 240fc1adc3fac27bf81bd21c7da30a87
BLAKE2b-256 02831a0f4cfe09dd9e397c79e5d3967013dd84ea6b1401bc8548ce78b867a685

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: oscilo-1.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oscilo-1.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 22e35fd722566a711cb34218105ac0dbcfd238e232dd1e3262ff6f726696f525
MD5 b893142a39ca833ee37b818f7604df25
BLAKE2b-256 b7e304d5c58d90e7134a3dcef0edc83990a9fa7cd82240ee1e151e85fb6a78e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: oscilo-1.0.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for oscilo-1.0.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 401fc07f46d93df25961b86860f8713502f06797b39d3ee1863549650cf43752
MD5 68b41db1c6d602b8998cda60f614a781
BLAKE2b-256 78913c62f0b98b0e87cadbf2b9adc2f202de6713bda13f763e1dabdc5883dd95

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp311-cp311-win32.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4e16e076263577215387850d4400ec257377a8945aed41b88077e94f073fafab
MD5 0b5cc7c0c0cf9768b6fb4cc97482723e
BLAKE2b-256 09f522e27fff41ceb46758f9b85daab844a41146800b92013bae1065d4a562d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 87a04c678f7c5f28588edd5ce86fdfcf7ed4b246ad42c65c7cce41963d73010b
MD5 23a3bac262370ce5a5b408a406fe31d2
BLAKE2b-256 f7c542ddd8bc01ac461079164df16ae8aa810977bbd694d40037731138f7eb2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9fcef857d6a7731fce26b9d699cedd6a4fd41ca81b7ff40eeae50c3edc3a4b60
MD5 264a3ed5490bdd768cb835b6c8f1ead9
BLAKE2b-256 d9abac7f2bc2307df3d4ca90e62b7bcbc5308a979e046d382b63e0a282e29831

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0f72f517d7953c4286cb092a84184be5f579cb74062dc2736975d907e1f7485b
MD5 166d21e817df84d724034358d55df68f
BLAKE2b-256 93e057586f26cbf71e58dd88702c9c802054cbf8b4a59c341c285223605341f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

File details

Details for the file oscilo-1.0.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for oscilo-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9542c8f5b381a6ea3b68b36308afe1c5fc70c38395432048d42d6c2d78f25dd
MD5 4c67ff70084c5ad95ac8637b675c4d58
BLAKE2b-256 df9b4b4aec20e301074152dbd46a1093293a73d5009bd9fbdc858d8f8cffb304

See more details on using hashes here.

Provenance

The following attestation bundles were made for oscilo-1.0.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on sdkurjnk/oscilo

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page