Skip to main content

dexed-py

Python bindings for the Dexed DX7 synthesizer. Supports high-level patch editing, sysex import/export, and low-level parameter arrays.

Dexed is licensed under the GPL v3, and so is dexed-py. The msfa component (src/msfa) is Apache 2.0 licensed. The algorithm chart (docs/dx7_algorithms.svg) is MIT, so it can be reused outside a GPL context.

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 (a 4104-byte .syx bulk dump, or a raw 4096-byte payload)
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

The synth can be called non-differentiably from JIT-compiled JAX code via 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, get_feedback_edge,
)

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

feedback_edge is a (source, target) pair of operator indices. Most algorithms feed an operator back into itself, so source == target:

get_feedback_edge(0)    # (5, 5) — DX7 algorithm 1, op 6 into itself
get_feedback_edge(17)   # (2, 2) — DX7 algorithm 18, op 3 into itself

Two algorithms are different: their feedback wraps a whole chain rather than a single operator, so the pair has two distinct operators.

get_feedback_edge(3)    # (3, 5) — DX7 algorithm 4, op 4 back into op 6
get_feedback_edge(5)    # (4, 5) — DX7 algorithm 6, op 5 back into op 6

All indices are 0-based, so operator index i is DX7 operator i + 1.

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, 3): 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(source, target, level=7)   # 0 disables, 1-7
                                              # source == target for a self-loop

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

Editing the Python sources

The .py files are installed by CMake (install.components = ["python_modules"]), so a plain pip install -e . copies them into the environment instead of linking them. Imports keep resolving to that copy — edit dexed/algorithms.py and your tests go on exercising the version from install time. Ask for a rebuild on import to get a live checkout:

pip install scikit-build-core nanobind
pip install -e . --no-build-isolation \
  --config-settings=editable.rebuild=true \
  --config-settings=editable.verbose=false \
  --config-settings=build-dir="build/{wheel_tag}"

Now both Python and C++ edits take effect on the next import. build-dir is required by rebuild mode and is already covered by .gitignore; editable.verbose=false keeps CMake from printing on every import.

To confirm you have a live checkout rather than a copy:

python -c "import dexed; print(dexed.__version__)"   # edit dexed/version.py, rerun

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.3.0-cp314-cp314t-win_amd64.whl (120.2 kB view details)

Uploaded CPython 3.14tWindows x86-64

dexed_py-0.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (122.3 kB view details)

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

dexed_py-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl (107.5 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

dexed_py-0.3.0-cp314-cp314-win_amd64.whl (116.1 kB view details)

Uploaded CPython 3.14Windows x86-64

dexed_py-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (120.1 kB view details)

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

dexed_py-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (105.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

dexed_py-0.3.0-cp313-cp313-win_amd64.whl (113.6 kB view details)

Uploaded CPython 3.13Windows x86-64

dexed_py-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (120.2 kB view details)

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

dexed_py-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (105.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

dexed_py-0.3.0-cp312-cp312-win_amd64.whl (113.7 kB view details)

Uploaded CPython 3.12Windows x86-64

dexed_py-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (120.2 kB view details)

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

dexed_py-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (105.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dexed_py-0.3.0-cp311-cp311-win_amd64.whl (114.3 kB view details)

Uploaded CPython 3.11Windows x86-64

dexed_py-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (120.8 kB view details)

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

dexed_py-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (106.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for dexed_py-0.3.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 9aa31df1ebc5ba4d4831789888c0de1c58cccd3520ba91be63e1bf3db3162f67
MD5 7d217b76607593c15bd2594deb3d3c8a
BLAKE2b-256 cc2d270f2b0b55ee01129153d4ebd3e537fa5c0b47d47c7f0fc8a2a23052dd54

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6c20e56ac98e25ecf7d7c3a9053ac87fa03c2782330041cc38c4bb4b98584599
MD5 fd94251397a57a265163095210683478
BLAKE2b-256 2b2a5ddbd6fddfa830b2bdc9326165a949187a548f31b0d2c7538ba3d7c50a92

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d367aee2c87859a6861c5a749e4880d2dcac45b89214a1b887903844c630d924
MD5 4f2b00e00016b4229e3216040c95d297
BLAKE2b-256 1db2db8261e5765b7a3e6d21d664e9815eb062bc31004ac2eb886c33da72f845

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: dexed_py-0.3.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 116.1 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dexed_py-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d5c1e9bbd1272df91ca4c95762bb59cdae3c8004646129b2719c1e8e69d33dca
MD5 72d033289411389e56487175701ce7bc
BLAKE2b-256 a60d79e91e067ae365b90955885583a85559223179dfbfc17e433fbd8de57815

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fb134c804df996762796a4b3cbfd4c53495e603eb9d66f5438c3af409d0185a3
MD5 f27aeff068b04bd6dfe7ec70d4ae6085
BLAKE2b-256 e7c83e6f2b18916b699021173b9cb57b1fc47763a91fd9412fe3e17eda38f481

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4542ffabf4f396378ef3d9719b0c4439b5c194cffbca544f924824c2700d95e3
MD5 e85daa95b84d5cae14cba087f8cbd25b
BLAKE2b-256 f222442dfe65f38b7e00bb9adeec8408c379384e6f0dedd1481c5f0b2e7dd859

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: dexed_py-0.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 113.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dexed_py-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 91878e6b526e488d19027dd5392ca06ec2765eb9d1e73bffecdb7d00449e7f80
MD5 0bf37d5e0b0dfba5c10a88c0f6b0cba1
BLAKE2b-256 74ab94227b7847050e3e314156ff07963a876eb5c8ffa0c57dec1b251d69ec96

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 26e97a5dd461207b87bb5c6f9ec11d8ca98ca45e31d8e3eaffe7cc81f5c97be4
MD5 bcd2c5d351923b5d7868f3b2be0f1f15
BLAKE2b-256 3010697ae10f03e62bf59f390591be97194ed0dd4c05941c00a8832c2ef221dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 304d25b50fbfc5576004ca36465955eba84e0d2ec8a4fc7d8b519e77140def3f
MD5 7d27ddf0d7f5407bff67bfc6709588b4
BLAKE2b-256 dbb2ec308fb9e36d42801ed85eee15aa92c3613d7930e7773daea9c5ac82534f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: dexed_py-0.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 113.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dexed_py-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3c55ee31de219ef6b9bae265ce1884706a0bde6d7315b688e665f7f4c6f5d00e
MD5 129af474a1a330c67903d4f71e8e2df2
BLAKE2b-256 5fa8ec56be46047c9b233e3a893b77adafe5e4b7e6f1d7ac9bec10bc41393b56

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 df58bf6833b852b047abf960a7f3c194e65b257bfe0f049533221641bda28286
MD5 674e9a70478b4ae260c21852e15f8f60
BLAKE2b-256 d42edc1b6d6a05f2d3f77fb82f7c40ac77c20c85ad3d792a853ce912ffa793f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 368d4df241cbf758992b527a1f0e6bb149bde696893f7ff90cb974150ec8a64a
MD5 fe2a6a9dd090e5358a4206398af5ee97
BLAKE2b-256 f6636d0fa863453c9d1f2ec840b13c5158fa8bf00faa44ea87fc9e246f7f1541

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: dexed_py-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 114.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for dexed_py-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9b6629d6a7f8279e4a1461df0037250a6b591d0b0515eafbfa677180fa41154e
MD5 45c4453228bd1499295734dd68a9c298
BLAKE2b-256 152f999e6b58ee8637b3694f8d1b9c305d9907610d37fa0cd7155485e19dfb61

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10f6bacd8d3293bc35778fb2d55df2483015d8b79aa5b2450585bf8db4469fc3
MD5 ba78597ac8e48b26d22bcb071de9ca45
BLAKE2b-256 7f6297f3d3c7b545394ae44ee76c1871431a35d730b1fe3979571eff6edfd001

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dexed_py-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0fb0c29e03853dde0e98ca06e7f5d41bcad4403501be0990ad026ffca37e92b3
MD5 e2b53fcc85a36c1b15805890bd978f9c
BLAKE2b-256 af9c021f6d0883f880e132d2e1a92ad58aeeaa09a18ae9c1df0565e7aa0cedde

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexed_py-0.3.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.

Release history Release notifications | RSS feed

This release

0.3.0 This release

15 files

0.2.0

15 files

0.1.0

15 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