MDescriptor
MDescriptor is a Python library for computing atomic descriptors over batches of isolated and fully periodic structures. It combines one input/result contract with C++17/OpenMP kernels, an optional CUDA backend, and explicit metadata for applications that need to discover and configure descriptors.
MDescriptor 是面向孤立结构和完整周期结构批量计算原子描述符的 Python 库。 它提供统一的输入/结果契约、C++17/OpenMP 数值核心、可选 CUDA 后端,以及适合 应用程序发现和配置描述符的显式元数据。
Highlights / 特性
- 28 built-in descriptors covering local, matrix, many-body, rotational, and model-backed families.
- One validated
StructureBatchinput and oneDescriptorResultoutput contract for every descriptor. - Atom-, structure-, and pair-level results with stable samples, labels, metadata, and feature counts.
- Dense NumPy output by default, with optional read-only SciPy CSR output.
- C++17/OpenMP CPU kernels; published Linux and Windows wheels also include the CUDA backend in the same distribution.
- Explicit, versioned registry metadata for descriptor discovery, GUI forms, validation, and JSON configuration round-tripping.
- Bundled, checksum-verified NEP, DPA4, and DPA4C model resources. DPA checkpoints are read without importing or installing Torch, and models are never downloaded implicitly.
- Uniform lifecycle management and cooperative cancellation across the descriptor API.
Installation / 安装
Install the published package with Python 3.10 or newer:
python -m pip install mdescriptor
Optional integrations:
python -m pip install "mdescriptor[ase]" # ASE input conversion
python -m pip install "mdescriptor[sparse]" # SciPy CSR output
The base package requires NumPy, array-api-compat, and packaging. ASE is
needed only for StructureBatch.from_ase(...) or direct ASE input. DPA4 and
DPA4C do not require Torch at runtime.
Platform backends / 平台后端
The CPU backend works on every supported platform. The published wheel layout is:
| Platform | CPU | CUDA |
|---|---|---|
| Linux x86_64 | Yes | Yes |
| Windows x86_64 | Yes | Yes |
| macOS arm64 | Yes | No |
Linux and Windows wheels bundle the CUDA user-space runtime; an NVIDIA driver
and a supported GPU are still required. CUDA is selected explicitly with
ExecutionOptions(device="cuda") and never silently falls back to CPU. If the
driver or GPU is unavailable, computation reports the structured
device_unavailable error.
When building from source, a CUDA toolkit is detected automatically. Disable it explicitly when needed:
python -m pip install . --config-settings=cmake.define.MDESCRIPTOR_BUILD_CUDA=OFF
Input contract / 输入契约
Every descriptor accepts a StructureBatch. It can also adapt a single ASE
Atoms object or a sequence of ASE objects when ASE is installed. GUI- or
application-owned frame records can be packed with StructureBatch.from_frames.
import numpy as np
from mdescriptor import StructureBatch
batch = StructureBatch(
numbers=np.array([1, 8], dtype=np.int32),
positions=np.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0]]),
cells=np.eye(3, dtype=np.float64)[None] * 12.0,
pbc=np.ones((1, 3), dtype=np.int32),
offsets=np.array([0, 2], dtype=np.int64),
ids=("water-0",),
)
For S structures and N total atoms, the core fields are:
| Field | Shape | Meaning |
|---|---|---|
numbers |
(N,) |
Positive atomic numbers |
positions |
(N, 3) |
Cartesian coordinates |
cells |
(S, 3, 3) |
Unit-cell matrices; zero cells are allowed for isolated structures |
pbc |
(S, 3) |
All zeros for isolated or all ones for fully periodic structures |
offsets |
(S + 1,) |
Atom boundaries for each structure |
ids |
length S |
Structure identifiers |
StructureBatch owns read-only snapshots of its arrays and validates shapes,
finite values, atomic numbers, offsets, cells, and periodicity. A batch may mix
isolated and fully periodic structures, but partial periodicity within one
structure is not supported. Optional spins and charge_spin fields are
available for model descriptors that declare those capabilities.
Basic API / 基本 API
Algorithm classes live in the lazy mdescriptor.descriptors namespace. The
root package exposes the stable contracts, errors, and registry functions.
from mdescriptor import ExecutionOptions, OutputOptions
from mdescriptor.descriptors import SOAP
with SOAP(
species=[1, 8],
r_cut=4.5,
n_max=4,
l_max=3,
average="off",
output=OutputOptions(dtype="float32"),
execution=ExecutionOptions(num_threads=4),
) as descriptor:
result = descriptor.compute(batch)
print(result.level) # DescriptorLevel.ATOM
print(result.values.shape) # (number of atoms, feature_count)
print(result.labels[:2])
print(result.samples[:2])
All descriptors provide compute(...), close(), closed, configuration,
metadata, and (when resolved) feature_count. Computing after close()
raises ClosedDescriptorError. Use ComputeControl as the control= argument
to cancel a long-running computation cooperatively.
Results / 结果
DescriptorResult.values is a two-dimensional dense NumPy array by default.
With OutputOptions(sparse=True), descriptors return a read-only SciPy CSR
matrix instead. The common result fields are:
| Field | Meaning |
|---|---|
values |
Feature matrix with shape (rows, features) |
level |
atom, structure, or pair |
structure_ids |
Identifiers copied from the input batch |
row_offsets |
Structure boundaries for atom- and pair-level rows; None for structure-level output |
samples |
Stable row identities for the selected output level |
labels |
One stable label per feature column |
metadata |
JSON-safe descriptor, execution, output, and model metadata |
feature_count |
Number of feature columns |
The sample layouts are:
- structure level:
[structure] - atom level:
[structure, local_atom] - pair level:
[structure, local_atom_1, local_atom_2, shift_a, shift_b, shift_c]
Energy and force predictions / 能量与力预测
NEP and DPA4C predictions use a separate namespace so descriptor feature
matrices keep their existing meaning. Both predictors accept the same
StructureBatch or ASE inputs, and return total energy per structure, atomic
energy per atom, and Cartesian forces in eV and eV/angstrom:
from mdescriptor import ExecutionOptions
from mdescriptor.predictors import DPA4C, NEP
with NEP(execution=ExecutionOptions(device="cpu")) as model:
result = model.predict(batch)
print(result.energy.shape) # (number of structures,)
print(result.atom_energy.shape) # (number of atoms,)
print(result.forces.shape) # (number of atoms, 3)
PredictionResult also carries the input structure_ids, atom offsets, and
resolved model metadata. Its arrays are read-only snapshots. Select CUDA with
ExecutionOptions(device="cuda"); CUDA initialization remains lazy until the
first prediction. NEP prediction supports NEP4/NEP5 models, including ZBL.
DPA4C prediction accepts uncompressed, spin-free energy
checkpoints supported by the native inference backend. DPA4 descriptors remain
available through mdescriptor.descriptors.
Built-in descriptors / 内置描述符
The built-in registry currently contains 28 descriptors:
| Family | Descriptors |
|---|---|
| Local | SOAP, SOAPTurbo, ACSF, ACE, AtomicComposition, NeighborList, SortedDistances, SphericalExpansion, SphericalExpansionByPair, SoapRadialSpectrum, SoapPowerSpectrum, LodeSphericalExpansion, MTP, C00PSMLFF |
| Matrix | CoulombMatrix, SineMatrix, EwaldSumMatrix |
| Many-body | MBTR, LMBTR, ValleOganov |
| Rotational | EAD, SO3, SO4, SNAP, LBispectrum |
| Model-backed | NEP, DPA4, DPA4C |
See the descriptor inventory for the canonical parameters, output levels, periodicity, execution devices, model policies, and GUI-facing descriptions. The inventory is generated from the immutable built-in registry.
Registry and application integration / 注册表与应用集成
The registry is the single discovery source for built-in descriptors. Static metadata can be queried without constructing a descriptor or resolving a model:
import mdescriptor
names = mdescriptor.list_descriptors()
summaries = mdescriptor.list_descriptors(detailed=True)
soap_info = mdescriptor.describe_descriptor("SOAP")
runtime = mdescriptor.get_runtime_info()
describe_descriptor(name) returns JSON-safe parameter schemas, display names,
tooltips, execution devices, input periodicity, output options, and model asset
policy. DescriptorConfiguration is an immutable, versioned JSON form that
can be stored and reconstructed:
from mdescriptor import DescriptorConfiguration, create_descriptor
saved = descriptor.configuration.to_dict()
restored = create_descriptor(DescriptorConfiguration.from_dict(saved))
restored.close()
gui_baseline() returns the packaged GUI adaptation contract,
including the error and metadata conventions expected by an application.
Model resources / 模型资源
NEP, DPA4, and DPA4C use local model resources. Each has a bundled,
checksum-verified default model:
from mdescriptor import ExecutionOptions
from mdescriptor.descriptors import DPA4, DPA4C, NEP
nep = NEP()
dpa4 = DPA4(execution=ExecutionOptions(device="cpu"))
dpa4c = DPA4C(calibrate=True)
for descriptor in (nep, dpa4, dpa4c):
descriptor.close()
An explicit compatible local model can be passed with model=/path/to/model.
MTP accepts an optional local model for MLIP-2/MLIP-4-compatible features;
standalone descriptors do not require model files. No descriptor downloads a
model or searches the filesystem implicitly.
DPA4 and DPA4C official .pt checkpoints are parsed by the bundled NumPy
reader. The default inference graphs use the native execution backends when
available, while compatible specialized configurations retain the NumPy
fallback.
Development / 开发
Install the project in editable mode and run the default test suite:
python -m pip install -e . --no-build-isolation
python -m pytest --import-mode=importlib tests -q
Quality and contract checks:
python -m ruff check src tests scripts
python -m mypy
python scripts/check_descriptor_inventory.py --check
python scripts/check_numerical_baselines.py --check
The direct C++ tests can be run independently:
cmake -S cpp/tests -B build/cpp-tests -DCMAKE_BUILD_TYPE=Release
cmake --build build/cpp-tests --config Release
ctest --test-dir build/cpp-tests -C Release --output-on-failure
The controlled CPU benchmark uses the committed golden fixtures:
python scripts/benchmarking/run_descriptor_benchmark.py \
--output /tmp/mdescriptor-benchmark.json
Pushing a v* tag runs the release workflow. It builds CPython 3.10–3.14
wheels for Linux x86_64, Windows x86_64, and macOS arm64, builds an sdist, and
publishes the artifacts to PyPI through GitHub Trusted Publishing.
License / 许可证
MDescriptor is distributed under the GNU General Public License v3.0.
Metadata
Release files for MDescriptor 0.3.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mdescriptor-0.3.5.tar.gz | 26.7 MB | With provenance | Details for mdescriptor-0.3.5.tar.gz |
Built distributions (wheels)
Total release size: 643.2 MB
Release files / mdescriptor-0.3.5.tar.gz
| Download URL | mdescriptor-0.3.5.tar.gz |
|---|---|
| Size | 26.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2512fffbe062a6f86457ef710ecd929309d857716ffa3e4416ace87b42fbcbe0
|
|
BLAKE2b-256 checksum How to use checksums |
24c37cde760985056f70b4f6b9a770f32803227ee1d67e5aae5a68516ff98f6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp314-cp314-win_amd64.whl
| Download URL | mdescriptor-0.3.5-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 44.0 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0bdead03ec2619a9c98d166307ffcbf44316d3862ed610a6b45455a34e891dd7
|
|
BLAKE2b-256 checksum How to use checksums |
63efdd6596301fac6be71ff767dd7decee3d9c892847d033154997456f4ff12b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | mdescriptor-0.3.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 46.1 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2ad3a1f95e61a0929c18becb378cea1f5613aaa80c86eb10609d346f2c9179a8
|
|
BLAKE2b-256 checksum How to use checksums |
3c7d1cd52618f36f0361a989fe6915719cb3630aeded40559bd9afc147a2112a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | mdescriptor-0.3.5-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 33.3 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f4bb935fdf5b9817cf6a5a108bcfe92acab251eeaa6ab93f237e393e1ed5805d
|
|
BLAKE2b-256 checksum How to use checksums |
a23d5e91b88f023c75d174b463e059f8f7cc0bd8894d78a43dad57b898428552
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp313-cp313-win_amd64.whl
| Download URL | mdescriptor-0.3.5-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 43.8 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e7ae6d4893715334e3b98f8a2aef16981cff54bb410b7fd9600eedb37c2b3a63
|
|
BLAKE2b-256 checksum How to use checksums |
60f39e00b916f7ec4beb5565d7948ad23f53e3d4a453f84839a14264f7081548
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | mdescriptor-0.3.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 46.1 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
646d39a1dd77f997aad4f4cf1d96aea6360df983779035491a6a6c053e238540
|
|
BLAKE2b-256 checksum How to use checksums |
5aa5b8acb46de4837bc342fe60819a2da39b7bfb66a63a351ac43ba5314a91e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | mdescriptor-0.3.5-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 33.3 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1b44de0f6ddc71fbd7e5d6a4e8ddd6cafcffaab2c529425d05419e01852cae2f
|
|
BLAKE2b-256 checksum How to use checksums |
f5790bee235daba0f41b67e5174ae39c92ca59d88e59103f1899d9bf8356fa7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp312-cp312-win_amd64.whl
| Download URL | mdescriptor-0.3.5-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 43.8 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
81a8c09a656e2f772065e3134d1d3dd35b13bcfc645e8e6203da59b6978dedda
|
|
BLAKE2b-256 checksum How to use checksums |
826d21ba58f034513f8c624ae6e8e9fe377f2de959ba1b9ac06f367927dc1337
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | mdescriptor-0.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 46.1 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ccd832a593c234be21aa4df946855848004ed3d1f7c0a4dc1e1cd4011062ff1e
|
|
BLAKE2b-256 checksum How to use checksums |
16b9527bae6f18b0a577c3dc7488dacfd44e6e24fa9b4ccb1b324979e97dd880
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | mdescriptor-0.3.5-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 33.3 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
26d47168f34ef5d2b800fc979806a3976f4898ba2945ca0f0f9a614fa917949d
|
|
BLAKE2b-256 checksum How to use checksums |
9a55026afd0c8fbd57da6b1a5bdb7d56ef054234c717a3e36604c96299796f70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp311-cp311-win_amd64.whl
| Download URL | mdescriptor-0.3.5-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 43.8 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9b8aea93a1a99ed8af87b848998c9823e605a1279d455cc8e5721b712911199e
|
|
BLAKE2b-256 checksum How to use checksums |
a608803614ab7eebd0c0393535b9b7029a544de31b0c2a3b0ee30011fb85be65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | mdescriptor-0.3.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 46.1 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
89ac6b532e9dc8477bf77e00bb2a2c8031f16ce4d06bd39e42de74ba02e5e262
|
|
BLAKE2b-256 checksum How to use checksums |
c6ade983f2166655db9daef9e06eb614207e96e3fe06e3e0c2fbbe0c707f1719
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | mdescriptor-0.3.5-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 33.3 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
762b946fecd1301d4426e3acad4856b00e0e62c63285d55dfaf6f004c553c3f9
|
|
BLAKE2b-256 checksum How to use checksums |
e1f699a7f98a69c275c2b90f59fb75a6ec539010e600958857e45a37815494a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp310-cp310-win_amd64.whl
| Download URL | mdescriptor-0.3.5-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 43.8 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4a5d84769693dd0045c4f29dbf0e2a62819dfeaab5035acb3dc46dd62d4dcce4
|
|
BLAKE2b-256 checksum How to use checksums |
180d809e0e6c73753ae9b5f01c2b272198c59c2af2fe7d482c7534c541623855
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | mdescriptor-0.3.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 46.1 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
008ac6791d8771c0648cad86a8e3fd357915bd1f28abd160a55e983f6df924dc
|
|
BLAKE2b-256 checksum How to use checksums |
58b539372e22f318e15d8140761efdb590f5805861e161d60de792bcc305bd36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / mdescriptor-0.3.5-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | mdescriptor-0.3.5-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 33.3 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
19a7c646c3f8631033f5742be1857515e4e83c2bb7b021ec427f1aa7a15276da
|
|
BLAKE2b-256 checksum How to use checksums |
4cf0df68dc534f5462d7248fb6b5c38c61571f23c18f1587f9740c88375eda46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logSecurity for MDescriptor 0.3.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 16 files in this release have been uploaded with provenance metadata.
Attestation for mdescriptor-0.3.5.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.