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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
151a380bf3ed6230d7310da311a970ebd8fbfdc6f7ec25e020fe981c616dcae2
|
|
| MD5 |
a9d45c6f7c62775e638a9da789f7e2fa
|
|
| BLAKE2b-256 |
f0c55d7da9f0e11be242a02885422b1e8ae0f9b575cb4cfe6edf33a371d0efd1
|
Provenance
The following attestation bundles were made for mdescriptor-0.2.8.tar.gz:
Publisher:
release.yml on nicheal/MDescriptor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8.tar.gz -
Subject digest:
151a380bf3ed6230d7310da311a970ebd8fbfdc6f7ec25e020fe981c616dcae2 - Sigstore transparency entry: 2722201472
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 33.8 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b38817ad11b280fff3ae3afcaa4f5611587bfdccd91174367678be7a5d84b7c
|
|
| MD5 |
1ad225fa728355ad85e5f7e5f74b6037
|
|
| BLAKE2b-256 |
a2f6863535abc17c801bcfa88a1c86e850e6b7ae6809b681b1bb297f81cde074
|
Provenance
The following attestation bundles were made for mdescriptor-0.2.8-cp314-cp314-win_amd64.whl:
Publisher:
release.yml on nicheal/MDescriptor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp314-cp314-win_amd64.whl -
Subject digest:
5b38817ad11b280fff3ae3afcaa4f5611587bfdccd91174367678be7a5d84b7c - Sigstore transparency entry: 2722207250
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
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
- Download URL: mdescriptor-0.2.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 35.4 MB
- Tags: CPython 3.14, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c141cab8d1937e13f38bf9da0c1178cefbd9ee66127382b4b4c88f63f3f99318
|
|
| MD5 |
891b458eb8fa7cc985b40ba90fa2775a
|
|
| BLAKE2b-256 |
3e0427d055b219f80858ff0f73c3f216e5ffa298fb40f7f118111c78860f3704
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
c141cab8d1937e13f38bf9da0c1178cefbd9ee66127382b4b4c88f63f3f99318 - Sigstore transparency entry: 2722203100
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 33.3 MB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ea86488303f9425f8f933ace8eb6f3f07b05e2bc744a6379f992eccd047535c
|
|
| MD5 |
b1072109d2cddc1eef80c28692815217
|
|
| BLAKE2b-256 |
55bd10c7f9508a9f6c38a645400cb818523756ac62992d7cebc26c28017b70d5
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp314-cp314-macosx_11_0_arm64.whl -
Subject digest:
4ea86488303f9425f8f933ace8eb6f3f07b05e2bc744a6379f992eccd047535c - Sigstore transparency entry: 2722202714
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 33.6 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
802d3ce05d01a08c9d416d1e21026552a80729662763c9a62c714a4fc071afd5
|
|
| MD5 |
20f8ced62eba99420074bf8f941c6649
|
|
| BLAKE2b-256 |
741c8e1d7c229656d98caac00b5481354156da83588a320f54895a804cedc536
|
Provenance
The following attestation bundles were made for mdescriptor-0.2.8-cp313-cp313-win_amd64.whl:
Publisher:
release.yml on nicheal/MDescriptor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp313-cp313-win_amd64.whl -
Subject digest:
802d3ce05d01a08c9d416d1e21026552a80729662763c9a62c714a4fc071afd5 - Sigstore transparency entry: 2722204367
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
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
- Download URL: mdescriptor-0.2.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 35.4 MB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76bb3a3576dd6135974530fd574ce44b97307da46a3967a0e42568e1e7eb2d5a
|
|
| MD5 |
d374acca0bfa6300d35a82c3112092cb
|
|
| BLAKE2b-256 |
22d0bc8386c2db14bc7cc36c7e1cc82b1089f793f40597e1a64ddc98c2373466
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
76bb3a3576dd6135974530fd574ce44b97307da46a3967a0e42568e1e7eb2d5a - Sigstore transparency entry: 2722208702
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 33.3 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d0847f301862423bd2e454a9372019c4f43fbf44721a1507b53be719afb01a3
|
|
| MD5 |
98541bd8cbc1208cba99bd0c2daf3a4b
|
|
| BLAKE2b-256 |
6aefdb8320e82c9997e2de4e0ecfb931721e160ebbbd4a91a6252bbb93c21610
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
6d0847f301862423bd2e454a9372019c4f43fbf44721a1507b53be719afb01a3 - Sigstore transparency entry: 2722203549
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 33.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58f9f91217f286f2cb8b6e716374dedc5a695622cba9d80e5089492327e1193c
|
|
| MD5 |
ee58e20a51ea34c8ed1d1c2966b68b4b
|
|
| BLAKE2b-256 |
320b057c0dfc359d277672e360fcd9fb50ecf3a36692216f2fa2bad4698ddf26
|
Provenance
The following attestation bundles were made for mdescriptor-0.2.8-cp312-cp312-win_amd64.whl:
Publisher:
release.yml on nicheal/MDescriptor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp312-cp312-win_amd64.whl -
Subject digest:
58f9f91217f286f2cb8b6e716374dedc5a695622cba9d80e5089492327e1193c - Sigstore transparency entry: 2722206171
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
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
- Download URL: mdescriptor-0.2.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 35.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
859f27ef243596a146b3568541f531ef9a738eed81140626a122e4e2983030e0
|
|
| MD5 |
068be929ec9544e0965c0d024f654d53
|
|
| BLAKE2b-256 |
700a1bfc3c4f519812f4548b008a71aae282d69b7299e36d0d856adfd6c6bd88
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
859f27ef243596a146b3568541f531ef9a738eed81140626a122e4e2983030e0 - Sigstore transparency entry: 2722201998
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 33.3 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
669eaf3b85d757064878124d1943d9fb1c514078257c01ad97f46f7f30801aed
|
|
| MD5 |
6d1c014a3917114c99834a93bf18fc7f
|
|
| BLAKE2b-256 |
edba850fb51bfc3c1eb4d212f449eba84e014bb38bc4be3317d39d9f450d71b4
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
669eaf3b85d757064878124d1943d9fb1c514078257c01ad97f46f7f30801aed - Sigstore transparency entry: 2722207053
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 33.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d76d96099b2d7bb2d980eb470d52d2c79ac1ad3d92e03dd8242be1deb425e72d
|
|
| MD5 |
b0139343cc7977cb3c0cba21dab52879
|
|
| BLAKE2b-256 |
87b681c93b8f1c4291c1328c555c9c4f3a3dee4122b3f8af890c5b57262a6a7e
|
Provenance
The following attestation bundles were made for mdescriptor-0.2.8-cp311-cp311-win_amd64.whl:
Publisher:
release.yml on nicheal/MDescriptor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp311-cp311-win_amd64.whl -
Subject digest:
d76d96099b2d7bb2d980eb470d52d2c79ac1ad3d92e03dd8242be1deb425e72d - Sigstore transparency entry: 2722204678
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
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
- Download URL: mdescriptor-0.2.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 35.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9db3ffe5b0b9ec6caa76994405b12ff9e9e05bff0705d0638ee9b5d8301e53f
|
|
| MD5 |
0b89471dd1d72f9ba219bb4994ee98d1
|
|
| BLAKE2b-256 |
ba3af4a85b36ad555efde6a4be50bc3b853738c35d9bceb3e87b96c95dc54fd5
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
d9db3ffe5b0b9ec6caa76994405b12ff9e9e05bff0705d0638ee9b5d8301e53f - Sigstore transparency entry: 2722206378
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 33.3 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
868e7e306d232f1fe660e3744b50844732e00c2102dc4fc597120b689cfc7ea7
|
|
| MD5 |
48df4f3462b4da216b5db8fbc9bef1a6
|
|
| BLAKE2b-256 |
244e5fd649aabd69fa1288b1c77e6aef2f1dea0069036f4de530c88f734870cf
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
868e7e306d232f1fe660e3744b50844732e00c2102dc4fc597120b689cfc7ea7 - Sigstore transparency entry: 2722205289
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 33.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ee53107795dc4cae8bd4a100d3cf3ea7bc568cd12324b85125e9f83e5527002
|
|
| MD5 |
6b660d32f0efd3c6460072a8ba95315c
|
|
| BLAKE2b-256 |
76466ffd14390377505da4ce416233895afd0a82f56defe256cb8a2d150c91d8
|
Provenance
The following attestation bundles were made for mdescriptor-0.2.8-cp310-cp310-win_amd64.whl:
Publisher:
release.yml on nicheal/MDescriptor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp310-cp310-win_amd64.whl -
Subject digest:
1ee53107795dc4cae8bd4a100d3cf3ea7bc568cd12324b85125e9f83e5527002 - Sigstore transparency entry: 2722205024
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
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
- Download URL: mdescriptor-0.2.8-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 35.4 MB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4e12b77658cdb39d734e889476ff8b86d72d4ccb92c57fa2d2b4d14d097bc74
|
|
| MD5 |
99fe3afe939362cf4f4ee7fbb0945c1a
|
|
| BLAKE2b-256 |
0f8f826ff893acc46a538351e01c68f42b9a1ae5750f0b013b6f125877da66ba
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
e4e12b77658cdb39d734e889476ff8b86d72d4ccb92c57fa2d2b4d14d097bc74 - Sigstore transparency entry: 2722205701
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mdescriptor-0.2.8-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: mdescriptor-0.2.8-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 33.3 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94d7a82879e79d563eb8fe935bcf5bda0892f958097a430ab00e7ccb03428c77
|
|
| MD5 |
b36543c3a1210b119047f43f28c34067
|
|
| BLAKE2b-256 |
c84a744fd7c32dd92d50c146928e379bd913ef94a9d8204f37d9d64aeb663ab8
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mdescriptor-0.2.8-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
94d7a82879e79d563eb8fe935bcf5bda0892f958097a430ab00e7ccb03428c77 - Sigstore transparency entry: 2722207693
- Sigstore integration time:
-
Permalink:
nicheal/MDescriptor@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/nicheal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9cf406c0caae079fa225ade0e2269b45f5c03917 -
Trigger Event:
push
-
Statement type: