softcut
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
-
Voicewraps onesoftcut::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 numpyfloat32array you own (softcut-lib never allocates buffer memory). Buffer length must be a power of two — usesoftcut.next_power_of_twoorEngine.allocate, which rounds up for you. The same array can be shared by several voices. -
Engineis 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 viaEngine.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 passthrough —
rate,level,pan,play/rec/loop, loop points,position, the pre/post filters, slews, phase,buffer,voice_sync,level_cut_cut,reset. -
Buffer/disk ops —
buffer_read_*/buffer_write_*,buffer_copy_*,buffer_clear*, in pure numpy plus the standard-librarywavemodule (WAV only, no new dependency), with preserve/mix crossfade, edgefade_timeandreverse. 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 .ormake build-tinyosc; reported bysoftcut._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_gainand the feedback matrix are plain aligned writes.) -
The vendored
softcut-libcarries small host-portability fixes (uninitialized members that relied on embedded zero-init static storage, and an oversized debug buffer stubbed out); see the comments inthirdparty/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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
360299f3c6caca0e7d36aecb474c0f5579524644802abe2e282ea74e5eb382bf
|
|
| MD5 |
499fb497ca091ad982c3f42747a895ec
|
|
| BLAKE2b-256 |
b258dab5ca5c254771380e0530f378ba655025c9723b4597340754cafc632d7a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d3dd6b8190c2d4dbed90809344516d8ba9b1f0be6a26a31ce678260d2375f04
|
|
| MD5 |
474eba62316ef1f29044b486d9c9e7c9
|
|
| BLAKE2b-256 |
bdfa95d82fb7a33dde755a0a9c18c62b4ff50a3fd8c58cdcac3be1a62928dfbd
|
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
- Download URL: softcut_py-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 247.6 kB
- Tags: CPython 3.14, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0197182d1e340fcc6e9ad6d84c3cf8a5b22b49ef7cc7b370a1c101b29f1de42
|
|
| MD5 |
9e09cc49964b055eed2823e3f07e8f4c
|
|
| BLAKE2b-256 |
588e7e63a69176dea2a84afb7a8b1df630e3904ccc125534a9e0393fc1964bfa
|
File details
Details for the file softcut_py-0.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 237.1 kB
- Tags: CPython 3.14, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66d6b64e82ad5950f7b31fd68ed4c23a38a8cd1ad9fdbdc71176c51ba93b8da8
|
|
| MD5 |
6d39dffc6d9ffe585ffba3452bf66890
|
|
| BLAKE2b-256 |
83245f9732a615bfd6e76dbcdd8dd37843795f03801a16dd7ec6255704e114fb
|
File details
Details for the file softcut_py-0.3.0-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 213.8 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e3e18c09af0030ad032fb48b54e5789e207862978b3959beaaaa9be44adba04
|
|
| MD5 |
46757fb79fb6c9a73a515b90b37fcc4c
|
|
| BLAKE2b-256 |
cbbf98ee0a24b8e45a179f2ee82c46fc418a1ba711fa840d7116f52a309a6bc5
|
File details
Details for the file softcut_py-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl
- Upload date:
- Size: 228.5 kB
- Tags: CPython 3.14, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
713ac33d09134e126339b977973caa1924641d80dd388caf0a8392b60c7bf49c
|
|
| MD5 |
806b4079c8f89f7545325b030cbc9fd4
|
|
| BLAKE2b-256 |
fa4076c328a59401187e0eb361191707deca23e539f56dcd826c91f1035bedeb
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e85ec1f048b4da72bc64729a6adf5a09962ccf7ef080766eba6c5d42f7ab3fa
|
|
| MD5 |
3a2490814043aaa7a1acb5f96b3021e8
|
|
| BLAKE2b-256 |
1def1c522631ceb0c99e5f68ce47e479f0f3c4a56d24315e374e8d9274a5c298
|
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
- Download URL: softcut_py-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 247.5 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5c8977dfa9cb89ab10d41d4f7f7cc7e4275a45d14f8af9c309fdd82f9dd0315
|
|
| MD5 |
73714d81b9ce846060acd989d1bb37c7
|
|
| BLAKE2b-256 |
0b57a2724b8c8846067ee6541259cdcf5ef18f1288094a1dd0d4eb991e7f8f8c
|
File details
Details for the file softcut_py-0.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 236.9 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21db91f74472095e811d6b5db70c3cffd7e0a314d862d6458c07ca906f79c122
|
|
| MD5 |
f3937db756d308565833b618812201da
|
|
| BLAKE2b-256 |
147dcc7b8db409c2175f93cd0a8510608329138107ee9b5562c9f7ebfd2a5f7a
|
File details
Details for the file softcut_py-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 213.7 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7f2717251fbd830cac153558527129d34eb0ce354a7b5fd476de7cdf3c977ff
|
|
| MD5 |
063e887a73fbc11578304e8a26b4bfa6
|
|
| BLAKE2b-256 |
ffee7e607233778732825ad8681e10f6417278d9aae35da5afd926d133568e8d
|
File details
Details for the file softcut_py-0.3.0-cp313-cp313-macosx_10_14_x86_64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp313-cp313-macosx_10_14_x86_64.whl
- Upload date:
- Size: 228.3 kB
- Tags: CPython 3.13, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc5a270d3928e1a2872bb5226962b98181f2eb66a601791404f1aef4b8523750
|
|
| MD5 |
79fac5cf9665b1b58302d1a9eec2e28f
|
|
| BLAKE2b-256 |
17b0443ce6988e43d24eea1e8ad5cff90b93cf8ae491d38568a44b913ea9401b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97488e430db084cb1998ce08c57fd9c7a132fb696c6ac232bb44615368360804
|
|
| MD5 |
c23e7766ed3d110d1a0742772cdd8b8f
|
|
| BLAKE2b-256 |
cbc1984cf99afcfeb65ac6d323fc29496f88bacd090eae71cca50ad79d3b6763
|
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
- Download URL: softcut_py-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 247.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3db2db06c829b24b8617ddf041a874e51239fed0d5d573d4ab09340c17b4932d
|
|
| MD5 |
f675654bf2001bcafdb5049c65848f26
|
|
| BLAKE2b-256 |
05d660e7eeaa170bf19d27701cce1881f3709a5c0fd0f880353e71f6c56cebf2
|
File details
Details for the file softcut_py-0.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 236.9 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52b7f45f79faaa25ed7a7e63c23decc12238c24bc03d54c2d83f1051e080a58f
|
|
| MD5 |
6a26b1be3f302f8d8cee5542eea8fc9e
|
|
| BLAKE2b-256 |
003382efbe0c0c9f6665886fc1e546d3565738fa49bbdc3343d87b623f2f9f85
|
File details
Details for the file softcut_py-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 213.7 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddc8c84e7362106093321d6c58804011eb7de95ccfad54889d9ebc929c3f0948
|
|
| MD5 |
02265db0dd83de234e09610bdd6a272b
|
|
| BLAKE2b-256 |
0c21d8c7c93bc3cb1f832fc8c5811a207a5d9f04a30777c7373e640ae3420592
|
File details
Details for the file softcut_py-0.3.0-cp312-cp312-macosx_10_14_x86_64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp312-cp312-macosx_10_14_x86_64.whl
- Upload date:
- Size: 228.4 kB
- Tags: CPython 3.12, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5edd8499bcfca4013d562300b10746b8af0cbe7840df6782b6b9ba935240784
|
|
| MD5 |
9776f6b3257df4608da53b90e5c5bf4d
|
|
| BLAKE2b-256 |
165abe600150006402b9679bfe119a603307783661db7864295c89cc659b7bf6
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e810a835d76ac28148743ce14c111de541b1512a5a74048c852e61917bca4708
|
|
| MD5 |
49a7681e1898e1261a8833b4a398b79b
|
|
| BLAKE2b-256 |
ca5f6bdb4d705aa3317225a3c46cd9e7f3930f0d6f7cabdc9d279c1736fb6360
|
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
- Download URL: softcut_py-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 248.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3849d5fb8ce9b642d006be6573f672209dbbe5b0e5f66aa58c284e6fd3ad7f8
|
|
| MD5 |
aa5b20b0e2110a1499e7e03cf678a789
|
|
| BLAKE2b-256 |
c0f935a31a215ef35aa338599f0299fc46b17a619e2b9b03ee0172e7362f1319
|
File details
Details for the file softcut_py-0.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 238.0 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fc9db4e217c0fd391e9dc0d1d06afaaa5779600d33012f2db927e79245203b5
|
|
| MD5 |
b62d09319758ee7a985d8f63f1ea9b7d
|
|
| BLAKE2b-256 |
7939af7dfd7de223c2cf8cac7427e0f506de50f5a9e391456fa713eff93829f4
|
File details
Details for the file softcut_py-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 214.9 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21ab0e343bf19c85a0d147570596afaba8154af534bb0b5b4250b0910b1a420c
|
|
| MD5 |
b537c2c03922d9134c07d4ab036938d0
|
|
| BLAKE2b-256 |
45fb9978f3ee563ba778bf4fca6e654ca8651f61848a0f94baaa6d26ba27672a
|
File details
Details for the file softcut_py-0.3.0-cp311-cp311-macosx_10_14_x86_64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp311-cp311-macosx_10_14_x86_64.whl
- Upload date:
- Size: 229.2 kB
- Tags: CPython 3.11, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
859d4bd0f28178f94cd08480596f0df1ba70672f534e91e3fe259bd62f6456bc
|
|
| MD5 |
bec19b11f714a27bebfdc7f0293d6f22
|
|
| BLAKE2b-256 |
f9427fc586bd0844b32f568f250d1f835e756713b519033d906e51e23cf345e1
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd38d718fc81e48ede71ec786ad37a8a8da0b3651e2a21eddbd0c355c159c5ca
|
|
| MD5 |
178fb48311307cc9a4f00512de48ccad
|
|
| BLAKE2b-256 |
044103eeb9938b9aac759379fa9d82ee2685e8f59a64ef2ff05bb3280ca644e2
|
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
- Download URL: softcut_py-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 249.2 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e8d7a39b12070f76c819ac14c65f543f0a62383287fdf3a2dfefd7a3bbf2bbb
|
|
| MD5 |
374ea69c4eb5cbea5579423a331c0e6e
|
|
| BLAKE2b-256 |
f8f3f01a3d46d22cacbabd0f9667035762b39251ddc89669852cfcb7a44538af
|
File details
Details for the file softcut_py-0.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 238.5 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13b5880bc0777805c9a20c2ea1445cd76ab2beaaddbc33ff3a73674591893918
|
|
| MD5 |
d517b5b6bd9e612eb98a80bae422578c
|
|
| BLAKE2b-256 |
422708d281cd8f02e726103a6ac061751ec551534386feffebb4c3691167c985
|
File details
Details for the file softcut_py-0.3.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 215.2 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7289c79b9a99a6727167ceb72574ca4fbe03805c55e518802319688ac2f3d10
|
|
| MD5 |
7280d366a9ae33a136a35680122ad1d1
|
|
| BLAKE2b-256 |
bfe476e959406356395027404b32bde8023fb74501f1e96174b708b93db1947a
|
File details
Details for the file softcut_py-0.3.0-cp310-cp310-macosx_10_14_x86_64.whl.
File metadata
- Download URL: softcut_py-0.3.0-cp310-cp310-macosx_10_14_x86_64.whl
- Upload date:
- Size: 229.6 kB
- Tags: CPython 3.10, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4c6ce95387b1768f76914ecc9b80794c52ee92c3bdfe5bb66e163c2b7bd0d8f
|
|
| MD5 |
a7cdf6e6914258b181ababf4c4cc42a1
|
|
| BLAKE2b-256 |
0d24352e69cd2aa890ed6d564437560cd53b9bdf2cb539e38a56f0536653df74
|