Skip to main content

Cython bindings for the CDP audio processing library

Project description

cycdp

Python bindings for the CDP8 (Composers Desktop Project, Release 8) audio processing library.

Overview

The Composers Desktop Project (CDP) is a venerable suite of over 500 sound transformation programs developed since the late 1980s by Trevor Wishart, Richard Orton, and others. It occupies a unique niche in audio processing: where most tools focus on mixing, mastering, or standard effects, CDP specializes in deep spectral manipulation, granular synthesis, pitch-synchronous operations, waveset distortion, and other techniques rooted in the electroacoustic and computer music traditions.

Historically, CDP programs are invoked as standalone command-line executables that read and write sound files, which makes integration into modern workflows cumbersome. cycdp solves this in two ways. First, a C library (libcdp) reimplements a curated subset of CDP's algorithms to operate directly on memory buffers. Second, a shim layer intercepts the file I/O calls inside original CDP algorithm code (the sfsys open/read/write/seek functions) and redirects them to memory buffers transparently, so those algorithms can run in-process without touching the filesystem. Both paths are exposed to Python via Cython bindings, giving you native-speed audio processing with a Pythonic API, zero-copy buffer interoperability, and no subprocess overhead.

Design principles

  • Zero-copy interop. Cython memoryviews and the buffer protocol mean data passes between Python and C without copying.
  • No numpy dependency. Operates on any object supporting the Python buffer protocol (array.array, memoryview, numpy arrays, etc.). Numpy is optional, not required.
  • Functional API. Most functions accept a buffer and return a new buffer, leaving the original unchanged. Low-level in-place alternatives are also available.
  • Self-contained. The C library is compiled into the extension; no external CDP installation is needed.

Features

Spectral Processing -- Time stretching (preserving pitch), pitch shifting (preserving duration), spectral blur, shift, stretch, focus, hilite, fold, and noise cleaning.

Granular Synthesis -- Classic brassage, freeze, grain clouds, grain time-extension, simple and multi-layer texture synthesis, wrappage, plus extended grain operations (reorder, rerhythm, reverse, timewarp, repitch, stereo positioning, omit, duplicate).

Pitch-Synchronous Operations (PSOW) -- Time-stretching that preserves pitch via PSOLA, grain extraction and interpolation, and a hover effect for sustained pitched textures.

FOF Extraction and Synthesis -- Extract pitch-synchronous grains (FOFs), build a grain bank, resynthesize at arbitrary pitch and duration, and repitch with optional formant preservation.

Morphing and Cross-Synthesis -- Spectral morphing between two sounds, gliding morphs over time, and vocoder-style cross-synthesis.

Distortion -- Waveset-based techniques: overload/saturation, reverse, fractal, shuffle, cut with decaying envelopes, marker-based interpolation, wavecycle repetition, half-wavecycle shifting, and progressive warp with sample folding.

Dynamics and EQ -- Compressor, limiter, noise gate, parametric EQ, envelope follower, and envelope application.

Filters -- Lowpass, highpass, bandpass, and notch (band-reject).

Effects -- Reverb (FDN: 8 comb + 4 allpass), delay, chorus, flanger, ring modulation, bitcrush, tremolo, and attack reshaping.

Spatial Processing -- Static and envelope-driven panning, stereo mirror and width control, spinning rotation with optional doppler, dual-rotation modulation, spatial tremolo, and phase-based stereo enhancement.

Playback and Time Manipulation -- Zigzag, iterate, stutter, bounce, drunk-walk navigation, looping with crossfades, TDOLA time-stretching, waveset scrambling, splinter, and silence constriction.

Experimental / Chaos -- Strange attractor (Lorenz), Brownian motion, crystal growth, fractal, Chirikov map, Cantor set, cascade, fracture, and tesselation transformations.

Analysis -- Pitch tracking (YIN), formant analysis (LPC), and partial/harmonic extraction.

Synthesis -- Waveform generation (sine, square, saw, ramp, triangle), white and pink noise, click/metronome tracks, and chord synthesis from MIDI notes.

Core Operations -- Gain (linear and dB), normalization, phase inversion, peak detection, channel conversion (mono/stereo, split, merge, interleave), mixing, reverse, fade in/out, and concatenation.

File I/O -- Read and write WAV files (float32, PCM16, PCM24).

Installation

pip install cycdp

If you prefer to build from source:

# clone the repository
git clone https://github.com/shakfu/cycdp.git
cd cycdp

# Build and install in development mode
make build

# Or with uv directly
uv sync

Quick Start

Command Line

# Process audio
cycdp time-stretch input.wav --factor 2.0 -o stretched.wav
cycdp reverb input.wav --decay-time 3.0 --mix 0.5
cycdp pitch-shift input.wav --semitones 5 -o shifted.wav

# Two-input operations
cycdp morph voice.wav pad.wav --morph-end 0.7 -o morphed.wav
cycdp mix2 track1.wav track2.wav -o mixed.wav

# Synthesis (no input file)
cycdp synth-wave --waveform saw --frequency 220 --duration 2.0 -o tone.wav
cycdp synth-chord --midi-notes 60 64 67 --duration 1.0 -o chord.wav

# Analysis (output to stdout)
cycdp pitch input.wav
cycdp pitch input.wav --format json
cycdp formants input.wav --format csv -o formants.csv

# Utilities
cycdp info input.wav
cycdp list                  # all commands grouped by category
cycdp list spectral         # commands in one category
cycdp version

Output is auto-normalized to 0.95 peak level by default. Use --no-normalize to disable, or -n 0.8 to set a different target. When -o is omitted, output is written alongside the input as <input_stem>_<command>.wav.

Also accessible as python3 -m cycdp.

Python API

import cycdp

# Load audio file
buf = cycdp.read_file("input.wav")

# Apply processing
stretched = cycdp.time_stretch(buf, stretch_factor=2.0)
shifted = cycdp.pitch_shift(buf, semitones=5)

# Save result
cycdp.write_file("output.wav", stretched)

Usage

High-level API

Works with any float32 buffer (numpy arrays, array.array('f'), memoryview, etc.):

import array
import cycdp

# Create sample data
samples = array.array('f', [0.5, 0.3, -0.2, 0.8, -0.4])

# Apply gain (linear or decibels)
result = cycdp.gain(samples, gain_factor=2.0)
result = cycdp.gain_db(samples, db=6.0)  # +6dB = ~2x

# Normalize to target peak level
result = cycdp.normalize(samples, target=1.0)
result = cycdp.normalize_db(samples, target_db=-3.0)  # -3dBFS

# Phase invert
result = cycdp.phase_invert(samples)

# Find peak level
level, position = cycdp.peak(samples)

With numpy

import numpy as np
import cycdp

samples = np.random.randn(44100).astype(np.float32) * 0.5
result = cycdp.normalize(samples, target=0.9)

# Result supports buffer protocol - zero-copy to numpy
output = np.asarray(result)

File I/O

import cycdp

# Read audio file (returns Buffer)
buf = cycdp.read_file("input.wav")

# Write audio file
cycdp.write_file("output.wav", buf)

Low-level API

For more control, use explicit Context and Buffer objects:

import cycdp

# Create context and buffer
ctx = cycdp.Context()
buf = cycdp.Buffer.create(1000, channels=2, sample_rate=44100)

# Fill buffer
for i in range(len(buf)):
    buf[i] = 0.5

# Process in-place
cycdp.apply_gain(ctx, buf, 2.0, clip=True)
cycdp.apply_normalize(ctx, buf, target_level=0.9)

# Get peak info
level, pos = cycdp.get_peak(ctx, buf)

# Access via buffer protocol
mv = memoryview(buf)

API Reference

File I/O

Function Description
read_file(path) Read audio file, returns Buffer
write_file(path, buffer) Write buffer to audio file

Gain and Normalization

Function Description
gain(samples, gain_factor, ...) Apply linear gain
gain_db(samples, db, ...) Apply gain in decibels
normalize(samples, target, ...) Normalize to target peak (0-1)
normalize_db(samples, target_db, ...) Normalize to target dB
phase_invert(samples, ...) Invert phase
peak(samples, ...) Find peak level and position

Spatial and Panning

Function Description
pan(samples, position, ...) Pan mono to stereo (-1 to 1)
pan_envelope(samples, envelope, ...) Pan with time-varying envelope
mirror(samples, ...) Mirror/swap stereo channels
narrow(samples, width, ...) Adjust stereo width (0=mono, 1=full)

Mixing

Function Description
mix(buffers, ...) Mix multiple buffers together
mix2(buf1, buf2, ...) Mix two buffers

Buffer Utilities

Function Description
reverse(samples, ...) Reverse audio
fade_in(samples, duration, ...) Apply fade in
fade_out(samples, duration, ...) Apply fade out
concat(buffers, ...) Concatenate buffers

Channel Operations

Function Description
to_mono(samples, ...) Convert to mono
to_stereo(samples, ...) Convert mono to stereo
extract_channel(samples, channel, ...) Extract single channel
merge_channels(left, right, ...) Merge two mono buffers to stereo
split_channels(samples, ...) Split stereo to two mono buffers
interleave(channels, ...) Interleave multiple mono buffers

Time and Pitch

Function Description
time_stretch(samples, stretch_factor, ...) Time stretch without pitch change
modify_speed(samples, speed, ...) Change speed (affects pitch)
pitch_shift(samples, semitones, ...) Shift pitch without time change

Spectral Processing

Function Description
spectral_blur(samples, blur_amount, ...) Blur/smear spectrum over time
spectral_shift(samples, shift, ...) Shift spectrum up/down
spectral_stretch(samples, stretch, ...) Stretch/compress spectrum
spectral_focus(samples, freq, bandwidth, ...) Focus on frequency region
spectral_hilite(samples, freq, gain, ...) Highlight frequency region
spectral_fold(samples, freq, ...) Fold spectrum around frequency
spectral_clean(samples, threshold, ...) Remove spectral noise

Filters

Function Description
filter_lowpass(samples, cutoff, ...) Low-pass filter
filter_highpass(samples, cutoff, ...) High-pass filter
filter_bandpass(samples, low, high, ...) Band-pass filter
filter_notch(samples, freq, width, ...) Notch/band-reject filter

Dynamics and EQ

Function Description
gate(samples, threshold, ...) Noise gate
compressor(samples, threshold, ratio, ...) Dynamic range compressor
limiter(samples, threshold, ...) Peak limiter
eq_parametric(samples, freq, gain, q, ...) Parametric EQ band
envelope_follow(samples, ...) Extract amplitude envelope
envelope_apply(samples, envelope, ...) Apply envelope to audio

Effects

Function Description
bitcrush(samples, bits, ...) Bit depth reduction
ring_mod(samples, freq, ...) Ring modulation
delay(samples, time, feedback, ...) Delay effect
chorus(samples, depth, rate, ...) Chorus effect
flanger(samples, depth, rate, ...) Flanger effect
reverb(samples, size, damping, ...) Reverb effect

Envelope Shaping

Function Description
dovetail(samples, fade_time, ...) Apply dovetail fades
tremolo(samples, rate, depth, ...) Tremolo effect
attack(samples, attack_time, ...) Modify attack transient

Distortion

Function Description
distort_overload(samples, gain, ...) Overload/saturation distortion
distort_reverse(samples, ...) Reverse distortion effect
distort_fractal(samples, ...) Fractal distortion
distort_shuffle(samples, ...) Shuffle distortion
distort_cut(samples, cycle_count, ...) Waveset cut with decaying envelope
distort_mark(samples, markers, ...) Interpolate wavesets at time markers
distort_repeat(samples, multiplier, ...) Time-stretch by repeating wavecycles
distort_shift(samples, group_size, ...) Shift/swap half-wavecycle groups
distort_warp(samples, warp, ...) Progressive warp distortion with sample folding

Granular Processing

Function Description
brassage(samples, ...) Granular brassage
freeze(samples, position, ...) Granular freeze at position
grain_cloud(samples, density, ...) Granular cloud synthesis
grain_extend(samples, extension, ...) Granular time extension
texture_simple(samples, ...) Simple texture synthesis
texture_multi(samples, ...) Multi-layer texture synthesis

Morphing and Cross-synthesis

Function Description
morph(buf1, buf2, amount, ...) Spectral morph between sounds
morph_glide(buf1, buf2, ...) Gliding morph over time
cross_synth(carrier, modulator, ...) Cross-synthesis (vocoder-like)

Analysis

Function Description
pitch(samples, ...) Extract pitch data
formants(samples, ...) Extract formant data
get_partials(samples, ...) Extract partial/harmonic data

Experimental/Chaos

Function Description
strange(samples, ...) Strange attractor transformation
brownian(samples, ...) Brownian motion transformation
crystal(samples, ...) Crystal growth patterns
fractal(samples, ...) Fractal transformation
quirk(samples, ...) Quirky transformation
chirikov(samples, ...) Chirikov map transformation
cantor(samples, ...) Cantor set transformation
cascade(samples, ...) Cascade transformation
fracture(samples, ...) Fracture transformation
tesselate(samples, ...) Tesselation transformation

Playback/Time Manipulation

Function Description
zigzag(samples, times, ...) Alternating forward/backward playback through time points
iterate(samples, repeats, ...) Repeat audio with pitch shift and gain decay variations
stutter(samples, segment_ms, ...) Segment-based stuttering with silence inserts
bounce(samples, bounces, ...) Bouncing ball effect with accelerating repeats
drunk(samples, duration, ...) Random "drunk walk" navigation through audio
loop(samples, start, length_ms, ...) Loop a section with crossfades and variations
retime(samples, ratio, ...) Time-domain time stretch/compress (TDOLA)
scramble(samples, mode, ...) Reorder wavesets (shuffle, reverse, by size/level)
splinter(samples, start, ...) Fragmenting effect with shrinking repeats
hover(samples, frequency, location, ...) Zigzag reading at specified frequency for hovering pitch effect
constrict(samples, constriction) Shorten or remove silent sections
phase_invert(samples) Invert phase (multiply all samples by -1)
phase_stereo(samples, transfer) Enhance stereo separation via phase subtraction
wrappage(samples, grain_size, density, ...) Granular texture with stereo spatial distribution

Spatial Effects

Function Description
spin(samples, rate, ...) Rotate audio around stereo field with optional doppler
rotor(samples, pitch_rate, amp_rate, ...) Dual-rotation modulation (pitch + amplitude interference)
flutter(samples, frequency, depth, ...) Spatial tremolo (loudness modulation alternating L/R)

Extended Granular

Function Description
grain_reorder(samples, mode, ...) Reorder detected grains (shuffle, reverse, rotate)
grain_rerhythm(samples, factor, ...) Change timing/rhythm of grains
grain_reverse(samples, ...) Reverse individual grains in place
grain_timewarp(samples, factor, ...) Time-stretch/compress grain spacing
grain_repitch(samples, semitones, ...) Pitch-shift grains with interpolation
grain_position(samples, spread, ...) Reposition grains in stereo field
grain_omit(samples, probability, ...) Probabilistically omit grains
grain_duplicate(samples, count, ...) Duplicate grains with variations

Pitch-Synchronous Operations (PSOW)

Function Description
psow_stretch(samples, stretch_factor, ...) Time-stretch while preserving pitch (PSOLA)
psow_grab(samples, time, duration, ...) Extract pitch-synchronous grains from position
psow_dupl(samples, repeat_count, ...) Duplicate grains for time-stretching
psow_interp(grain1, grain2, ...) Interpolate between two grains

FOF Extraction and Synthesis (FOFEX)

Function Description
fofex_extract(samples, time, ...) Extract single FOF (pitch-synchronous grain) at time
fofex_extract_all(samples, ...) Extract all FOFs to uniform-length bank
fofex_synth(fof_bank, duration, frequency, ...) Synthesize audio from FOFs at target pitch
fofex_repitch(samples, pitch_shift, ...) Repitch audio with optional formant preservation

Synthesis

Function Description
synth_wave(waveform, frequency, ...) Generate waveforms (sine, square, saw, ramp, triangle)
synth_noise(pink, amplitude, ...) Generate white or pink noise
synth_click(tempo, beats_per_bar, ...) Generate click/metronome track
synth_chord(midi_notes, ...) Synthesize chord from MIDI note list

Utility Functions

Function Description
gain_to_db(gain) Convert linear gain to decibels
db_to_gain(db) Convert decibels to linear gain
version() Get library version string

Low-level Functions

These work with explicit Context and Buffer objects:

Function Description
apply_gain(ctx, buf, gain, clip) Apply gain in-place
apply_gain_db(ctx, buf, db, clip) Apply dB gain in-place
apply_normalize(ctx, buf, target) Normalize in-place
apply_normalize_db(ctx, buf, target_db) Normalize to dB in-place
apply_phase_invert(ctx, buf) Invert phase in-place
get_peak(ctx, buf) Get peak level and position

Classes

  • Context - Processing context (holds error state)
  • Buffer - Audio buffer with buffer protocol support
    • Buffer.create(frames, channels, sample_rate) - Create new buffer
    • Supports indexing, len(), and memoryview

Constants

Processing flags:

  • FLAG_NONE - No processing flags
  • FLAG_CLIP - Clip output to [-1.0, 1.0]

Waveform types (for synth_wave):

  • WAVE_SINE - Sine wave
  • WAVE_SQUARE - Square wave
  • WAVE_SAW - Sawtooth wave
  • WAVE_RAMP - Ramp (reverse sawtooth) wave
  • WAVE_TRIANGLE - Triangle wave

Scramble modes (for scramble):

  • SCRAMBLE_SHUFFLE - Random shuffle
  • SCRAMBLE_REVERSE - Reverse order
  • SCRAMBLE_SIZE_UP - Sort by size (smallest first)
  • SCRAMBLE_SIZE_DOWN - Sort by size (largest first)
  • SCRAMBLE_LEVEL_UP - Sort by level (quietest first)
  • SCRAMBLE_LEVEL_DOWN - Sort by level (loudest first)

Exceptions

  • CDPError - Raised on processing errors

Architecture

Python                  cycdp (high-level API)
                            |
Cython                  _core.pyx  (zero-copy buffer protocol)
                            |
              +-------------+-------------+
              |                           |
C         libcdp                      cdp_lib
      (reimplemented             (shim-wrapped CDP8
       algorithms)                  algorithms)
          |                           |
          +------ cdp_shim / cdp_io_redirect ------+
                  (intercept sfsys I/O,
                   redirect to memory buffers)
                            |
                        CDP8 sources
                     (FFT, spectral core)

libcdp (projects/libcdp/src/) -- Core C library that reimplements CDP operations (buffer management, gain, channel ops, mixing, spatial, file I/O, utilities) to work directly on memory buffers.

cdp_lib (projects/libcdp/cdp_lib/) -- Wrapper modules that call into original CDP8 algorithm code. Each category (spectral, granular, morph, distortion, etc.) has its own .c/.h pair. These rely on the shim layer to function without file I/O.

cdp_shim / cdp_io_redirect (projects/libcdp/cdp_lib/cdp_shim.*, cdp_io_redirect.*) -- Intercept CDP's sfsys file operations (sndopenEx, fgetfbufEx, fputfbufEx, sndseekEx, etc.) and redirect them to memory buffers. This allows original CDP algorithms to run in-process without touching the filesystem, handling single and multi-input scenarios (e.g. morph, cross-synthesis) via slot-based buffer registration.

CDP8 sources (projects/cpd8/dev/) -- Upstream CDP8 code (FFT routines, spectral processing core, header definitions) compiled in and accessed through the shim layer.

Directory layout

cycdp/
  src/cycdp/
    __init__.py                 # Public exports
    __main__.py                 # Entry point for python3 -m cycdp
    cli.py                      # CLI: registry, parser, handlers
    _core.pyx                   # Cython bindings
    _core.pyi                   # Type stubs
    cdp_lib.pxd                 # Cython declarations for C layer
  projects/
    libcdp/
      include/
        cdp.h                   # Public C API
        cdp_error.h             # Error codes
        cdp_types.h             # Type definitions
      src/                      # Reimplemented core (buffer, gain, channel, ...)
      cdp_lib/
        cdp_lib.h/.c            # Main library entry point
        cdp_shim.h/.c           # Shim: sfsys replacement functions
        cdp_io_redirect.h/.c    # I/O redirect: slot-based buffer routing
        cdp_spectral.h/.c       # Spectral processing wrappers
        cdp_granular.h/.c       # Granular synthesis wrappers
        cdp_morph.h/.c          # Morphing wrappers
        cdp_distort.h/.c        # Distortion wrappers
        cdp_*.h/.c              # Other category wrappers
    cpd8/dev/                   # Upstream CDP8 sources (FFT, includes)
  tests/                        # Python tests
  demos/                        # Example scripts
  CMakeLists.txt                # Builds extension

Demos

The demos/ directory contains example scripts demonstrating cycdp usage.

Run All Demos

make demos        # Run all demos, output WAV files to build/
make demos-clean  # Remove generated WAV files

Synthesis Demos (01-07)

These generate test sounds programmatically and demonstrate the API:

python demos/01_basic_operations.py   # Buffers, gain, fades, panning, mixing
python demos/02_effects_and_processing.py  # Delay, reverb, modulation, filters
python demos/03_spectral_processing.py     # Blur, time stretch, pitch shift, freeze
python demos/04_granular_synthesis.py      # Brassage, wrappage, grain ops
python demos/05_pitch_synchronous.py       # PSOW, FOF, hover
python demos/06_creative_techniques.py     # Effect chains, recipes
python demos/07_morphing.py                # Morph, glide, cross-synthesis

FX Processing Demos (fx01-fx07)

CLI tools for processing real audio files:

# Basic usage
python demos/fx01_time_and_pitch.py input.wav -o output_dir/

# All FX demos:
python demos/fx01_time_and_pitch.py input.wav      # Time stretch, pitch shift
python demos/fx02_spectral_effects.py input.wav    # Blur, focus, fold, freeze
python demos/fx03_granular.py input.wav            # Brassage, wrappage, grains
python demos/fx04_reverb_delay_mod.py input.wav    # Reverb, delay, modulation
python demos/fx05_distortion_dynamics.py input.wav # Distortion, filters, dynamics
python demos/fx06_psow_fof.py input.wav            # PSOW, FOF, hover
python demos/fx07_creative_chains.py input.wav     # Complex effect chains

Each FX demo generates multiple output files showcasing different parameter settings.

Development

# Build
make build

# Run tests
make test

# Lint and format
make lint
make format

# Type check
make typecheck

# Full QA
make qa

# Build wheel
make wheel

# See all targets
make help

Adding New Operations

To add more CDP operations:

  1. Add C implementation to projects/libcdp/cdp_lib/<operation>.c
  2. Add function declarations to appropriate header in projects/libcdp/cdp_lib/
  3. Export from projects/libcdp/cdp_lib/cdp_lib.h
  4. Update CMakeLists.txt to include new source file
  5. Add Cython declarations to src/cycdp/cdp_lib.pxd
  6. Add Cython bindings to src/cycdp/_core.pyx
  7. Export from src/cycdp/__init__.py
  8. Add tests to tests/

License

LGPL-2.1-or-later (same as CDP)

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

cycdp-0.1.2.tar.gz (5.2 MB view details)

Uploaded Source

Built Distributions

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

cycdp-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (534.5 kB view details)

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

cycdp-0.1.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (510.3 kB view details)

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

cycdp-0.1.2-cp314-cp314-macosx_11_0_arm64.whl (399.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cycdp-0.1.2-cp314-cp314-macosx_10_15_x86_64.whl (460.9 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

cycdp-0.1.2-cp313-cp313-win_amd64.whl (429.1 kB view details)

Uploaded CPython 3.13Windows x86-64

cycdp-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (532.4 kB view details)

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

cycdp-0.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (503.4 kB view details)

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

cycdp-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (397.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cycdp-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl (459.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cycdp-0.1.2-cp312-cp312-win_amd64.whl (429.6 kB view details)

Uploaded CPython 3.12Windows x86-64

cycdp-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (534.0 kB view details)

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

cycdp-0.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (503.4 kB view details)

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

cycdp-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (398.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cycdp-0.1.2-cp312-cp312-macosx_10_13_x86_64.whl (460.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cycdp-0.1.2-cp311-cp311-win_amd64.whl (455.5 kB view details)

Uploaded CPython 3.11Windows x86-64

cycdp-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (548.2 kB view details)

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

cycdp-0.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (525.7 kB view details)

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

cycdp-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (398.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cycdp-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl (454.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cycdp-0.1.2-cp310-cp310-win_amd64.whl (455.9 kB view details)

Uploaded CPython 3.10Windows x86-64

cycdp-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (550.7 kB view details)

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

cycdp-0.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (525.5 kB view details)

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

cycdp-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (398.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cycdp-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl (454.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file cycdp-0.1.2.tar.gz.

File metadata

  • Download URL: cycdp-0.1.2.tar.gz
  • Upload date:
  • Size: 5.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for cycdp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7265b4f11bb4741edd29478628c4663c1b15aedb627d7142c9d94b3c5d4ecd3c
MD5 57390298e4a10fc3b3861a54bd7d3038
BLAKE2b-256 f0376a0d2655b4ebeec895b2056cca8717754a548221436b9ca36a26f1f990ff

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6b721598ffa4bf7379d067ce000b9bba2f56c2e1222d3c848775dc61a7fcbeb2
MD5 aa25b1657c038a2e97a0d81d9c470bd4
BLAKE2b-256 3b15fb10db18ef6cbd80d4365aedf968717e8a949a39c56ba986fdf83daeb69e

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 72ccf4d9c09fbfbc280f1fbd6ee12d2a7d2a2b90b536e22db31689fc6d71a802
MD5 4a7c178c0fc77fc15a2747d158681f46
BLAKE2b-256 5750b2089e0a59806ad27f6754728c9d46103a98256ed3c765915bdc408aeb76

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cee39d5a23f6385c65aa28904e9e6d06f882a1f3554091677c6b1d362aeb723a
MD5 fc134605d8db6c2124975bc095fee92f
BLAKE2b-256 339586322afea173f2fe6789a0e025055a864189b7bc5bac27449ffef39d3e07

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 461b9facd60d5ddf3ca60dca578f342204685334486c1d8c24ae7025c94305e4
MD5 fb97293dc122282eb6993c745bd72ae4
BLAKE2b-256 03bd55c522d2b87bf60e290fd270ff68627998a42a0d9dcb9a1628c804fe60e1

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cycdp-0.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 429.1 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 cycdp-0.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8091e8f25ee3136cd810b8dc6abd057f6d076dce86097de0f295cd0b901cf046
MD5 6e46fe22741dece6c9da5f403bca5bd6
BLAKE2b-256 0a2cf138fd6782d9d7f0c6d2896d1fdfd6cfcaaddab73518edf908c7f28c7e61

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eec8fe1dbf509c9e7a115a16c3124300f233d5096518f22ba22dc9c407351043
MD5 af03d831023e66a093435f487bb0d87e
BLAKE2b-256 7a54f726b409c6035952dbed68b602a1ac78aae520002a8d7777cbf532bc30b5

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 964e400947d4825cec198fac1fb5b775bc15faea117dac925fb7a81d42f36859
MD5 e56d8667cb0fb9a7bb2548678001d341
BLAKE2b-256 f0e546740042a2daf070ec4e4c94761656a7cb4c6ff1938f1371692e5291b7cc

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbcea6e0d569674652420f85c12f1eebdfec265d0d059bc0d38eed66b9e55f33
MD5 77dde2a5ce69e67eedd146b9e65bd269
BLAKE2b-256 871437a366e9f762fa0b931a1e15c506876bd433c70565d62e6170c8774fa0cc

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e49af9bb7a2ff75bc2753a9bcaa64886d09764aa46c4616b7e5cbaae5fd2a8bb
MD5 46e0cc92f1c61f7dce2d5aa7c6939119
BLAKE2b-256 4475b23023be7b18c44b84ae82b4798adbf18a4d23207e4dc6f2611e6b653e73

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cycdp-0.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 429.6 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 cycdp-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ec52e6628e581d6287ae36c2494277e5e690314527606f5be46ad9574a9c0abd
MD5 dbfe725ffc8fa2b144c80dc03946ea47
BLAKE2b-256 22dc8263a4fd14d46ee92ac73ef6a01ba70cbcf588b1fededd73f3b7cdc38710

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e559cb31a9de7573e7130954d79ce33c074fbb0b12917da9b6ce69d39d5ce2d
MD5 59e3f613cf9d43230b88b13d304c0f9e
BLAKE2b-256 8a16d2dce3d8d80f24571a8fff159c228abe48469813cba2220e39753c3d4083

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f8eac04617f5f860e34faa7b03f9906e9d23ed02897cc660305377d6e2220135
MD5 a864754b9acaea502f403d9bdea0e0b2
BLAKE2b-256 6b1405469109e300d4afb8177db6610ff4fe60e1eafdf22a9f4b12840ff51ffd

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da0c292176889a1bbfb6b9f475e005f1bd0c84e8022092c6eadfcd517c15a2dc
MD5 deddbe526364c9403a1c36e13d13a1ec
BLAKE2b-256 81ea9b94dcce68000e03105c3b358d4cbf168ba79828c638a358a910e3791537

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 99cbc0699acf4e529fdd036c8c2d9d15dc2b47611cba42244c8ba0e8afd6acde
MD5 511f8076e0a136219d369cce5a5cc211
BLAKE2b-256 5375982ba883f3799d075be0dfc4c5445e90863c83bb1f0eea595fc3c1675a20

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cycdp-0.1.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 455.5 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 cycdp-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4668277de4983cb5391162be3c8e45f52fab09bc31e460c4a5009c66bf3e6bec
MD5 e179ae20046b99714df23b5abaf227a7
BLAKE2b-256 56160568131640199625d80e74e5c5a0c37aa338a743cf3c4a0fba6588cc5781

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ac317bc67d0f60894cf0b93578ba1cfe549cbf747609a228089b7e9e867f62ef
MD5 8210d14f5c81c6b3771d2ab80e4530cd
BLAKE2b-256 ef97412d62f24cf72517df8a9d3cb874ea13b3b0e3055de9a3546c5ca103e489

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b3800605bf4e01e9b906993c0afa2c90de124a6b7c4c535d64d3402a34d4a40e
MD5 7f278350397a8dcbad2da3f92c0714b8
BLAKE2b-256 b21ac90eb53cca7b2de3b9fa13e6d8e08f66e8002bacc41b2d1bbf7e70d40805

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76f816d33e5ae6f9dc51aa245ff5dee3ad1c240ca5f75082644d6eaa6e2591b9
MD5 b2a94cce7fd9674232ffec544cc04f71
BLAKE2b-256 b20c997457372f22d1bedbb0f1ebb5d8d650be07648de121da9a1255c53f3bd2

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8eedbf426c8232ac28689ad3f5e4939d9765bc3074c6d28c94091bc491b6ea8e
MD5 f09f5c9e4c47506ff516f80a9bd9c50d
BLAKE2b-256 ba2162027fb401484ad87398bdb7cc14d3b2065ecef4261af8c80a55a005659c

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cycdp-0.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 455.9 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 cycdp-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c625ee38b93a8c01849841b350da4cf0de4ce90b9c54221265db954d5644c7ed
MD5 86f7299331eef7cd3a5a893d52a65c84
BLAKE2b-256 44b0655528f0dd4d9f157359b043a9171602671ee30ad19df839996c0c9d0d86

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bb69c6f96d194e8b290b65d3d27e420e1d48c7a62f5bac96634af67dc12e70f0
MD5 afe66f3730d7f291fe94597bbef28230
BLAKE2b-256 59cc94bb2dfb906aad8835c5e9c160235f320036ec8751a7b2214db03b683544

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 89ade36ef913a20ebd171069088d4e058e3790524e962d922fdb5211093b66f5
MD5 d47461e89f6c46a0e671e05b2cd3edcb
BLAKE2b-256 6eae5b31eb94a23aa7e769b67e7250639e8bde95ea957d086c9ef3246966c65e

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 82d8ca32f33dcc0a154894e14b480aae96b91e152d4a33c7ce039a7e7b26fb5b
MD5 b3013a69fe594379c14da00b566c8cc5
BLAKE2b-256 2ffdd1f7e34f08941772dbbf6d9a992a357cd9d37eae2e2bf9d791a2b277549a

See more details on using hashes here.

File details

Details for the file cycdp-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cycdp-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5f2feed0e23799b18af37b657fe2a37f3110b4954530114f44cdcb3475fbba74
MD5 cae4f74f04471e228663f40594ec5cfa
BLAKE2b-256 4a27953d394d6b565b3dfa1dd1b5d3ae926d67bee165f360a6f48b7c926e6f55

See more details on using hashes here.

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