cypd: Cython wrapper for libpd
A Cython-based Python wrapper for libpd (Pure Data as an embeddable audio library) with built-in audio support via miniaudio.
Features
- Full libpd API: Comprehensive access to libpd functionality including patches, messaging, arrays, MIDI, and callbacks
- Built-in audio: Integrated miniaudio backend for easy audio playback
- Flexible architecture: Use the built-in audio or integrate your own audio system
- Thread-safe audio: Audio processing runs in a separate thread with proper
nogilhandling - Modern build system: Uses scikit-build-core with CMake
Installation
pip install cypd
Build from source
Prerequisites
- Python 3.10+
- uv (recommended) or pip
- CMake 3.15+
- C compiler (clang/gcc)
# Clone the repository
git clone https://github.com/shakfu/cypd.git
cd cypd
# Build libpd and miniaudio dependencies
./scripts/setup.sh
# Install with uv
uv sync
# Or install with pip
pip install -e .
Quick Start
Using the built-in audio
from cypd import audio
# Play a patch for 4 seconds
audio.play("my_patch.pd", "/path/to/patches", duration_ms=4000)
Manual control
import cypd
from cypd import audio
# Initialize libpd
cypd.init()
cypd.init_audio(1, 2, 44100) # 1 input, 2 outputs, 44100 Hz
# Initialize audio backend
audio.init_audio(44100, 1, 2)
# Open a patch
patch_id = cypd.open_patch("my_patch.pd", "/path/to/patches")
# Start audio and enable DSP
audio.start()
cypd.dsp(True)
# Let it play
audio.sleep(4000) # 4 seconds
# Cleanup
cypd.dsp(False)
audio.stop()
audio.terminate()
cypd.close_patch(patch_id)
Sending messages to Pure Data
import cypd
cypd.init()
patch_id = cypd.open_patch("my_patch.pd", ".")
# Send a bang
cypd.send_bang("my_receiver")
# Send a float
cypd.send_float("frequency", 440.0)
# Send a symbol
cypd.send_symbol("my_receiver", "hello")
# Send a list
cypd.send_list("my_receiver", 1, 2, 3, "foo", "bar")
# Send a typed message
cypd.send_message("my_receiver", "set", 1, 2, 3)
cypd.close_patch(patch_id)
Receiving messages from Pure Data
import cypd
def my_float_callback(receiver, value):
print(f"Received float {value} from {receiver}")
def my_bang_callback(receiver):
print(f"Received bang from {receiver}")
cypd.init()
cypd.set_float_callback(my_float_callback)
cypd.set_bang_callback(my_bang_callback)
# Subscribe to a sender
cypd.subscribe("my_sender")
# ... run your patch ...
cypd.unsubscribe("my_sender")
MIDI
import cypd
cypd.init()
patch_id = cypd.open_patch("my_synth.pd", ".")
cypd.init_audio(1, 2, 44100)
# Send MIDI note on (channel, pitch, velocity)
cypd.noteon(0, 60, 100) # Middle C, velocity 100
# Send MIDI note off
cypd.noteon(0, 60, 0) # velocity 0 = note off
# Control change
cypd.controlchange(0, 1, 64) # Modulation wheel
# Pitch bend
cypd.pitchbend(0, 0) # Center position
cypd.close_patch(patch_id)
Array access
import cypd
cypd.init()
patch_id = cypd.open_patch("with_array.pd", ".")
# Get array size
size = cypd.array_size("my_array")
print(f"Array size: {size}")
# Resize array
cypd.resize_array("my_array", 1024)
cypd.close_patch(patch_id)
API Reference
Initialization
init()- Initialize libpdinit_audio(in_channels, out_channels, sample_rate)- Initialize audio renderingrelease()- Shutdown libpd and release resources
Patches
open_patch(name, dir)- Open a patch, returns patch IDclose_patch(patch_id)- Close a patchadd_to_search_path(path)- Add to abstraction search pathclear_search_path()- Clear the search path
Audio
get_blocksize()- Get pd's block size (always 64)dsp(on)- Enable/disable DSP processing
Messaging
send_bang(receiver)- Send a bangsend_float(receiver, value)- Send a floatsend_symbol(receiver, symbol)- Send a symbolsend_list(receiver, *args)- Send a listsend_message(receiver, msg, *args)- Send a typed messagesubscribe(source)- Subscribe to messages from a senderunsubscribe(source)- Unsubscribe from a senderexists(receiver)- Check if a receiver exists
Callbacks
set_print_callback(func)- Set print hookset_bang_callback(func)- Set bang receive hookset_float_callback(func)- Set float receive hookset_symbol_callback(func)- Set symbol receive hookset_list_callback(func)- Set list receive hookset_message_callback(func)- Set typed message receive hook
MIDI
noteon(channel, pitch, velocity)- Send note oncontrolchange(channel, controller, value)- Send control changeprogramchange(channel, value)- Send program changepitchbend(channel, value)- Send pitch bendaftertouch(channel, value)- Send aftertouchpolyaftertouch(channel, pitch, value)- Send poly aftertouch
Arrays
array_size(name)- Get array sizeresize_array(name, size)- Resize an array
Audio Module (cypd.audio)
init_audio(sample_rate, channels_in, channels_out)- Initialize miniaudiostart()- Start audio playbackstop()- Stop audio playbackterminate()- Shutdown audiois_running()- Check if audio is runningsleep(milliseconds)- Sleep for durationplay(patch, dir, duration_ms, ...)- Convenience function to play a patchget_version()- Get miniaudio version string
Development
# Run tests
make test
# Build
make build
# Clean
make clean
Architecture
The project consists of two Cython extension modules:
_libpd: Core libpd wrapper providing the full API_audio: Miniaudio-based audio backend
The _audio module obtains a function pointer to libpd_process_float from _libpd at runtime, ensuring both modules share the same libpd instance (avoiding issues with static library symbol duplication).
License
See LICENSE file.
Acknowledgments
Metadata
Release files for cypd 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| cypd-0.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| cypd-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 free-threading | macOS 11.0+ ARM64 | Details |
| cypd-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| cypd-0.1.0-cp314-cp314-macosx_15_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 15.0+ ARM64 | Details |
| cypd-0.1.0-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| cypd-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| cypd-0.1.0-cp313-cp313-macosx_15_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 15.0+ ARM64 | Details |
| cypd-0.1.0-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| cypd-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| cypd-0.1.0-cp312-cp312-macosx_15_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 15.0+ ARM64 | Details |
| cypd-0.1.0-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| cypd-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| cypd-0.1.0-cp311-cp311-macosx_15_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 15.0+ ARM64 | Details |
| cypd-0.1.0-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| cypd-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| cypd-0.1.0-cp310-cp310-macosx_15_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 15.0+ ARM64 | Details |
| cypd-0.1.0-cp310-cp310-macosx_11_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 11.0+ ARM64 | Details |
| cypd-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| cypd-0.1.0-cp39-cp39-macosx_11_0_arm64.whl | CPython 3.9 | CPython 3.9 | macOS 11.0+ ARM64 | Details |
Total release size: 19.5 MB
Release files / cypd-0.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cypd-0.1.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2b86964ff33744943bd56bf67fccf2d487ad64a7ea6dd59f6b1bb2b216869a44
|
|
BLAKE2b-256 checksum How to use checksums |
79fbb9b0c9ff6bb192847ae2deb7b0ed418a883a31d2f969b4668bcdd2969487
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | cypd-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 884.8 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c99c9fbb4e7393b1f3df416ac4eb432cf19f7f71146804f8778a91ef50bb66dc
|
|
BLAKE2b-256 checksum How to use checksums |
a8e82a1f853dce1157718283fd44423023b7ec639e41d153f8d375f98c575502
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cypd-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3914e483736fb1692ad65959bb580771e623265ec76265dd3f760510114872c3
|
|
BLAKE2b-256 checksum How to use checksums |
834c2d01be8f8933e80cf1f94c53a61e0cddbe70d57bdfa7b911ba8bf6338b9d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp314-cp314-macosx_15_0_arm64.whl
| Download URL | cypd-0.1.0-cp314-cp314-macosx_15_0_arm64.whl |
|---|---|
| Size | 893.0 kB |
| Tags | CPython 3.14 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1c6860e4b9ff5ddbed1565ca4e86701698f489efca32ac368f5b76a5154d7f43
|
|
BLAKE2b-256 checksum How to use checksums |
5d44fb39290f29650115b23957592c6355b2452ade613a938595c3b48ce114d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | cypd-0.1.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 871.6 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e6f21613aeaf990456c4d8e18742fa141af7c5cdbc92279be0cd67cfca6d27d7
|
|
BLAKE2b-256 checksum How to use checksums |
1ade4f266b51ddcaa7079af9f75415cf922709132fc45e76a2b9271b26dd1f5f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cypd-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f9fb28c4ebac48d6977979693b812b959ac33c369110a5743564d0edd434953a
|
|
BLAKE2b-256 checksum How to use checksums |
03f236ff770caab57102577c9015a4037f9ca1d13cc9be5cfffa480e383a1576
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp313-cp313-macosx_15_0_arm64.whl
| Download URL | cypd-0.1.0-cp313-cp313-macosx_15_0_arm64.whl |
|---|---|
| Size | 891.5 kB |
| Tags | CPython 3.13 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6d08a5f4f1ae56b4951ebf5564a0fccd7be0e854b9961a1d6486ccd13605de82
|
|
BLAKE2b-256 checksum How to use checksums |
51f3d100798bc5813fdcb0d033e4123336f89a8dc04811a8b12468e517301f17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | cypd-0.1.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 870.8 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f99c83b6bab4e798bc67acb46b0d3e0db969a7466dbce52957f715820021b406
|
|
BLAKE2b-256 checksum How to use checksums |
2b569477252079815197a585da691a36dc84d95ed2bd8c5c1ff455ab378dcf2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cypd-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
99f958b19a1d0f97b942b86337d3a07bba7e722e10858fa769528f1dd9b5c827
|
|
BLAKE2b-256 checksum How to use checksums |
6ddd26d786b436d672be59d3990165b9657918a7a834edd705d19e00c6fdaf1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp312-cp312-macosx_15_0_arm64.whl
| Download URL | cypd-0.1.0-cp312-cp312-macosx_15_0_arm64.whl |
|---|---|
| Size | 892.7 kB |
| Tags | CPython 3.12 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5425501688aed402fa1bb8df230f36f3ac409ab08fcab6ed2900b0c355a437f6
|
|
BLAKE2b-256 checksum How to use checksums |
35f8e76bef15b95714c6e2f8ce5446e498b163711794f30fbb4e9ddaa43d5af2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | cypd-0.1.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 872.3 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b9466de61b91088145e7daca30f5d06398b463fdef2c9233493f73b6ba14931a
|
|
BLAKE2b-256 checksum How to use checksums |
083716241b49422dab72e46ebccbafd34b95f3cd6a0ddf95fb7e2295a15f5c53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cypd-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f7d75889dcf658b9cb3c8879abb6f2ab462630877e806844b8401429cbe4acbf
|
|
BLAKE2b-256 checksum How to use checksums |
f522c548719060bbfb022570b8236aba828b1bcd5a41814f68eb89acf6fa8802
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp311-cp311-macosx_15_0_arm64.whl
| Download URL | cypd-0.1.0-cp311-cp311-macosx_15_0_arm64.whl |
|---|---|
| Size | 892.9 kB |
| Tags | CPython 3.11 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7dd3553996c8340ad005d3b7cadd6696105bf09116fc5f614eec6ff8e8bb3bc0
|
|
BLAKE2b-256 checksum How to use checksums |
ae187d4d9d91e522532668bfbe7a1725f320dc4f7cee35e65cb9532db55f1e32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | cypd-0.1.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 875.2 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c0d144c69365d06cc8e682fd14cf85f04898943a661942616cbe9d79f2c85533
|
|
BLAKE2b-256 checksum How to use checksums |
c901b86c4c36d2747bc65544d1409300f49bede735ed56236d51135ee98cab0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cypd-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
123b6cf3343485a1df21d723d90a589d7466ae3f8096735323bf10b2efeef82e
|
|
BLAKE2b-256 checksum How to use checksums |
b46082f5061ed38b18fb033286210f44045b63909b4063f49550cab6daaf0d4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp310-cp310-macosx_15_0_arm64.whl
| Download URL | cypd-0.1.0-cp310-cp310-macosx_15_0_arm64.whl |
|---|---|
| Size | 893.3 kB |
| Tags | CPython 3.10 macOS 15.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
57b7b11b6f3a682e25c55abef6fc01e24e8115644898184ffed3847ed84d77cf
|
|
BLAKE2b-256 checksum How to use checksums |
1c38c345c0bc5374d4bc9040a5006dbc652c8ce6b2536d538b8482fcff9e8323
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | cypd-0.1.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 875.5 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ec695e0f2f927aab13556529376d75e3d2ac8a4e579f6737d439797340a1dedf
|
|
BLAKE2b-256 checksum How to use checksums |
253cf79760e17903758be2eb504ae0cd2109671f06c2c06751b4f65590b43ed4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | cypd-0.1.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
cd343b0f5dc339074024b8af1f35c875c66b8de93016864a9ed3264a84e135ee
|
|
BLAKE2b-256 checksum How to use checksums |
060c656c664538f7cb964529e3b89d04b526fcbf2d8a92f5540418d7e913d76a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / cypd-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | cypd-0.1.0-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 875.7 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
66f58c109e151d7c73c2e5caeeeda52db81f3624e93151ee57228bc2a68f8590
|
|
BLAKE2b-256 checksum How to use checksums |
54d7abbbf1317cf67d8a9bad334ae81cc2d22813b5485744fa9513e97c7462f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Security for cypd 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.