Density-matrix kernel density estimation for anomaly detection (C++ core).
Project description
libdmkde
A production-grade C++17 implementation of Density-Matrix Kernel Density Estimation for anomaly detection, with a streaming O(1)-per-sample update.
The algorithm is not new — it was introduced by Useche, González, et al. in Phys. Rev. A (2024). What this repository provides is the engineering that has been missing from the published research code: a single-header C++ library, a deterministic benchmark harness, reproducible numbers against a classical baseline, and an MIT-licensed build that a production team can adopt without untangling Jupyter notebooks.
Citation — please cite the original authors
If you use this library in academic work, cite the papers, not this repo:
@article{useche2024quantum,
author = {Useche, Diego H. and Gonz{\'a}lez, Fabio A. and others},
title = {Quantum density estimation with density matrices:
Application to quantum anomaly detection},
journal = {Physical Review A},
volume = {109},
pages = {032418},
year = {2024},
doi = {10.1103/PhysRevA.109.032418}
}
@misc{useche2022inqmad,
author = {Useche, Diego H. and others},
title = {INQMAD: Incremental Quantum Measurement Anomaly Detection},
year = {2022},
note = {arXiv:2210.05061}
}
@misc{gonzalez2022addmkde,
author = {Gonz{\'a}lez, Fabio A. and others},
title = {AD-DMKDE: Anomaly Detection through Density Matrices
and Fourier Features},
year = {2022},
note = {arXiv:2210.14796}
}
The reference Python notebooks live at
diegour1/QuantumAnomalyDetection,
diegour1/QDEMDE, and
Joaggi/lean-dmkde.
The general probabilistic-DL primitives are at
fagonzalezo/kdm.
Algorithm in one paragraph
Each input x ∈ R^d is embedded into R^D using Random Fourier Features
(Rahimi & Recht, 2007), which approximates a Gaussian kernel
k(x, y) = exp(-‖x - y‖² / 2σ²) as an inner product ⟨φ(x), φ(y)⟩.
Training builds the empirical density operator
ρ = (1/N) Σᵢ φ(xᵢ) φ(xᵢ)ᵀ (D × D, PSD, trace 1)
and the Born-rule score
s(x) = φ(x)ᵀ ρ φ(x) ∈ [0, 1]
estimates the density of x under the training distribution. Low s ⇒
anomalous. The streaming variant updates ρ via a rank-1 EMA:
ρ ← (1 - α) ρ + α · φ(x) φ(x)ᵀ
with O(D²) time and O(1) extra memory per sample.
Why this exists
The published research code is high-quality but not production-ready: all public implementations are Jupyter notebooks with single-digit star counts, none are on PyPI, none have a stable public API, and none have a streaming update path. As of May 2026:
- No package on PyPI, conda-forge, crates.io, or npm matches.
- No major quantum library (Qiskit Machine Learning, PennyLane, TensorFlow Quantum, Cirq) exposes a density-matrix anomaly detector.
- PyOD's 60+ detectors include nothing density-matrix based.
- Closed commercial offerings (e.g. Multiverse Singularity) use different algorithm families.
This library closes that gap for the C++ side of the stack.
Build
C++ (header-only)
make # builds benchmark + tests
make test # runs the unit tests
make bench # runs the reproducible benchmark
Requires g++ or clang++ with C++17. No external dependencies.
Python bindings
pip install . # builds the C++ extension and installs the dmkde package
python python/example.py # runs the end-to-end demo
Requires Python ≥ 3.9, pybind11, and numpy. Build uses setuptools +
Pybind11Extension; no system-wide installs needed.
Use
C++
#include "dmkde.hpp"
// 4 input dims, 256-D RFF embedding, Gaussian kernel bandwidth σ = 1.5.
dmkde::DMKDE model(/*input_dim=*/4, /*feature_dim=*/256, /*sigma=*/1.5);
std::vector<std::vector<double>> train = /* normal samples */;
model.fit(train);
double s = model.score(new_point.data()); // higher = more "normal"
model.update(drift_point.data(), /*alpha=*/0.01); // streaming EMA update
Python (sklearn-style)
import numpy as np
from dmkde import DMKDE, Mahalanobis, roc_auc
model = DMKDE(feature_dim=256, sigma=1.5).fit(X_train)
scores = model.score_samples(X_test) # numpy array of Born-rule scores
auc = roc_auc(model.score_samples(X_normal),
model.score_samples(X_anomaly))
model.partial_fit(X_drift, alpha=0.01) # streaming EMA update
model.calibrate(X_train, contamination=0.05)
preds = model.predict(X_test) # +1 inlier, -1 outlier
Benchmark results
Synthetic 4-D data, 400 training points, 300+300 test, D = 256, σ = 1.5,
seed = 42. Mahalanobis is included as a strong linear baseline.
| Scenario | DMKDE AUC | Mahalanobis AUC | Verdict |
|---|---|---|---|
| Gaussian normal | 1.000 | 1.000 | tied |
| Bimodal manifold (anomalies in gap) | 1.000 | 0.439 | DMKDE +0.56 AUC |
| Ring manifold (anomalies in hub) | 0.836 | 0.000 | DMKDE +0.84 AUC |
| Streaming (after 200 EMA updates) | 1.000 | n/a | converges |
Mahalanobis is mathematically optimal on Gaussian data and ties there. On any data where the "normal" class has higher-order structure (multi-modal, manifold, non-convex) Mahalanobis collapses — on the ring scenario it scores exactly 0.000 AUC because anomalies sit at the empirical mean. DMKDE captures the structure because RFF + density-matrix scoring is a kernelized density estimator, not a Gaussian-fit.
Roadmap
- pybind11 Python bindings with sklearn-style
fit/score_samples - PyOD plugin (
dmkde.pyod.DMKDEDetector) - Qiskit backend (
dmkde.qiskit_backend.QiskitDMKDE) — reproduces classical scores to floating-point precision via amplitude encoding + statevector estimator - Benchmarks vs sklearn baselines on Kaggle Credit Card Fraud +
KDDCup'99 — see
BENCHMARKS.md - cibuildwheel CI building wheels for Linux + macOS + Windows × CPython 3.9–3.13
- PyPI release (sdist + multi-platform wheels)
- Qiskit backend hardware execution (transpile + EstimatorV2 + shot budgeting, run on IBM QPU)
- Latent variant (LADDM autoencoder pre-stage, arXiv:2408.07623)
- NSL-KDD + IEEE-CIS Fraud + CICIDS-2018 benchmarks
Benchmarks
See BENCHMARKS.md for full results across five
detectors and five scenarios. Headline:
- KDDCup'99 intrusion — DMKDE wins (ROC 0.9965, PR 0.9807)
- Ring manifold — DMKDE (0.96) and LOF (0.99) are the only methods that don't collapse to 0.000 AUC
- Credit Card Fraud — DMKDE 0.95 ROC, behind Mahalanobis (0.96) because V1–V28 are PCA-pretreated to be approximately Gaussian
Qiskit backend
The score ⟨φ(x)|ρ|φ(x)⟩ is the expectation value of ρ in the state
|φ(x)⟩ — an actual quantum observable on a quantum state. The optional
Qiskit backend amplitude-encodes φ(x) on ⌈log₂ D⌉ qubits and evaluates
the same expectation via qiskit.quantum_info.Statevector:
from dmkde import DMKDE
from dmkde.qiskit_backend import QiskitDMKDE
model = DMKDE(feature_dim=16, sigma=1.5).fit(X_train) # D = 2^4
qmodel = QiskitDMKDE(model)
q_score = qmodel.score(x_test) # uses StatePreparation + statevector
c_score = model.score_samples(x_test[None, :])[0]
assert abs(q_score - c_score) < 1e-10 # matches to FP precision
print(qmodel.to_circuit(x_test).draw()) # the 4-qubit circuit
pip install qiskit to enable.
PyOD plugin
from dmkde.pyod import DMKDEDetector
det = DMKDEDetector(feature_dim=256, sigma=1.5, contamination=0.05).fit(X_train)
labels = det.predict(X_test) # 0 = inlier, 1 = outlier (PyOD convention)
scores = det.decision_function(X_test)
pip install pyod to enable.
Santander X Quantum AI Leap submission
SUBMISSION.md contains the full submission narrative
for the Santander X Global Challenge: Quantum AI Leap (June 30 2026
deadline).
License
MIT — see LICENSE. Provided AS IS with no warranty.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dmkde-0.1.0.tar.gz.
File metadata
- Download URL: dmkde-0.1.0.tar.gz
- Upload date:
- Size: 26.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b475c021bc43d8694debadba93230fbaed9d82b43df18b1343ac3587478b01ec
|
|
| MD5 |
9ba8b30eab809816b304951d06207d98
|
|
| BLAKE2b-256 |
69f0d95c3052204b824c142b1bb0bead99522444c14f5a48b4231d44bac98a47
|
File details
Details for the file dmkde-0.1.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 114.1 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
780d236ee22e282555fdc991e8ed400388df6c670cb8809dbb4f327e1d867847
|
|
| MD5 |
54e490b4e259b081786ee47e8d949ac8
|
|
| BLAKE2b-256 |
f1158630d8192487daf303fcadeebc4a890497ff849a43917ad1a89d9b29881f
|
File details
Details for the file dmkde-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 171.8 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
869ebd971d80d68b4af882b691e39c107cade7718996bb2274986921574a9c73
|
|
| MD5 |
338c632be4549f78fce9ea70b0a96601
|
|
| BLAKE2b-256 |
8aaaad20574840d3f6cc1cbcf8011df1803037ed30a5c2adbe83267dece21d10
|
File details
Details for the file dmkde-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 123.1 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c97a650747494ad18a0346c753f8990f0e882cb9b3a59982256fed29d5c00767
|
|
| MD5 |
1fa0a4ac96de03b927cfaf6c8ca5973b
|
|
| BLAKE2b-256 |
d542e8cc55ca24f05c299b002c1e3c27121a4de66f2f9b67c67a61c1816abf7a
|
File details
Details for the file dmkde-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 130.1 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc406a4c6b28884466e7b63d8e2bf15e770ed31fdabf77e4d044b65597d65f86
|
|
| MD5 |
d5e735254a0090578d125fb6df67a80d
|
|
| BLAKE2b-256 |
b4023ee3856d489e77dce1b2840a181451bc712f067df56f2f744a26d17c0b23
|
File details
Details for the file dmkde-0.1.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 114.0 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8a8db85a50308c5a2c7fc252fe80b1a7cb3dc0a298bb39441e4a8d742946c0f
|
|
| MD5 |
5af634532195b78d81200f5b39c7fa99
|
|
| BLAKE2b-256 |
7cca3e33765bd8f8caa8cdd6a08adbdfdb9b489e6975d1db08550443ff396b6b
|
File details
Details for the file dmkde-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 171.7 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43bfb0d603b195ded4048866da753e309a23309cf3c02b537d57a3502fc8b758
|
|
| MD5 |
267a92b55674e4bf5e36d7d168e211ee
|
|
| BLAKE2b-256 |
a1aea928a909ae091a361281e1d987a5c99a960e49ae11816cb832f32cc04d40
|
File details
Details for the file dmkde-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 123.1 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4dcd100d377486c21b3184d8d540fef7adf86568990c9929c6a7b6a1bc0e4f0f
|
|
| MD5 |
e89ccad7c300279f29808a01a36a70ee
|
|
| BLAKE2b-256 |
d57894bf0cd39aa0b92aefd7b34b860bad4ab5ff2d1edf78444f75eec890128d
|
File details
Details for the file dmkde-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 130.1 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a56e387acd9d2a0d4eec3688a4b55eec259d5425b5690ddf54423c68b9bfab5
|
|
| MD5 |
3fd6c9ab76b8615d2935f9eca44fa957
|
|
| BLAKE2b-256 |
a2f71f7baae5f6056fbce573ce4faae19e6c8190c1f6cd13d56a610dfd9e9de1
|
File details
Details for the file dmkde-0.1.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 112.2 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6f0eb2a385ac1a5271552fb4813eccb59430fdcfd35493c68809ec8d705151c
|
|
| MD5 |
0305cb3309cf16d6e8bf132d43878745
|
|
| BLAKE2b-256 |
9bfb2d6b0e2ca61804a57e5053bc85ef4b1b0c782b1ca3145e27b72d183d2763
|
File details
Details for the file dmkde-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 172.3 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
102e6b850b49478d5b274f4c017b611b04dd62f4fd5c75462c2c4cde37195a68
|
|
| MD5 |
9f26ed9184bc279ede6c50c6fe48894b
|
|
| BLAKE2b-256 |
577e81fcfdd90fc952b1f6e184d08cd79eec9b258088f2dcf60f77c07b4f4256
|
File details
Details for the file dmkde-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 121.7 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbed6888c80ace94e150d69970e8703bd30453dabc37439057a4d71beb682da9
|
|
| MD5 |
7a5f476c4545e15d28e3cbcd760e4f70
|
|
| BLAKE2b-256 |
a5debbb6db8c54d342ef57bd9ba7ef8eeb45e1b6107409a4ff8c03d4ed0361ba
|
File details
Details for the file dmkde-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 128.5 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e76794f0bdf3d2f89ec1d90cb4518746b8044a4ae9c4cbda5537a249fc03d48a
|
|
| MD5 |
cc799fd3b38e025127b66246a1c429be
|
|
| BLAKE2b-256 |
071dae8f972b0f91af27d2ff978429d0ef7cd7b09708c9f59e9c211057a1ffac
|
File details
Details for the file dmkde-0.1.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 111.6 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
899d125889a43e101a875e5deda0531e308a2492057cbe6c0a07c447b5f7e9f4
|
|
| MD5 |
27fd930a6453e0270dac3e611b18ee29
|
|
| BLAKE2b-256 |
ec67d6bb5b473fbc7ecdc89acc438fe08fab9e39e62e1af91fe3c009fe463ce5
|
File details
Details for the file dmkde-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 171.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f232abf0f5007fec6561a9fa70876746d1d78a6fe26425ec73540a417ba2e0d
|
|
| MD5 |
00621814885a5c1cd34e672dd80da7c2
|
|
| BLAKE2b-256 |
82f8b00976eba176361aa2a4ddd9e15edc77c07f61f1b3695d970d9a1e83c0a8
|
File details
Details for the file dmkde-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 120.7 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9a9ddffef3c41dcda240f5fe935691a7bffa6d87dc072e8ae2e9501e5a77024
|
|
| MD5 |
c9ed4d2cc815ac11b27ab5c085ce4444
|
|
| BLAKE2b-256 |
eda85fd0264ea0b1b7f4f7c341eefb0aa097c5c58e63b08424c6d2ecab0a6312
|
File details
Details for the file dmkde-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 127.2 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a5854849a6baaccddca97b7a0757db673351c45eaaa4d542a94fae93e08e6b5
|
|
| MD5 |
ba4699ab1a66db603f7c4968c1079963
|
|
| BLAKE2b-256 |
7b859374afb3dc694ce1d9f8da63908d25e72c0dabdc335e2f429544b0e516d8
|
File details
Details for the file dmkde-0.1.0-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 113.3 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d29af3008551e97f7bff2a286a3e62985ffe5a48dfc17a3133b2691d7916e70
|
|
| MD5 |
555044e9c9d825f96e63e61a9496116a
|
|
| BLAKE2b-256 |
e2f7adb778818145fd44cf358bbc823e1fc5b67386853048edbcfeda3153df9a
|
File details
Details for the file dmkde-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 171.4 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15e02da538d950d515c392f65d2ab35ab8c30eeb2ea11d672ad2acdb24037842
|
|
| MD5 |
82da682cfa29748a00123cbfce8a5ca1
|
|
| BLAKE2b-256 |
73823f8a1c0640910efad01fe0fa08445c9c12d0fedb860462753e970d5c3305
|
File details
Details for the file dmkde-0.1.0-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 120.8 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1ebde6843c082f1e8e299c8c49825c807ab35a37623006a6c39685adaa944a1
|
|
| MD5 |
b838b73dc43d21607911c4d27ddf38e2
|
|
| BLAKE2b-256 |
6e408af9cc559cc4e5fcad6bd5e118d7e5a43d72d25b44a1860497326a5a7280
|
File details
Details for the file dmkde-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl.
File metadata
- Download URL: dmkde-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl
- Upload date:
- Size: 127.3 kB
- Tags: CPython 3.9, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6080fe5ed937195ff546d1fe4cf26d4ecd17bcfea873b59c3bc51025ea1da957
|
|
| MD5 |
5e794f7ed9a24f0b7f5ec25c5f001486
|
|
| BLAKE2b-256 |
57a0405f2c0b4d12508503b532b9fae6391887593029e851159e3a76ba641666
|