Skip to main content

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 StructureBatch input and one DescriptorResult output 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]

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.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for MDescriptor 0.3.4
File Size Uploaded Provenance Actions
mdescriptor-0.3.4.tar.gz 26.6 MB With provenance Details for mdescriptor-0.3.4.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for MDescriptor 0.3.4
File Actions
mdescriptor-0.3.4-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for mdescriptor-0.3.4-cp314-cp314-win_amd64.whl
mdescriptor-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for mdescriptor-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
mdescriptor-0.3.4-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for mdescriptor-0.3.4-cp314-cp314-macosx_11_0_arm64.whl
mdescriptor-0.3.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for mdescriptor-0.3.4-cp313-cp313-win_amd64.whl
mdescriptor-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for mdescriptor-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
mdescriptor-0.3.4-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for mdescriptor-0.3.4-cp313-cp313-macosx_11_0_arm64.whl
mdescriptor-0.3.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for mdescriptor-0.3.4-cp312-cp312-win_amd64.whl
mdescriptor-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for mdescriptor-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
mdescriptor-0.3.4-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for mdescriptor-0.3.4-cp312-cp312-macosx_11_0_arm64.whl
mdescriptor-0.3.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for mdescriptor-0.3.4-cp311-cp311-win_amd64.whl
mdescriptor-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for mdescriptor-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
mdescriptor-0.3.4-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for mdescriptor-0.3.4-cp311-cp311-macosx_11_0_arm64.whl
mdescriptor-0.3.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for mdescriptor-0.3.4-cp310-cp310-win_amd64.whl
mdescriptor-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for mdescriptor-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
mdescriptor-0.3.4-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for mdescriptor-0.3.4-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 633.5 MB

Release files / mdescriptor-0.3.4.tar.gz

Download URL mdescriptor-0.3.4.tar.gz
Size 26.6 MB
Tags Source
SHA-256 checksum
How to use checksums
adc4056593196624256b2e6c8eaa77d8b2c3d2d0a94f9d66a0970b7de6fb9d48
BLAKE2b-256 checksum
How to use checksums
c8cafe85f21c536501acc6979acfb841dee56a3e6aede24e1dcfd386807f9e4d
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp314-cp314-win_amd64.whl

Download URL mdescriptor-0.3.4-cp314-cp314-win_amd64.whl
Size 43.1 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
2ed3a0059ee0d560fccb4ba706ba935b724ff31421295788c94be0b37ab0feb9
BLAKE2b-256 checksum
How to use checksums
b335c4ea9513583c599a5ebdbd58a9b31e560d9a682de06eeadd7200c426a077
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mdescriptor-0.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 45.2 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b3e2465e53f323c293ef36fd9ee7154da4d644294b9e4beaf783b8d48f25ca00
BLAKE2b-256 checksum
How to use checksums
81bbe41749ffd8913b90005da3da1ed7258e057c2a0c69272285070a9538d906
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp314-cp314-macosx_11_0_arm64.whl

Download URL mdescriptor-0.3.4-cp314-cp314-macosx_11_0_arm64.whl
Size 33.2 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
869df6745d449148a184ae0bffe1a63290057c8ed0c3d045a977977b73aa058d
BLAKE2b-256 checksum
How to use checksums
11264fbf22b06ea63e48ec856836e2a41d13445e893d0a95e7868feb15d19046
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp313-cp313-win_amd64.whl

Download URL mdescriptor-0.3.4-cp313-cp313-win_amd64.whl
Size 42.9 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
bb479c0b3b08416384c65bb6b75d73d02246d42307256ec9bcb68199fcacd5e1
BLAKE2b-256 checksum
How to use checksums
9640f806c8ecfc293830186911f6bbd5258b036af1459402c077cd6b52331373
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mdescriptor-0.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 45.2 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
83b60c62907c564692ac84d905a40f1d07f4a027d14c36bd854b31c5d80a8de9
BLAKE2b-256 checksum
How to use checksums
4ef545392c48e735d2692a6c6c24e04eec9e44d543c565199e2535f3b798df43
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp313-cp313-macosx_11_0_arm64.whl

Download URL mdescriptor-0.3.4-cp313-cp313-macosx_11_0_arm64.whl
Size 33.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5838291a947cbcb656d68a7ca73f94d3b36290c89b5c1d5842f721f55f2b839f
BLAKE2b-256 checksum
How to use checksums
7f5d123045dafced50c9b78ea69575b1dd97663f77597e7d085d9fbec5f029b4
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp312-cp312-win_amd64.whl

Download URL mdescriptor-0.3.4-cp312-cp312-win_amd64.whl
Size 42.9 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
cb4736d2281c38f72de4593cf4dd8dc5627a1b6d9de4bc02bf4000b034685b75
BLAKE2b-256 checksum
How to use checksums
ae3495368b5f0fccddbba71dc297a888cf1fedd2853e26dae61b6d9ec409b6a3
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mdescriptor-0.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 45.2 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0fcb10a0e2a704f78dd57e7315e0275dc53f864060dd7c5ee7a17b27e90bd0d9
BLAKE2b-256 checksum
How to use checksums
35e60395d218cc7f5835898a4d5af9f5eb2b9cd898b242b9bdd8bede5ec7fb60
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp312-cp312-macosx_11_0_arm64.whl

Download URL mdescriptor-0.3.4-cp312-cp312-macosx_11_0_arm64.whl
Size 33.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
31ded21a083c2f59864cf5fe2cec0b8ed59a7df6b213aac634ad9908efb98225
BLAKE2b-256 checksum
How to use checksums
bfdcaf3cbee317d333272c82b13cf6aac1ceb84511676e5fa053ab083221c3f3
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp311-cp311-win_amd64.whl

Download URL mdescriptor-0.3.4-cp311-cp311-win_amd64.whl
Size 42.9 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
191bf4fbc92b02dfcee85f53849b4d2968ecea3efba25a2d9034a7216f4c1ced
BLAKE2b-256 checksum
How to use checksums
15b0b9ff710af2404b21d1ca935ce7616479204375c47e1b2ddf85fd8a2e8951
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mdescriptor-0.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 45.2 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
05ee684a3627331803bdc5150b99755d822d0cf77d893534b5e8023dfcc8712e
BLAKE2b-256 checksum
How to use checksums
f14609337bb16cda24608fbbc7ff20848fc69c500baa818d5893f557052afea6
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp311-cp311-macosx_11_0_arm64.whl

Download URL mdescriptor-0.3.4-cp311-cp311-macosx_11_0_arm64.whl
Size 33.2 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
060cdc205dfa086e91677138f7bee578c305306e1a76517c2bbc9715518a2e3a
BLAKE2b-256 checksum
How to use checksums
19d46cfb3f1133b28646531ebc71d08f748da7e829723c56e669d2d554a5df2c
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp310-cp310-win_amd64.whl

Download URL mdescriptor-0.3.4-cp310-cp310-win_amd64.whl
Size 42.9 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
4f4a380cba6e40d4786621e1c1feff632991677ed95eefee943b6de77ffdd317
BLAKE2b-256 checksum
How to use checksums
9fa16c9817502f18c73ad104c69e7df826990c47c3a2197fd06d8abf45aa6f36
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL mdescriptor-0.3.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 45.2 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e46b254bf8d71a56cec34b8370597f55c9e973e5ec96057a4e7283b7761727b1
BLAKE2b-256 checksum
How to use checksums
c58df70aa02a3abf0e534b812308bb46fad3e70d6da65f5f1ba0609014cf5103
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 21, 2026.

Transparency log

Release files / mdescriptor-0.3.4-cp310-cp310-macosx_11_0_arm64.whl

Download URL mdescriptor-0.3.4-cp310-cp310-macosx_11_0_arm64.whl
Size 33.2 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9b9da63df613968f908699fc444765c404f7efe526f6c3b6640fc154178005ff
BLAKE2b-256 checksum
How to use checksums
d2f508d6054f7b3c989a91dab09cfa510c41f2b1ffa3b0412239196e58a1f672
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 21, 2026.

Transparency log

Security for MDescriptor 0.3.4

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.

Select from 16 files

Attestation for mdescriptor-0.3.4.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 21, 2026.

Transparency log

A 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.

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