Skip to main content

Python bindings for Dexed DX7 synthesizer

Project description

dexed-py

Python bindings for the Dexed DX7 synthesizer, with support for high-level patch editing, ML/JAX workflows, and low-level parameter arrays.

The Yamaha DX7 (1983) is the best-selling hardware synthesizer of all time. Its 6-operator FM synthesis engine produces a huge range of sounds — from electric pianos and basses to bells, pads, and metallic textures. dexed-py wraps the open-source Dexed engine so you can program, render, and manipulate DX7 patches entirely from Python.

Dexed is licensed under the GPL v3. The msfa component (acronym for music synthesizer for android, see src/msfa) stays on the Apache 2.0 license to be able to collaborate between projects.

Requirements

  • Python >= 3.11
  • Platforms: macOS, Linux, Windows
  • Runtime dependency: NumPy
  • Optional: JAX — for PyTree integration and jax.pure_callback workflows

Installation

pip install dexed-py

Quick Start

Using the Patch API

Patch is the human-friendly interface — parameters use native DX7 ranges and string names. Use it for sound design, sysex import/export, and interactive exploration.

from dexed import Patch, DexedSynth

patch = Patch(name="My Sound")
patch.algorithm = 15        # 0-31
patch.feedback = 5
patch.op[0].output_level = 99
patch.op[0].envelope.rates = [99, 85, 35, 50]
patch.op[0].envelope.levels = [99, 75, 0, 0]
patch.lfo.wave = "sine"

synth = DexedSynth(sample_rate=44100)
synth.load_patch(patch)
audio = synth.render(midi_note=60, velocity=100, note_duration=1.0, render_duration=1.5)

Loading DX7 Sysex Files

from dexed import Patch

# Load a 32-voice bank (4096-byte .syx file)
patches = Patch.load_bank("rom1a.syx")
for i, p in enumerate(patches[:5]):
    print(f"  {i}: {p.name.strip()} (algorithm {p.algorithm})")

# Save patches back to a bank file
Patch.save_to_bank("my_bank.syx", patches)

ML / JAX Workflow with Preset

Preset is the ML-native representation: a single (145,) float32 vector covering all synth state. Continuous parameters are normalized to [0, 1]; discrete parameters (algorithm, curves, etc.) are integer-valued. All fields are JAX PyTree data leaves — changing any value, including algorithm, never triggers JIT recompilation.

import numpy as np
from dexed import Patch, Preset, DexedSynth

# From a sysex bank
preset = Patch.load_bank("rom1a.syx")[0].to_preset()

# Or construct directly (continuous params normalized [0, 1])
preset = Preset(
    algorithm=15,
    feedback=0.5,
    op_output_level=np.full(6, 0.8, dtype=np.float32),
)

synth = DexedSynth()
synth.load_preset(preset)
audio = synth.render(midi_note=60, velocity=100)

# Flat array round-trip
arr     = preset.to_array()  # (145,) float32
preset2 = Preset.from_array(arr)

# Bulk storage: 100k presets ~ 55 MB
bank = np.stack([p.to_array() for p in presets])  # (N, 145)
np.save("bank.npy", bank)
presets = [Preset.from_array(row) for row in np.load("bank.npy")]

JAX pure_callback

import jax
from jax import numpy as jnp
from dexed import DexedSynth, Preset

SAMPLE_RATE = 44100
NOTE_DURATION = 0.5
RENDER_DURATION = 1.0
NUM_SAMPLES = int(SAMPLE_RATE * RENDER_DURATION)

synth = DexedSynth(sample_rate=SAMPLE_RATE)

def render_fn(preset):
    synth.load_preset(preset)
    return synth.render(midi_note=60, velocity=100,
                        note_duration=NOTE_DURATION, render_duration=RENDER_DURATION)

@jax.jit
def jitted_render(preset):
    return jax.pure_callback(
        render_fn, jax.ShapeDtypeStruct((NUM_SAMPLES,), jnp.float32), preset,
    )

audio = jitted_render(Preset(algorithm=0, feedback=0.5))

# Changing algorithm does NOT recompile — all fields are data leaves
audio2 = jitted_render(Preset(algorithm=15, feedback=0.3))

For flat-vector policies (Beta distribution over the 145-dim space):

_, treedef = jax.tree.flatten(Preset())  # universal — no meta fields

@jax.jit
def render_from_flat(flat_params):   # (145,) float32
    preset = jax.tree.unflatten(treedef, Preset.array_to_leaves(flat_params))
    return jax.pure_callback(render_fn, jax.ShapeDtypeStruct((NUM_SAMPLES,), jnp.float32), preset)

Algorithm Metadata

from dexed import algorithms, get_carriers, get_modulators, get_mod_matrix

alg = algorithms[15]
print(f"carriers: {alg.carriers}")
print(f"modulators: {alg.modulators}")
print(f"modulation matrix:\n{alg.mod_matrix}")   # 6x6 int8

get_carriers(31)   # [0, 1, 2, 3, 4, 5] — all parallel

Individual Operator Outputs

synth.load_patch(patch)
audio = synth.render_all_ops(midi_note=60)
# audio.shape = (7, T): channels 0-5 are operators 0-5, channel 6 is final mix

Feedback Normalization

By default, normalize_feedback is False, which preserves Dexed-authentic behavior: algorithms 3, 5, and 31 (DX7 algorithms 4, 6, 32) have reduced feedback strength, matching the original hardware. Set it to True for consistent feedback scaling across all 32 algorithms, which is useful when feedback should be comparable regardless of algorithm choice (e.g. in ML pipelines).

synth.normalize_feedback = True  # consistent across all 32 algorithms

Custom Operator Graphs

OperatorGraph lets you build arbitrary FM topologies — not limited to the 32 standard DX7 algorithms, and not limited to 6 operators.

from dexed import OperatorGraph

graph = OperatorGraph(num_ops=7)
for i in range(7):
    graph.op[i].output_level = 99
for i in range(6, 0, -1):
    graph.connect(i, i - 1)
graph.set_carriers([0])
graph.set_feedback(6, 6, level=7)

audio = graph.render(sample_rate=44100, midi_note=60, velocity=100,
                     note_duration=1.0, render_duration=1.5)

# From a modulation matrix
import numpy as np
mod_matrix = np.zeros((4, 4), dtype=np.float32)
mod_matrix[0, 1] = 1.0  # Op 1 modulates Op 0
graph = OperatorGraph.from_matrix(mod_matrix, carriers=[0], feedback={3: 0.5})

# From a standard DX7 algorithm (0-indexed)
graph = OperatorGraph.from_algorithm(15)

# Visualize the graph
print(graph.summary())
print(graph.to_ascii())
print(graph.to_mermaid())   # paste into any Mermaid renderer

API Reference

Patch

patch = Patch(name="My Sound")
patch.algorithm = 15          # 0-31
patch.feedback = 5            # 0-7
patch.osc_key_sync = True
patch.transpose = 24          # 0-48 (24 = C3)

patch.lfo.speed = 35          # 0-99
patch.lfo.delay = 0
patch.lfo.pitch_mod_depth = 0
patch.lfo.amp_mod_depth = 0
patch.lfo.sync = False
patch.lfo.wave = "sine"       # triangle, saw_down, saw_up, square, sine, s&h

patch.pitch_envelope.rates  = [99, 99, 99, 99]
patch.pitch_envelope.levels = [50, 50, 50, 50]

op = patch.op[0]              # 0-indexed: op[0] through op[5]
op.output_level = 99          # 0-99
op.frequency_coarse = 1       # 0-31
op.frequency_fine = 0         # 0-99
op.frequency_mode = 0         # 0=ratio, 1=fixed
op.detune = 7                 # 0-14 (7 = center)
op.velocity_sensitivity = 0   # 0-7
op.amp_mod_sensitivity = 0    # 0-3
op.rate_scaling = 0           # 0-7
op.breakpoint = 39            # 0-99
op.left_depth = 0             # 0-99
op.right_depth = 0            # 0-99
op.left_curve = "lin"         # lin, exp-, exp+, log
op.right_curve = "lin"
op.envelope.rates  = [99, 99, 99, 99]
op.envelope.levels = [99, 99, 99, 0]

Patch — Format Conversion

# Patch <-> Preset
preset = patch.to_preset()
patch  = preset.to_patch()
patch  = Preset.from_patch(patch)  # classmethod alternative

# Sysex (156 bytes unpacked, 128 bytes packed)
sysex  = patch.to_sysex()
patch  = Patch.from_sysex(sysex_bytes)
packed = patch.to_packed()
patch  = Patch.from_packed(packed_bytes)

# Bank (32-voice .syx files)
patches = Patch.load_bank("bank.syx")
Patch.save_to_bank("bank.syx", patches)

# Raw DX7 format (155 integers in native ranges)
raw   = patch.to_raw()
patch = Patch.from_raw(raw_params)

Preset

See docs/parameter-format.md for the full array layout and the per-operator interface.

from dexed import Preset
import numpy as np

preset = Preset(
    algorithm=15,                                           # 0-31
    feedback=0.71,                                          # 5/7
    osc_key_sync=1,                                         # 0 or 1
    lfo_sync=0,
    lfo_wave=4,                                             # 0-5 (sine)
    op_output_level=np.ones(6, dtype=np.float32),
    op_frequency_mode=np.zeros(6, dtype=np.int32),          # 0=ratio, 1=fixed
    op_left_curve=np.zeros(6, dtype=np.int32),              # 0-3
    op_right_curve=np.zeros(6, dtype=np.int32),
)

arr     = preset.to_array()       # (145,) float32
preset  = Preset.from_array(arr)

# Per-operator decomposition (useful for per-operator ML architectures)
gc = preset.global_continuous()   # (15,)   float32
gi = preset.global_ints()         # (4,)    int32
oc = preset.op_continuous()       # (6, 18) float32
oi = preset.op_ints()             # (6, 3)  int32
preset = Preset.from_operator_bundles(gc, gi, oc, oi)

DexedSynth

synth = DexedSynth(sample_rate=44100)

synth.load_patch(patch)    # from Patch
synth.load_preset(preset)  # from Preset

synth.algorithm            # read-only: currently loaded algorithm (0-31)
synth.normalize_feedback   # bool, read-write (default False)

audio = synth.render(midi_note=60, velocity=100,
                     note_duration=1.0, render_duration=1.5)
audio = synth.render_all_ops(midi_note=60)  # (7, T)

OperatorGraph

graph = OperatorGraph(num_ops=6)

# Connection API (all methods return self for chaining)
graph.connect(source, target, amount=1.0)
graph.disconnect(source, target)
graph.disconnect_all()
graph.set_carriers([0, 2])
graph.set_feedback(op, level=7)    # 0 disables, 1-7

# Query API
graph.mod_matrix       # NxN float32 (read-only copy)
graph.carriers         # List[int]
graph.modulators       # List[int]
graph.get_connections() # [(source, target, amount), ...]

# Visualization
graph.summary()        # human-readable text
graph.to_ascii()       # ASCII art
graph.to_mermaid()     # Mermaid diagram syntax

# Factory methods
OperatorGraph.from_algorithm(15)
OperatorGraph.from_matrix(mod_matrix, carriers=[0], feedback={5: 7})

# Rendering
audio = graph.render(sample_rate=44100, midi_note=60, velocity=100,
                     note_duration=1.0, render_duration=1.5)
audio = graph.render_all_ops(midi_note=60)  # (num_ops+1, T)

Building from Source

Requires a C++17 compiler and CMake >= 3.15.

git clone --recursive https://github.com/DBraun/dexed-py.git
cd dexed-py
pip install -e .
python -m pytest -v tests

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

dexed_py-0.2.0-cp314-cp314t-win_amd64.whl (114.8 kB view details)

Uploaded CPython 3.14tWindows x86-64

dexed_py-0.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (118.0 kB view details)

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

dexed_py-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl (103.3 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

dexed_py-0.2.0-cp314-cp314-win_amd64.whl (110.6 kB view details)

Uploaded CPython 3.14Windows x86-64

dexed_py-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (115.8 kB view details)

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

dexed_py-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (101.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

dexed_py-0.2.0-cp313-cp313-win_amd64.whl (108.2 kB view details)

Uploaded CPython 3.13Windows x86-64

dexed_py-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (115.8 kB view details)

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

dexed_py-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (101.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

dexed_py-0.2.0-cp312-cp312-win_amd64.whl (108.2 kB view details)

Uploaded CPython 3.12Windows x86-64

dexed_py-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (115.9 kB view details)

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

dexed_py-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (101.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dexed_py-0.2.0-cp311-cp311-win_amd64.whl (109.0 kB view details)

Uploaded CPython 3.11Windows x86-64

dexed_py-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (116.5 kB view details)

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

dexed_py-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (102.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file dexed_py-0.2.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: dexed_py-0.2.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 114.8 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dexed_py-0.2.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 3c2e9afa338174a3758500f18e3e431a8486cfc093a9a2a86291d95ec89b9c61
MD5 339183f292c7769f42a3133094aae053
BLAKE2b-256 34629bf602744eb865e8c1ddf7743827652fbcd97e76e87d8588eaf3cffdd45c

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp314-cp314t-win_amd64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dexed_py-0.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 80d9a4a95a2e57593b2a765eea1c7655f5fc04dee3bf83517de15079d44ff07c
MD5 c17c1f6a3d2e0c230c52e2b34e8b9184
BLAKE2b-256 15160779d108b815f6eb7f64d4178ff431bb2791fd55c833472aa6f8c52dd4ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dexed_py-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 885679bcaf3479b203221284ec791c4802a2a518788af28df3ef6022f7dbb287
MD5 5649d4f0039d17559bb6889559286dc6
BLAKE2b-256 8ee55a9783d72719538746b215173619c200487eb925ae1450eb1c651f4ef083

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: dexed_py-0.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 110.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dexed_py-0.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f420a56ef5c322a9e5d04c1e3f54e3246423b5e1c734792584b63ba12cc68f35
MD5 06bdf5a10b645c074adc54be5150580b
BLAKE2b-256 3988919c91d459f6e8a541e98f76fbab2e16d091addf77a91b7bbef308f0e19e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp314-cp314-win_amd64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2677810ad7acaca3b39854d2189fbe1536ae96686e9dd536af1854351a5e47b7
MD5 8beca7108bbe9c369cdbc476ece12eb8
BLAKE2b-256 b665315b73cf2ea25566cf6528207f74570eec7ec19a9d4660420ae958814734

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b964742b8b8023f44586a356ae82c22d07ad2cb084df51fd2a9ef0083d75380
MD5 4bfaef393b9539930908503925d48840
BLAKE2b-256 468a1976d270d5b0d4be45e31ddd3e8f33e3a1024d5a93bb8e13980d7f4a13b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: dexed_py-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 108.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dexed_py-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e5ea538b0bcc88e0c49bc9c4ca035b2335473629c4664d98a8ec1f7b8709d8e7
MD5 f6b70ec5a748515b3ad27e9630b7de3a
BLAKE2b-256 6fbcd8e4287425e87e7c236a579ea60e81381de94ea2b60114dd75f8160d8037

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp313-cp313-win_amd64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 22c46a4bf8a86bbbc1c0f4452e423de7893098f84c645feb14477b4c8509ea55
MD5 81a3b6491d855174d131fd0c27409785
BLAKE2b-256 9187dab2d8af42e470736f06b345be58e3a2b84a8f5279a1904045ec3a4e0260

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c77e080e318824508afe62cbb29c6a2403b780b56a8ceab8b8ad662e1fde975
MD5 c917a2b3682b8f3a861d5b59d92ed234
BLAKE2b-256 1f83f05650a00b62b15b60ff738d473a474ee0d22463aa725bc3711fae1d198f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: dexed_py-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 108.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dexed_py-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bb5788bda168104141166036e405e8157b307c973b426c05b91907b69c131b93
MD5 0eac0bb5c5d3552e561404429c98aa3c
BLAKE2b-256 d71bbde3d1d3bc9e8ea65ddf6aea2c2bfc13729c33f80a7bdea87e1514e3a408

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2417d52bffae7103d83daa271d4456267529499df4c185c6487e8a55a87bdcca
MD5 919e06b1e5cf70e83cdbc8baa04bbfb6
BLAKE2b-256 7c9b1fb07f8c21063167ec2069efa623f44ba5c6d736fda1d7b4330f70eec5c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 871be1f40eb2a160d92746135d592dc04ad44ef18ccb89d5fa3b71227e3f7242
MD5 2a067105b2cfde589f8ec5da7dfebc7d
BLAKE2b-256 8a482a726642b84c11f8d0435063c18c91c78dc07ccc1403728022aa9b9a0ebc

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: dexed_py-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 109.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dexed_py-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2678ab401a4a2bc5c6829396957089c22566514a00dea6c44a2911f53d88ee65
MD5 03e82ac8c55fd159082bc6cf1c8cf985
BLAKE2b-256 fc98542236eef66c7a6ef304639430007b4d50ba08b87738accc944b5707dd3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0d5cc464cc0e2320ec6bc46c4c99d6104fa85fcd0f1a51e0257d6e7b762318cd
MD5 8b22b8db996a69f0e8b8ff0cc12fcaf9
BLAKE2b-256 88fb1a845db694663b29da9eff7c91293f2b66f92c9a978c970de5bb12a65ed8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for dexed_py-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 283734b6e2baa9c2c694be4c329054b3a5ecff6a9a9cea99f0f848a2d8da10b1
MD5 127699c553c5a5e25d1087ce9c72e9bc
BLAKE2b-256 d9ffd1b2bb62814a81cefdbfb0891fbe3b53cc8e95e3abc36d3d1473f00b9fbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build.yml on DBraun/dexed-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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