Skip to main content

MDescriptor

MDescriptor is a batch-oriented periodic atomic-descriptor library. The numerical kernels are implemented in C++17 and all Python descriptors share one input/result/lifecycle contract.

MDescriptor 是面向批量周期结构的原子描述符库。数值核心使用 C++17;所有 Python 描述符共享统一的输入、结果和生命周期契约。

Layout / 布局

The public namespace is intentionally small:

src/mdescriptor/             installable package
src/mdescriptor/core/         Descriptor, StructureBatch, DescriptorResult
src/mdescriptor/descriptors/
  standalone/                 no model required (ACE, matrices/, many_body/, local/, rotational/)
  model_backed/               graph seam plus NEP, DPA4, DPA4C
src/mdescriptor/models/assets/ packaged, hash-verified model resources
tests/golden/              descriptor-owned, benchmark-independent accuracy fixtures
docs/numerical-baselines.md  static-golden and external-runtime oracle inventory
scripts/benchmarking/      controlled local benchmark runners
benchmarks/                local benchmark snapshots (ignored except for tracked oracles)
benchmarks/_legacy_oracles/ pinned independent upstream oracle adapters

standalone descriptors never require a model file. model_backed descriptors always resolve a model resource (a packaged default or an explicit model= path). There are no network downloads or implicit model discovery.

standalone 中的描述符不需要模型文件;model_backed 中的 NEP、DPA4、DPA4C 始终解析模型资源(内置默认模型或显式 model= 路径)。不会联网下载,也不会 扫描目录自动发现模型。

Installation / 安装

The base package requires Python 3.10+, NumPy and array-api-compat. ASE is optional and is only needed for StructureBatch.from_ase or direct ASE input. GUI/native frame records can use StructureBatch.from_frames without ASE. Sparse output is provided as SciPy CSR by the optional sparse extra.

基础包需要 Python 3.10+、NumPy 和 array-api-compat。ASE 只在使用 StructureBatch.from_ase 或直接传入 ASE 对象时需要;稀疏输出由可选的 sparse extra 提供。GUI/原生帧记录可使用 StructureBatch.from_frames,不依赖 ASE。

python -m pip install .
python -m pip install ".[ase]"
python -m pip install ".[sparse]"

DPA4 and DPA4C also expose CUDA execution through the optional plugin. Their official .pt checkpoints are parsed by the bundled restricted NumPy reader without importing or installing Torch; the supported default graphs run through the C++17/OpenMP backend or the custom CUDA backend, while specialised configurations retain the NumPy fallback. No network model download is performed.

The base wheel keeps the CPU backend as its default. All 28 built-in descriptors advertise both CPU and CUDA in the registry; the CUDA path is an opt-in plugin and never silently falls back to CPU. The CUDA-capable set includes the local, matrix, many-body, rotational, NEP, DPA4, and DPA4C families listed in docs/descriptor-inventory.md:

cmake -S . -B build-cuda \
  -DMDESCRIPTOR_BUILD_CUDA=ON \
  -DCMAKE_CUDA_ARCHITECTURES=75
cmake --build build-cuda
cmake --install build-cuda --prefix /path/to/your/environment

The CUDA target requires a CUDA toolkit and an explicit architecture list. Without the plugin or a usable CUDA driver, a CUDA computation reports the structured device_unavailable error.

基础 wheel 默认使用 CPU。注册表中的 28 个内置描述符全部声明同时支持 CPU 和 CUDA,覆盖 local、matrix、many-body、rotational、NEP、DPA4 和 DPA4C 家族,完整清单见 docs/descriptor-inventory.md。CUDA 是显式启用的 独立插件目标,没有插件或不可用驱动时不会静默回退,而是返回结构化的 device_unavailable 错误。

For end-user distribution, the repository also provides an independent MDescriptor-CUDA wheel. It contains the CUDA extension and the CUDA user-space CUDA runtime library, while the host NVIDIA driver remains required. The target machine does not need a full CUDA Toolkit:

python -m build packaging/cuda --wheel --outdir dist \
  -Ccmake.define.CMAKE_CUDA_ARCHITECTURES=75
python -m pip install MDescriptor dist/mdescriptor_cuda-*.whl

The CUDA wheel currently targets Linux and must be built with an architecture list covering the deployment GPUs. The convenience wrapper is:

python scripts/build_cuda_wheel.py --arch 75

面向最终用户发布时,仓库还提供独立的 MDescriptor-CUDA wheel。该 wheel 包含 CUDA 插件和 CUDA 用户态 Runtime,宿主机仍必须安装 NVIDIA 驱动, 但目标机不需要完整 CUDA Toolkit。当前 wheel 仅面向 Linux,并且构建时必须 显式指定目标 GPU 架构。

可选的外部数值对照固定使用 deepmd-kit==3.2.0

python -m pip install ".[reference-deepmd]"
python -m pytest -m deepmd tests/external_reference/test_deepmd.py

该对照同时覆盖周期和非周期输入;非周期帧按 DeepMD 的 cells=None 语义传入。 tests/golden/dpa4* 的 expected output(包括非周期行)也由该外部 evaluator 生成, manifest 记录了 evaluator 脚本、模型 hash 和 deepmd-kit 版本;运行时仍只加载已 提交的 NPZ,不要求安装 DeepMD。

所有 28 个描述符都登记在数值基线清单,并都有外部 静态 golden:7 个沿用独立上游/source NPZ,另外 21 个在对应目录的 external_manifest.json 中保存固定版本 provider 生成的数值。默认测试只依赖提交的 fixture;外部 provider 缺失或版本漂移会使 reference job 失败,而不会静默跳过。

性能说明:DPA4 native 路径现在使用固定大小分块的 SGEMM、可复用的计算工作区, 并只为每条边计算一次 attention logit;DPA4C 的类型对 MLP 采用每个 calculator 实例独立的惰性缓存。OpenBLAS 仅作为构建依赖,官方 wheel 会内置 prefixed 的 OpenBLAS 及其运行时闭包和许可文件,安装后不需要 scipy-openblas32、Torch 或其他新增运行时依赖。大批量独立结构按结构分块消费,以控制峰值内存。

本地可复现实测(脚本默认 2 次预热、5 次稳态;基线为提交 334e159)可用 以下命令生成完整 JSON 报告;报告同时记录构造、首次调用、p95、线程扫描、RSS 和 profiling 构建中的私有阶段计时:

python scripts/benchmark_dpa_native.py \
  --descriptor DPA4 --dataset carbon_dataset_pbc --limit-frames 50 \
  --threads 1,4,32 --output /tmp/dpa4-native.json

当前 Linux 主机的候选测量中,DPA4 的 41 原子小批 median 约为 0.47 s(1 线程)和 0.30 s(32 线程);50 帧/3200 原子单次吞吐约为 57.8 s(1 线程) 和 21.6 s(32 线程)。这些数字用于同机 A/B 门禁,不代表跨机器性能保证。

Input contract / 输入契约

import numpy as np
from mdescriptor import StructureBatch

batch = StructureBatch(
    numbers=np.array([1, 8], dtype=np.int32),
    positions=np.array([[0., 0., 0.], [1., 0., 0.]]),
    cells=np.eye(3, dtype=np.float64)[None] * 12,
    pbc=np.ones((1, 3), dtype=np.int32),
    offsets=np.array([0, 2], dtype=np.int64),
    ids=("water-0",),
)

StructureBatch takes an owned, read-only snapshot of its contiguous arrays and validates integer fields before narrowing, finite positions/cells, nonsingular cells, positive atomic numbers, monotonic offsets and fully periodic pbc == (1, 1, 1). ASE conversion is available through StructureBatch.from_ase(...); GUI-style mappings or objects exposing numbers, positions, cell, pbc and id can use StructureBatch.from_frames(...).

Descriptor API / 描述符 API

Algorithm classes live under mdescriptor.descriptors and use canonical names:

from mdescriptor.descriptors import SOAP

soap = SOAP(species=[1, 8], r_cut=4.5, n_max=4, l_max=3, average="off")
result = soap.compute(batch)

assert result.level == "atom"
assert result.values.shape == (batch.atoms, soap.feature_count)
assert len(result.labels) == result.values.shape[1]

with SOAP(species=[1, 8], r_cut=4.5, n_max=2, l_max=2) as descriptor:
    result = descriptor.compute(batch)

ACE (Atomic Cluster Expansion) is available as a standalone atom-level descriptor. Its public options mirror the standard ACE1.jl Utils.rpi_basis path and accept atomic numbers or chemical symbols:

from mdescriptor.descriptors import ACE

ace = ACE(species=["H", "O"], N=3, maxdeg=8, rcut=5.0)
result = ace.compute(batch)

Every descriptor has idempotent close(), a closed property and synchronous context-manager support. Computing after close raises ClosedDescriptorError. Instances are synchronous and not promised to be thread-safe.

每个描述符都提供幂等 close()closed 属性和同步上下文管理器;关闭后计算 会抛出 ClosedDescriptorError。实例是同步的,不承诺线程安全。

DescriptorResult contains values, level (atom, structure, or pair), structure_ids, row offsets, stable labels, JSON-safe metadata, per-row samples, and feature_count. The descriptor itself also retains the latest JSON-safe metadata and its configuration after close(). The standard shapes are (N, F), (S, F), and (P, F) for atom, structure and pair outputs respectively. Result arrays are owned snapshots and exposed read-only.

Supported descriptors / 支持的描述符

The built-in registry currently provides 28 descriptors. None means no model file is needed; Optional means a model can be supplied (as with MTP); and Required means the descriptor always resolves a local model resource. See the full descriptor inventory for parameters, capabilities and backend details.

内置注册表目前提供 28 个描述符。None 表示不需要模型文件;Optional 表示 可以提供模型(例如 MTP);Required 表示描述符始终解析本地模型资源。参数、 能力和后端详情请参阅完整描述符清单

Descriptor / 描述符 Category / 类型 Output / 输出 Model / 模型
SOAP Local / 局部 Structure / 结构 None
SOAPTurbo Local / 局部 Atom / 原子 None
ACSF Local / 局部 Atom / 原子 None
ACE Local / 局部 Atom / 原子 None
CoulombMatrix Matrix / 矩阵 Structure / 结构 None
SineMatrix Matrix / 矩阵 Structure / 结构 None
EwaldSumMatrix Matrix / 矩阵 Structure / 结构 None
MBTR Many-body / 多体 Structure / 结构 None
LMBTR Many-body / 多体 Atom / 原子 None
ValleOganov Many-body / 多体 Structure / 结构 None
AtomicComposition Local / 局部 Structure / 结构 None
NeighborList Local / 局部 Pair / 原子对 None
SortedDistances Local / 局部 Atom / 原子 None
SphericalExpansion Local / 局部 Atom / 原子 None
SphericalExpansionByPair Local / 局部 Pair / 原子对 None
SoapRadialSpectrum Local / 局部 Atom / 原子 None
SoapPowerSpectrum Local / 局部 Atom / 原子 None
LodeSphericalExpansion Local / 局部 Atom / 原子 None
EAD Rotational / 旋转 Atom / 原子 None
SO3 Rotational / 旋转 Atom / 原子 None
SO4 Rotational / 旋转 Atom / 原子 None
SNAP Rotational / 旋转 Atom / 原子 None
LBispectrum Rotational / 旋转 Atom / 原子 None
MTP Local / 局部 Atom / 原子 Optional
C00PSMLFF Local / 局部 Atom / 原子 None
NEP Model-backed / 模型 Atom / 原子 Required
DPA4 Model-backed / 模型 Atom / 原子 Required
DPA4C Model-backed / 模型 Atom / 原子 Required

Registry / 注册表

Built-ins come from one explicit immutable specification list. Imports are lazy and no decorator or filesystem scan is used.

import mdescriptor
from mdescriptor.descriptors import SOAP

print(mdescriptor.list_descriptors())
summaries = mdescriptor.list_descriptors(detailed=True)
metadata = mdescriptor.describe_descriptor("SOAP")
runtime = mdescriptor.get_runtime_info()
baseline = mdescriptor.gui_baseline()
soap = SOAP(species=[1, 8], r_cut=4.5, n_max=2, l_max=2)
rebuilt = mdescriptor.create_descriptor(soap.configuration)

child = mdescriptor.DescriptorRegistry(parent=mdescriptor.builtin_registry)
child.register(my_spec)

The built-in list separates AssetPolicy.NONE, OPTIONAL (for example MTP potentials), and REQUIRED (NEP/DPA4/DPA4C). The root package exposes stable contracts, registry functions and errors only; algorithm implementations are not re-exported from the root. describe_descriptor(name) reads static, JSON-safe GUI metadata from the registry without constructing a descriptor or resolving a model. list_descriptors(detailed=True) returns the name, version, display name, category and level for every descriptor in one call. gui_baseline() returns the packaged GUI contract document, and get_runtime_info() reports its baseline_version alongside the package and schema versions.

The keys in metadata["parameters"] are the unchanged constructor and configuration names. Each parameter schema also contains a GUI-facing display_name and description; use the former as the field label and the latter as the tooltip, while submitting the value under the mapping key:

metadata = mdescriptor.describe_descriptor("SOAP")
for parameter_name, schema in metadata["parameters"].items():
    label = schema["display_name"]
    tooltip = schema["description"]
    # Render `label` and `tooltip`, then serialize the value as `parameter_name`.

On Windows, import mdescriptor during single-threaded startup, before an embedding host starts background stdin/stdio readers. The package preloads the packaged native binary at that point; a host that controls startup explicitly may also call mdescriptor.preload_native().

Model resources / 模型资源

ModelResource, ModelResolver, LoadedModel and ModelSession are the shared model-resource seam. Resolution is explicit, local and checksum-aware:

from pathlib import Path
from mdescriptor.descriptors import DPA4
from mdescriptor import ExecutionOptions

dpa4 = DPA4(
    model=Path("/path/to/official-checkpoint.pt"),
    execution=ExecutionOptions(device="cpu"),
)
result = dpa4.compute(batch)

For GUI configuration JSON, a model parameter may be an explicit path string or the tagged object returned by ModelResource.to_dict(); the latter is used for named/checksummed resources.

The DPA4/DPA4C checkpoint readers and NumPy fallback path remain isolated vendor adapters. The default inference graphs are lowered into the private mdescriptor._native C++17/OpenMP extension.

Development / 开发

.venv/bin/python -m pip install -e . --no-build-isolation
.venv/bin/python -m pytest --import-mode=importlib tests -q
.venv/bin/python -m pytest --cov=mdescriptor --cov-report=term-missing tests

.venv/bin/cmake -S cpp/tests -B build/cpp-tests -DCMAKE_BUILD_TYPE=Release
.venv/bin/cmake --build build/cpp-tests --config Release
.venv/bin/ctest --test-dir build/cpp-tests -C Release --output-on-failure

Coverage excludes the isolated vendored DPA implementation and enforces 75% branch coverage for project-owned Python code. Tests marked timing record repeatable timing samples but intentionally do not impose a runner-dependent speedup threshold; controlled performance reports are produced by scripts/run_benchmark.py.

The extension is private (mdescriptor._native). C++ shared math and batch helpers live in named headers under cpp/include/mdescriptor/detail/.

MDescriptor is licensed under the GNU General Public License v3.0; see LICENSE.

Download files

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

Source Distribution

mdescriptor-0.2.8.tar.gz (26.6 MB view details)

Uploaded Source

Built Distributions

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

mdescriptor-0.2.8-cp314-cp314-win_amd64.whl (33.8 MB view details)

Uploaded CPython 3.14Windows x86-64

mdescriptor-0.2.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (35.4 MB view details)

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

mdescriptor-0.2.8-cp314-cp314-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

mdescriptor-0.2.8-cp313-cp313-win_amd64.whl (33.6 MB view details)

Uploaded CPython 3.13Windows x86-64

mdescriptor-0.2.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (35.4 MB view details)

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

mdescriptor-0.2.8-cp313-cp313-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

mdescriptor-0.2.8-cp312-cp312-win_amd64.whl (33.6 MB view details)

Uploaded CPython 3.12Windows x86-64

mdescriptor-0.2.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (35.4 MB view details)

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

mdescriptor-0.2.8-cp312-cp312-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

mdescriptor-0.2.8-cp311-cp311-win_amd64.whl (33.6 MB view details)

Uploaded CPython 3.11Windows x86-64

mdescriptor-0.2.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (35.4 MB view details)

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

mdescriptor-0.2.8-cp311-cp311-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

mdescriptor-0.2.8-cp310-cp310-win_amd64.whl (33.6 MB view details)

Uploaded CPython 3.10Windows x86-64

mdescriptor-0.2.8-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (35.4 MB view details)

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

mdescriptor-0.2.8-cp310-cp310-macosx_11_0_arm64.whl (33.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file mdescriptor-0.2.8.tar.gz.

File metadata

  • Download URL: mdescriptor-0.2.8.tar.gz
  • Upload date:
  • Size: 26.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mdescriptor-0.2.8.tar.gz
Algorithm Hash digest
SHA256 151a380bf3ed6230d7310da311a970ebd8fbfdc6f7ec25e020fe981c616dcae2
MD5 a9d45c6f7c62775e638a9da789f7e2fa
BLAKE2b-256 f0c55d7da9f0e11be242a02885422b1e8ae0f9b575cb4cfe6edf33a371d0efd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8.tar.gz:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5b38817ad11b280fff3ae3afcaa4f5611587bfdccd91174367678be7a5d84b7c
MD5 1ad225fa728355ad85e5f7e5f74b6037
BLAKE2b-256 a2f6863535abc17c801bcfa88a1c86e850e6b7ae6809b681b1bb297f81cde074

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp314-cp314-win_amd64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c141cab8d1937e13f38bf9da0c1178cefbd9ee66127382b4b4c88f63f3f99318
MD5 891b458eb8fa7cc985b40ba90fa2775a
BLAKE2b-256 3e0427d055b219f80858ff0f73c3f216e5ffa298fb40f7f118111c78860f3704

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ea86488303f9425f8f933ace8eb6f3f07b05e2bc744a6379f992eccd047535c
MD5 b1072109d2cddc1eef80c28692815217
BLAKE2b-256 55bd10c7f9508a9f6c38a645400cb818523756ac62992d7cebc26c28017b70d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 802d3ce05d01a08c9d416d1e21026552a80729662763c9a62c714a4fc071afd5
MD5 20f8ced62eba99420074bf8f941c6649
BLAKE2b-256 741c8e1d7c229656d98caac00b5481354156da83588a320f54895a804cedc536

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp313-cp313-win_amd64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 76bb3a3576dd6135974530fd574ce44b97307da46a3967a0e42568e1e7eb2d5a
MD5 d374acca0bfa6300d35a82c3112092cb
BLAKE2b-256 22d0bc8386c2db14bc7cc36c7e1cc82b1089f793f40597e1a64ddc98c2373466

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d0847f301862423bd2e454a9372019c4f43fbf44721a1507b53be719afb01a3
MD5 98541bd8cbc1208cba99bd0c2daf3a4b
BLAKE2b-256 6aefdb8320e82c9997e2de4e0ecfb931721e160ebbbd4a91a6252bbb93c21610

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 58f9f91217f286f2cb8b6e716374dedc5a695622cba9d80e5089492327e1193c
MD5 ee58e20a51ea34c8ed1d1c2966b68b4b
BLAKE2b-256 320b057c0dfc359d277672e360fcd9fb50ecf3a36692216f2fa2bad4698ddf26

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp312-cp312-win_amd64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 859f27ef243596a146b3568541f531ef9a738eed81140626a122e4e2983030e0
MD5 068be929ec9544e0965c0d024f654d53
BLAKE2b-256 700a1bfc3c4f519812f4548b008a71aae282d69b7299e36d0d856adfd6c6bd88

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 669eaf3b85d757064878124d1943d9fb1c514078257c01ad97f46f7f30801aed
MD5 6d1c014a3917114c99834a93bf18fc7f
BLAKE2b-256 edba850fb51bfc3c1eb4d212f449eba84e014bb38bc4be3317d39d9f450d71b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d76d96099b2d7bb2d980eb470d52d2c79ac1ad3d92e03dd8242be1deb425e72d
MD5 b0139343cc7977cb3c0cba21dab52879
BLAKE2b-256 87b681c93b8f1c4291c1328c555c9c4f3a3dee4122b3f8af890c5b57262a6a7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp311-cp311-win_amd64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d9db3ffe5b0b9ec6caa76994405b12ff9e9e05bff0705d0638ee9b5d8301e53f
MD5 0b89471dd1d72f9ba219bb4994ee98d1
BLAKE2b-256 ba3af4a85b36ad555efde6a4be50bc3b853738c35d9bceb3e87b96c95dc54fd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 868e7e306d232f1fe660e3744b50844732e00c2102dc4fc597120b689cfc7ea7
MD5 48df4f3462b4da216b5db8fbc9bef1a6
BLAKE2b-256 244e5fd649aabd69fa1288b1c77e6aef2f1dea0069036f4de530c88f734870cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1ee53107795dc4cae8bd4a100d3cf3ea7bc568cd12324b85125e9f83e5527002
MD5 6b660d32f0efd3c6460072a8ba95315c
BLAKE2b-256 76466ffd14390377505da4ce416233895afd0a82f56defe256cb8a2d150c91d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp310-cp310-win_amd64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e4e12b77658cdb39d734e889476ff8b86d72d4ccb92c57fa2d2b4d14d097bc74
MD5 99fe3afe939362cf4f4ee7fbb0945c1a
BLAKE2b-256 0f8f826ff893acc46a538351e01c68f42b9a1ae5750f0b013b6f125877da66ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

File details

Details for the file mdescriptor-0.2.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mdescriptor-0.2.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 94d7a82879e79d563eb8fe935bcf5bda0892f958097a430ab00e7ccb03428c77
MD5 b36543c3a1210b119047f43f28c34067
BLAKE2b-256 c84a744fd7c32dd92d50c146928e379bd913ef94a9d8204f37d9d64aeb663ab8

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdescriptor-0.2.8-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on nicheal/MDescriptor

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

Release history Release notifications | RSS feed

0.3.3

16 files

0.3.2

16 files

0.3.1

16 files

0.3.0

16 files

This release

0.2.8 This release

16 files

0.2.7

16 files

0.2.6

16 files

0.2.5

16 files

0.2.4

16 files

0.2.3

16 files

0.2.2

16 files

0.2.1

16 files

0.1.0

21 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