Skip to main content

softcut

CI

Python bindings for softcut-lib — the per-voice DSP engine behind monome norns' softcut — with realtime audio I/O via miniaudio. Built with nanobind.

The primary API exposes softcut as idiomatic Python objects. An optional norns-compatible layer (softcut.norns) additionally mirrors the flat norns Lua softcut API for porting existing scripts.

Concepts

  • Voice wraps one softcut::Voice: a crossfading read/write head over an audio buffer, with rate, loop points, record/play, fades, and pre/post state-variable filters. Parameters are plain attributes; the buffer is a numpy float32 array you own (softcut-lib never allocates buffer memory). Buffer length must be a power of two — use softcut.next_power_of_two or Engine.allocate, which rounds up for you. The same array can be shared by several voices.

  • Engine is the multi-voice host: it owns a set of voices and a miniaudio device, and runs them either live (realtime mic/speaker I/O on a background audio thread) or offline via Engine.render. It is a context manager and a sequence of voices.

Live looping

import softcut, time

with softcut.Engine(voices=2) as eng:          # opens the audio device
    eng.allocate(seconds=8)                    # shared power-of-two buffer
    eng[0].configure(loop_region=(0, 4), rate=1.0, level=0.8, pan=-0.3)

    with eng[0].record(at=0):                  # rec + play on; head cut to 0s
        time.sleep(4)                          # capture 4s of mic input
    # on exit: rec off — the voice keeps looping what it captured

    eng[1].configure(loop_region=(0, 4), rate=-0.5, level=0.6, pan=0.3)
    eng[1].record_for(4, at=0)                 # blocking variant: record 4s, then stop

    time.sleep(8)                              # listen to both loops
# device closed automatically

eng.start() returns immediately and audio runs on a background thread, so the REPL stays live — set a parameter and you hear the change on the next block. record() is the non-blocking context-manager gesture; record_for(seconds) blocks the calling thread for a fixed capture.

Offline rendering

No device; process a mono numpy block through the voices and get the mixed stereo output back. This is the deterministic path used by the tests:

import numpy as np, softcut

eng = softcut.Engine(voices=1, mode="playback")
v = eng[0]
v.buffer = np.zeros(2**16, dtype=np.float32)
v.configure(loop_region=(0, 1), rate=1.0)
v.rec = v.play = True
v.cut_to(0)

out = eng.render(np.random.randn(48000).astype(np.float32))   # (48000, 2) float32

Load/save audio with whatever you like (e.g. soundfile) and assign the array to voice.buffer.

Routing and devices

Voices mix to stereo via each voice's level and pan. Engine.feedback(src, dst, amount) routes one voice's output into another's input (one block delayed; src == dst is a self-feedback delay line), and each voice's input_gain scales the engine's external (mic) input into it:

eng.feedback(0, 1, 0.4)     # voice 0 -> voice 1 input
eng[1].input_gain = 0.0     # voice 1 ignores the mic

Pick a specific device by index from softcut.list_devices():

softcut.list_devices()                      # [{'index':0,'name':...,'type':'playback',...}, ...]
eng = softcut.Engine(output_device=1, input_device=0)

norns-compatible API

For porting norns scripts (and the muscle memory that goes with them), softcut.norns mirrors the flat, 1-based, singleton norns softcut Lua API: 6 voices indexed from 1 and 2 global mono buffers numbered 1/2. Import it under the name norns scripts expect and call the functions verbatim:

from softcut import norns as softcut

softcut.buffer_clear()
softcut.buffer_read_mono("loop.wav", ch_dst=1)   # numpy + stdlib wave, no extra dep
softcut.loop(1, 1)
softcut.loop_start(1, 0.0)
softcut.loop_end(1, 4.0)
softcut.rate(1, 1.0)
softcut.level(1, 0.8)
softcut.play(1, 1)

softcut.start()                                  # open the audio device
  • Attribute passthroughrate, level, pan, play/rec/loop, loop points, position, the pre/post filters, slews, phase, buffer, voice_sync, level_cut_cut, reset.

  • Buffer/disk opsbuffer_read_* / buffer_write_*, buffer_copy_*, buffer_clear*, in pure numpy plus the standard-library wave module (WAV only, no new dependency), with preserve/mix crossfade, edge fade_time and reverse. Operations write in place, so they are safe against the running audio thread; reads are non-resampling, matching norns.

softcut.render / softcut.start / softcut.stop drive audio (norns runs its audio continuously; here you render offline or open the device explicitly). Phase polling and per-sample level/pan slews are not yet implemented; see docs/dev/norns-api.md for the full mapping and status. demos/12_norns_api.py is a narrated walkthrough built entirely on this layer.

OSC server

softcut.osc exposes softcut over the same OSC wire protocol as the reference softcut_jack_osc client, so existing norns/Lua scripts, SuperCollider, Max, or any OSC controller can drive softcut-py as a drop-in engine over the network. It is a thin dispatch layer over the norns host: each address maps to a host method, with the one translation that the wire protocol is 0-based (voices 0-5, buffers 0-1) while the host is 1-based.

from softcut.osc import SoftcutOSC
from softcut import norns

host = norns.NornsSoftcut()
host.start()                                   # open the audio device
server = SoftcutOSC(host)                       # listen on UDP 9999
server.serve_forever()                          # blocks until a /quit message

Or run it straight from the command line:

python -m softcut.osc                            # device + OSC server
python -m softcut.osc --no-audio                 # offline: buffer ops only

Then drive it from any OSC client (voice/buffer indices 0-based):

/set/param/cut/rate      0 1.0        # voice 0 rate = 1.0
/set/param/cut/loop_start 0 0.0
/set/param/cut/loop_end  0 4.0
/set/param/cut/loop_flag 0 1
/set/level/cut           0 0.8
/set/param/cut/play_flag 0 1
/softcut/buffer/read_mono "loop.wav"  0.0 0.0 -1  0 0
/poll/start/cut/phase                 # -> /poll/softcut/phase <voice> <phase>

The full namespace is mirrored: all /set/param/cut/* params, routing (/set/level|pan/cut, cut_cut, in_cut), the /softcut/buffer/* disk ops, /softcut/reset, and the phase poll. Defaults match the reference: listen on UDP 9999, reply (phase poll) to 127.0.0.1:57120.

Two transports, selected by backend= ("auto" by default):

  • python-osc — the default pure-Python transport. Install the optional extra: pip install softcut-py[osc]. The core package stays numpy-only.

  • native (experimental) — a dependency-free UDP transport built on the vendored tinyosc codec. It is not compiled into the published wheels; opt in with a source build (SKBUILD_CMAKE_DEFINE="SOFTCUT_ENABLE_TINYOSC=ON" pip install . or make build-tinyosc; reported by softcut._core.HAVE_TINYOSC). Per-voice /set/param/cut/* messages are parsed and dispatched entirely in C without the GIL — via a second single-producer command queue drained on the audio thread plus atomic parameter mirrors — and the phase poll runs in C too, so a busy Python interpreter can neither delay nor be delayed by the native control path (other addresses fall back to a Python handler). It is IPv4-only and less battle-tested than python-osc; prefer python-osc unless you specifically need zero-dependency or GIL-free OSC control.

A few addresses are partial, mirroring the norns layer's gaps: enabled maps to play, in_cut uses the scalar per-voice input gain (there is no per-channel ADC matrix), and level/pan slew and the VU poll are accepted-and-ignored. See docs/guide/osc.md for the complete address table.

Standalone server (no Python)

For a headless, interpreter-free deployment, clients/softcut-osc builds a standalone native binary (softcut-lib + tinyosc + miniaudio) that speaks the same softcut OSC protocol with no CPython at all — so nothing on its control path can touch a GIL. It is the pure-C++ counterpart to softcut.osc: identical DSP and wire protocol, no library or numpy. It covers the full namespace plus WAV disk I/O (via the vendored dr_wav, on a disk-worker thread with click-avoidance crossfades), preserve/mix blending, opt-in --resample-on-read, and device selection.

make build-standalone                    # -> build/softcut-osc/softcut-osc
./build/softcut-osc/softcut-osc --help
./build/softcut-osc/softcut-osc          # listen UDP 9999, reply 127.0.0.1:57120

The Python extension and this binary share their Python-free C++ core (command queue, mixer, device, sockets) under src/shared. See clients/softcut-osc/README.md.

Build and test

make sync     # set up the environment
make test     # run the test suite
make qa       # test + lint + typecheck + format

Set SOFTCUT_TEST_AUDIO=1 to additionally exercise a real audio device in the test suite. Use make help for more targets (wheel, sdist, clean, etc.).

Releasing

CI runs QA and a Linux/macOS/Windows build smoke on every push and pull request. Pushing a v* tag builds wheels for CPython 3.10-3.14 across Linux (x86_64/aarch64), macOS (x86_64/arm64) and Windows with cibuildwheel, plus the sdist, and publishes them to PyPI via trusted publishing. make release bumps the version and creates the tag; pushing it triggers the release. (TestPyPI is available via the workflow's manual workflow_dispatch.)

Notes

  • Realtime parameter updates are safe: while the device is running, voice DSP parameter changes from Python are enqueued and applied on the audio thread via a lock-free queue rather than racing it. (The mix scalars level/pan/ input_gain and the feedback matrix are plain aligned writes.)

  • The vendored softcut-lib carries small host-portability fixes (uninitialized members that relied on embedded zero-init static storage, and an oversized debug buffer stubbed out); see the comments in thirdparty/softcut-lib.

Download files

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

Source Distribution

softcut_py-0.3.0.tar.gz (629.3 kB view details)

Uploaded Source

Built Distributions

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

softcut_py-0.3.0-cp314-cp314-win_amd64.whl (170.2 kB view details)

Uploaded CPython 3.14Windows x86-64

softcut_py-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (247.6 kB view details)

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

softcut_py-0.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (237.1 kB view details)

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

softcut_py-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (213.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

softcut_py-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl (228.5 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

softcut_py-0.3.0-cp313-cp313-win_amd64.whl (165.5 kB view details)

Uploaded CPython 3.13Windows x86-64

softcut_py-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (247.5 kB view details)

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

softcut_py-0.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (236.9 kB view details)

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

softcut_py-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (213.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

softcut_py-0.3.0-cp313-cp313-macosx_10_14_x86_64.whl (228.3 kB view details)

Uploaded CPython 3.13macOS 10.14+ x86-64

softcut_py-0.3.0-cp312-cp312-win_amd64.whl (165.5 kB view details)

Uploaded CPython 3.12Windows x86-64

softcut_py-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (247.6 kB view details)

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

softcut_py-0.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (236.9 kB view details)

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

softcut_py-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (213.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

softcut_py-0.3.0-cp312-cp312-macosx_10_14_x86_64.whl (228.4 kB view details)

Uploaded CPython 3.12macOS 10.14+ x86-64

softcut_py-0.3.0-cp311-cp311-win_amd64.whl (166.2 kB view details)

Uploaded CPython 3.11Windows x86-64

softcut_py-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (248.7 kB view details)

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

softcut_py-0.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (238.0 kB view details)

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

softcut_py-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (214.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

softcut_py-0.3.0-cp311-cp311-macosx_10_14_x86_64.whl (229.2 kB view details)

Uploaded CPython 3.11macOS 10.14+ x86-64

softcut_py-0.3.0-cp310-cp310-win_amd64.whl (166.4 kB view details)

Uploaded CPython 3.10Windows x86-64

softcut_py-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (249.2 kB view details)

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

softcut_py-0.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (238.5 kB view details)

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

softcut_py-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (215.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

softcut_py-0.3.0-cp310-cp310-macosx_10_14_x86_64.whl (229.6 kB view details)

Uploaded CPython 3.10macOS 10.14+ x86-64

File details

Details for the file softcut_py-0.3.0.tar.gz.

File metadata

  • Download URL: softcut_py-0.3.0.tar.gz
  • Upload date:
  • Size: 629.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for softcut_py-0.3.0.tar.gz
Algorithm Hash digest
SHA256 360299f3c6caca0e7d36aecb474c0f5579524644802abe2e282ea74e5eb382bf
MD5 499fb497ca091ad982c3f42747a895ec
BLAKE2b-256 b258dab5ca5c254771380e0530f378ba655025c9723b4597340754cafc632d7a

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: softcut_py-0.3.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 170.2 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for softcut_py-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8d3dd6b8190c2d4dbed90809344516d8ba9b1f0be6a26a31ce678260d2375f04
MD5 474eba62316ef1f29044b486d9c9e7c9
BLAKE2b-256 bdfa95d82fb7a33dde755a0a9c18c62b4ff50a3fd8c58cdcac3be1a62928dfbd

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d0197182d1e340fcc6e9ad6d84c3cf8a5b22b49ef7cc7b370a1c101b29f1de42
MD5 9e09cc49964b055eed2823e3f07e8f4c
BLAKE2b-256 588e7e63a69176dea2a84afb7a8b1df630e3904ccc125534a9e0393fc1964bfa

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 66d6b64e82ad5950f7b31fd68ed4c23a38a8cd1ad9fdbdc71176c51ba93b8da8
MD5 6d39dffc6d9ffe585ffba3452bf66890
BLAKE2b-256 83245f9732a615bfd6e76dbcdd8dd37843795f03801a16dd7ec6255704e114fb

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e3e18c09af0030ad032fb48b54e5789e207862978b3959beaaaa9be44adba04
MD5 46757fb79fb6c9a73a515b90b37fcc4c
BLAKE2b-256 cbbf98ee0a24b8e45a179f2ee82c46fc418a1ba711fa840d7116f52a309a6bc5

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 713ac33d09134e126339b977973caa1924641d80dd388caf0a8392b60c7bf49c
MD5 806b4079c8f89f7545325b030cbc9fd4
BLAKE2b-256 fa4076c328a59401187e0eb361191707deca23e539f56dcd826c91f1035bedeb

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: softcut_py-0.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 165.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for softcut_py-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8e85ec1f048b4da72bc64729a6adf5a09962ccf7ef080766eba6c5d42f7ab3fa
MD5 3a2490814043aaa7a1acb5f96b3021e8
BLAKE2b-256 1def1c522631ceb0c99e5f68ce47e479f0f3c4a56d24315e374e8d9274a5c298

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d5c8977dfa9cb89ab10d41d4f7f7cc7e4275a45d14f8af9c309fdd82f9dd0315
MD5 73714d81b9ce846060acd989d1bb37c7
BLAKE2b-256 0b57a2724b8c8846067ee6541259cdcf5ef18f1288094a1dd0d4eb991e7f8f8c

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 21db91f74472095e811d6b5db70c3cffd7e0a314d862d6458c07ca906f79c122
MD5 f3937db756d308565833b618812201da
BLAKE2b-256 147dcc7b8db409c2175f93cd0a8510608329138107ee9b5562c9f7ebfd2a5f7a

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7f2717251fbd830cac153558527129d34eb0ce354a7b5fd476de7cdf3c977ff
MD5 063e887a73fbc11578304e8a26b4bfa6
BLAKE2b-256 ffee7e607233778732825ad8681e10f6417278d9aae35da5afd926d133568e8d

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp313-cp313-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp313-cp313-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 cc5a270d3928e1a2872bb5226962b98181f2eb66a601791404f1aef4b8523750
MD5 79fac5cf9665b1b58302d1a9eec2e28f
BLAKE2b-256 17b0443ce6988e43d24eea1e8ad5cff90b93cf8ae491d38568a44b913ea9401b

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: softcut_py-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 165.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for softcut_py-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 97488e430db084cb1998ce08c57fd9c7a132fb696c6ac232bb44615368360804
MD5 c23e7766ed3d110d1a0742772cdd8b8f
BLAKE2b-256 cbc1984cf99afcfeb65ac6d323fc29496f88bacd090eae71cca50ad79d3b6763

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3db2db06c829b24b8617ddf041a874e51239fed0d5d573d4ab09340c17b4932d
MD5 f675654bf2001bcafdb5049c65848f26
BLAKE2b-256 05d660e7eeaa170bf19d27701cce1881f3709a5c0fd0f880353e71f6c56cebf2

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 52b7f45f79faaa25ed7a7e63c23decc12238c24bc03d54c2d83f1051e080a58f
MD5 6a26b1be3f302f8d8cee5542eea8fc9e
BLAKE2b-256 003382efbe0c0c9f6665886fc1e546d3565738fa49bbdc3343d87b623f2f9f85

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ddc8c84e7362106093321d6c58804011eb7de95ccfad54889d9ebc929c3f0948
MD5 02265db0dd83de234e09610bdd6a272b
BLAKE2b-256 0c21d8c7c93bc3cb1f832fc8c5811a207a5d9f04a30777c7373e640ae3420592

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp312-cp312-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp312-cp312-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 b5edd8499bcfca4013d562300b10746b8af0cbe7840df6782b6b9ba935240784
MD5 9776f6b3257df4608da53b90e5c5bf4d
BLAKE2b-256 165abe600150006402b9679bfe119a603307783661db7864295c89cc659b7bf6

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: softcut_py-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 166.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for softcut_py-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e810a835d76ac28148743ce14c111de541b1512a5a74048c852e61917bca4708
MD5 49a7681e1898e1261a8833b4a398b79b
BLAKE2b-256 ca5f6bdb4d705aa3317225a3c46cd9e7f3930f0d6f7cabdc9d279c1736fb6360

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b3849d5fb8ce9b642d006be6573f672209dbbe5b0e5f66aa58c284e6fd3ad7f8
MD5 aa5b20b0e2110a1499e7e03cf678a789
BLAKE2b-256 c0f935a31a215ef35aa338599f0299fc46b17a619e2b9b03ee0172e7362f1319

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5fc9db4e217c0fd391e9dc0d1d06afaaa5779600d33012f2db927e79245203b5
MD5 b62d09319758ee7a985d8f63f1ea9b7d
BLAKE2b-256 7939af7dfd7de223c2cf8cac7427e0f506de50f5a9e391456fa713eff93829f4

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21ab0e343bf19c85a0d147570596afaba8154af534bb0b5b4250b0910b1a420c
MD5 b537c2c03922d9134c07d4ab036938d0
BLAKE2b-256 45fb9978f3ee563ba778bf4fca6e654ca8651f61848a0f94baaa6d26ba27672a

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp311-cp311-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 859d4bd0f28178f94cd08480596f0df1ba70672f534e91e3fe259bd62f6456bc
MD5 bec19b11f714a27bebfdc7f0293d6f22
BLAKE2b-256 f9427fc586bd0844b32f568f250d1f835e756713b519033d906e51e23cf345e1

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: softcut_py-0.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 166.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for softcut_py-0.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fd38d718fc81e48ede71ec786ad37a8a8da0b3651e2a21eddbd0c355c159c5ca
MD5 178fb48311307cc9a4f00512de48ccad
BLAKE2b-256 044103eeb9938b9aac759379fa9d82ee2685e8f59a64ef2ff05bb3280ca644e2

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2e8d7a39b12070f76c819ac14c65f543f0a62383287fdf3a2dfefd7a3bbf2bbb
MD5 374ea69c4eb5cbea5579423a331c0e6e
BLAKE2b-256 f8f3f01a3d46d22cacbabd0f9667035762b39251ddc89669852cfcb7a44538af

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 13b5880bc0777805c9a20c2ea1445cd76ab2beaaddbc33ff3a73674591893918
MD5 d517b5b6bd9e612eb98a80bae422578c
BLAKE2b-256 422708d281cd8f02e726103a6ac061751ec551534386feffebb4c3691167c985

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b7289c79b9a99a6727167ceb72574ca4fbe03805c55e518802319688ac2f3d10
MD5 7280d366a9ae33a136a35680122ad1d1
BLAKE2b-256 bfe476e959406356395027404b32bde8023fb74501f1e96174b708b93db1947a

See more details on using hashes here.

File details

Details for the file softcut_py-0.3.0-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for softcut_py-0.3.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 b4c6ce95387b1768f76914ecc9b80794c52ee92c3bdfe5bb66e163c2b7bd0d8f
MD5 a7cdf6e6914258b181ababf4c4cc42a1
BLAKE2b-256 0d24352e69cd2aa890ed6d564437560cd53b9bdf2cb539e38a56f0536653df74

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.2

26 files

0.4.1

26 files

0.4.0

26 files

This release

0.3.0 This release

26 files

0.2.0

26 files

0.1.1

26 files

0.1.0

25 files

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