Skip to main content

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).

Concurrency

Processing calls release the GIL, so they run in parallel across threads:

import concurrent.futures as cf
import cycdp

buf = cycdp.read_file("input.wav")

with cf.ThreadPoolExecutor(max_workers=4) as pool:
    results = list(pool.map(lambda f: cycdp.time_stretch(buf, f),
                            [1.5, 2.0, 2.5, 3.0]))

Each thread gets its own library context, so seeded operations stay reproducible under contention and error messages do not interleave. Buffers are owned by the caller; passing the same input Buffer to concurrent operations is safe because each call copies it before processing.

Verified with ThreadSanitizer over a mixed multi-threaded workload. On a four-core machine, eight time_stretch calls run about 3.4x faster across four threads than sequentially.

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, 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)

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.2.0.tar.gz (5.3 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.2.0-cp314-cp314-win_amd64.whl (433.5 kB view details)

Uploaded CPython 3.14Windows x86-64

cycdp-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (535.9 kB view details)

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

cycdp-0.2.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (512.5 kB view details)

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

cycdp-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (415.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cycdp-0.2.0-cp314-cp314-macosx_10_15_x86_64.whl (466.4 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

cycdp-0.2.0-cp313-cp313-win_amd64.whl (423.1 kB view details)

Uploaded CPython 3.13Windows x86-64

cycdp-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (532.8 kB view details)

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

cycdp-0.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (507.2 kB view details)

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

cycdp-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (412.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cycdp-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl (465.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cycdp-0.2.0-cp312-cp312-win_amd64.whl (424.3 kB view details)

Uploaded CPython 3.12Windows x86-64

cycdp-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (535.4 kB view details)

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

cycdp-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (508.2 kB view details)

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

cycdp-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (413.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cycdp-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl (466.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cycdp-0.2.0-cp311-cp311-win_amd64.whl (427.1 kB view details)

Uploaded CPython 3.11Windows x86-64

cycdp-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (548.8 kB view details)

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

cycdp-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (530.5 kB view details)

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

cycdp-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (412.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cycdp-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl (460.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cycdp-0.2.0-cp310-cp310-win_amd64.whl (426.5 kB view details)

Uploaded CPython 3.10Windows x86-64

cycdp-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (551.2 kB view details)

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

cycdp-0.2.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (529.2 kB view details)

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

cycdp-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (412.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cycdp-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl (460.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for cycdp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0473e2713aae42bc5800bc0119fa6290ec268e2f9783d16f94c6b61c41c53108
MD5 a0b76dfb37c1e1030c4770d715f21991
BLAKE2b-256 75e7bf96dacc4d2db52b5c019188ed4d2d4312d490937c126bf25fb444ef2a9b

See more details on using hashes here.

File details

Details for the file cycdp-0.2.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cycdp-0.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 433.5 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 cycdp-0.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7d34b5cb07afabeeb4e386b25c8c8007d79f263e5592600d7d66356a220947f3
MD5 0d9245ec3e0ea4803214711046feac87
BLAKE2b-256 b18664dd7727ab7f7e6ca187a3792f1ddbbfc5074ac5483e8ec95315fabc2c0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5c1c0b5371635bb90424cdc8d574916467cf8af8c6b50566d367cc2c0e31b6d
MD5 5f2ad17f7d4801f02a778593650cb7a1
BLAKE2b-256 67f60657f12c040fbba8c551fd7fd6d4722c2977875341195fe189a95769bb74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f2a26ef7779af5572c8086030c4b925a0150f6fd2604e42db83f1e084269b86a
MD5 aea2323fc58238f36cb747976f9778a5
BLAKE2b-256 9d58fc2ac4604628e57d722e325186691a06b9a872551e970660c2a086264917

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81273473df8f35a772e26c52414a7ccb9cb76b091e8bd06ca2a7b8b5e5b623dc
MD5 5bf865485592bf266c3538f10fa9c91a
BLAKE2b-256 123efd946c41f2149073284b0206dc03cb561eba77d1251679ebd18f1f24979f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 edfee8c74f6a98682ea3e93edf0d418fcd45edde9a5b4f3848b4a9ea9922c46c
MD5 4a3c6adc4ca6cd4b1f6833d5e4efb2a4
BLAKE2b-256 68b458408f387207c796b8b5338a105c802fff93c7de2c2a2177eea5afcc20e8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cycdp-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 423.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.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ccfb81102a263817cbf98a0e8bdedb929160c7302fbea94e8be5289eb7bdd622
MD5 6c3a7ec263fa821c26f5106590c61cdf
BLAKE2b-256 1f4040264484935ca93486809a446c13dd08bf855a2effd15483d9977d4cbb42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 77442f77404462294a0636a179281b3667e4d77ab3911335ebe79a8fff13c912
MD5 371cd530be1b8fe71b29f8e4b6879f0d
BLAKE2b-256 7a054f397fd2429502be99df7fa44edefe8d8c63f753d602edf884e6294d6c47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aa806ac5e7379cacf9e73bfb92156bcb2c06e2979ef5f85d73881037b348f2ba
MD5 ff9365dda0bbe699c5bed23f401aeec9
BLAKE2b-256 ca90d278a39f64ecf6e9e389c37cbcd0ef183c25756fa49b226064fcb3e57236

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a1cb84d38592c02d119d805f5cce27c11ab0ae75a46afff472eb63962055f051
MD5 efb6195a57641f64fd7d72bc5a49a24d
BLAKE2b-256 bdccb862a6eb64dcd04ff5f2c49c26da6fea6077d0e76ac24ca12f82d6050ab2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 37a294817fd0dcd57ea4f912883626ae0167753551421f797a72362b2046558c
MD5 28e505484170cc488541aeee4300458d
BLAKE2b-256 9a1b91e3f02ce888eeb23931eeb2cc77af916377bcc12d9c0bb8a42c59281438

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cycdp-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 424.3 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.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6497b6049ee1045b0bd79233fe6eed90a955f1ed7a44484fec548b1229650874
MD5 8d3b86d2b78591b88eae66f5824e0187
BLAKE2b-256 bd80bc611e57cd6e1cec18baffbdfe2fc21ce723a132558ad0c3a51e5d431e14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 581dee4d52eff11d3a744214d8db93a1d3d9b4840360b1b412ec9001135ff490
MD5 88ffcb5f47414cf5361a3c478c871d95
BLAKE2b-256 eb29b19248933ae00dc5a16e9e2f987578ec012af90b87a46d324b3ed3fd79de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c8af797015b67b9a97993bb7ae5049796bdc1f1aa966fc18672cd9842fa321e5
MD5 d3601e9d7dfc7dd4c1e5fe2753e702b1
BLAKE2b-256 127b3933207a868d7aa812b63b2ff07816a60e8ac57ce8771818a8df6cb0e49c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7a4fc3caf3e8594353ffb11beafb4c2141c3c99fe490a4d3540d11e45dc8a80d
MD5 d20e706bd9c78ec58ef66e67631bf634
BLAKE2b-256 bfbf6757ab2a30706adf27feab11929684a440621fc63f390762ab5b8851f9c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0cd8f5724ba688814e9b4bb36f85d9ef243a22b016658de259af36e8abf5d690
MD5 7901f3cf76c81e24cafccc06c6e62117
BLAKE2b-256 932dd4087d786d6ef27f742bd403b9068133d1788b38b181a5c2f4f485c5648b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cycdp-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 427.1 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.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c3c253e7aa48dd57add90176b63013a16f18efa7f1cd5f08242811b51033f7f1
MD5 6be08ff87f947aa26f4b617f1b248e2e
BLAKE2b-256 51af123e733bf135908a7b425aba53673c01ff10b302cf9844aa2e9398ef84ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 394c0bcdf0520d615c273ecee56b353f71029ca9989b069516732f071a5d4ce6
MD5 9460e06f3b37c42b87c38b283d7e999c
BLAKE2b-256 dfebcc2299caa9f3d99909acd6ef6f121ab67d63b0e3b0d9d29b79812dea5a9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 54edb2a65a3b4968d1261559df769da68ed8c24afd2b469d6bc84d3159e5f731
MD5 db9276bb7dd338afcc368cc248ce85cb
BLAKE2b-256 1d0a46d7d64b8b2cdd3397826c61f3c8246e58bba5536e5e9b4f1f57a6125253

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6f9e616ef9e49c3ac31d06e38de795b1f7cae3ecddf7ffd8322bfc576aac982
MD5 7f0bb613a547a206b1cb7a88e4ad8a1a
BLAKE2b-256 1b6a7a5d11b71f9594e8a89abdb0b70100231f7b27aaadd3145c88b2d627c174

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 494cd1930ccbec2166990ed3b9c82b21843ae2714c213f445352cc6612c1e204
MD5 c0158a2aec7078d11504ed30224bd498
BLAKE2b-256 b82c107625b1bb8e5cdb7876809f453c7a3b89ebc425968808523af2ca6a07da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cycdp-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 426.5 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.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 268360101a65419953383839a060b950f34941a8008bd8ce879d28b5059a5a90
MD5 831b84f588e913edf5bd1d4797cba770
BLAKE2b-256 044aa35631c0d6f8a92a2c307239c18cb7e03fc28ee02a1c47183c0e1a8d0165

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1c5c837c9e099b90eea397927a0295fd5129809d0b9c5be0f44db48f3af3358b
MD5 ae14d10e1620e475b63be19bd6e2342f
BLAKE2b-256 8793bf7bfb42bf6f6c2ded9982e51208a6071d662db7d165acd4ad9e9ac308a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd5e762a0a1448a260ea43331e691921ace37a434117fb01b152c6d1fd15e866
MD5 4734574dc78152d44512e157a1bea6f1
BLAKE2b-256 815f8e7ff7b9759881c3b0573ff4536019680644021317b917deb5b15c281634

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1cefc4578e931179e372e53f2d2bb3da70e281b649a3f65e51f6d6f2aea9edb
MD5 7f80abab430b9a5c940445dedbea6fd4
BLAKE2b-256 1bddd94403ca8f5b11590bef07592f7ac736b5a72eedfa2b56f42ebc38fb063c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cycdp-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d419dc535aa8e78a5957305d0d4744f362da00e24b9bbfabc4a339be74d4edc1
MD5 3a1e37b47920a088f88cd29f9d93f27f
BLAKE2b-256 f970b7c634cbff65c6825e301c21ccb2c93703a917c9f45a0360f6a9a586504c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

26 files

This release

0.2.0 This release

26 files

0.1.2

25 files

0.1.1

30 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