Skip to main content

A PyQt widget to display crystal structures

Project description

fastmolwidget

A PyQt/PySide6 widget to display crystal structures

fastmolwidget is a lightweight, embeddable Qt widget that renders molecular and crystal structures in both 2D projection and real-time 3D OpenGL. It supports anisotropic displacement parameter (ADP) ellipsoids, ball-and-stick diagrams, and plain sphere representations. The 2D backend uses a pure-Python QPainter renderer (no OpenGL required); the 3D backend uses hardware-accelerated OpenGL with sphere and ellipsoid impostors.

Screenshots

2D (QPainter) 3D (OpenGL)
Fastmolwidget 2D ORTEP view Fastmolwidget 3D OpenGL view
ORTEP-style crystal structure with ADP ellipsoids (2D QPainter backend) Real-time 3D ball-and-stick view with depth-shaded spheres and cylinder bonds (OpenGL backend)

Features

  • ADP ellipsoids at the 50 % probability level, rendered from anisotropic displacement parameters
  • Ball-and-stick and isotropic sphere representations as fallbacks or when speed is more important than detail
  • Real-time 3D rendering via MoleculeWidget3D — sphere impostors and tessellated cylinder bonds in hardware-accelerated OpenGL
  • Graceful degradation — if PyOpenGL is not installed or OpenGL fails, MoleculeWidget3D falls back to an informational text overlay; the host application never crashes
  • Interactive mouse controls: rotate (left-drag), zoom (right-drag), pan (middle-drag), scroll wheel to resize labels
  • Atom and bond selection: single click or Ctrl+click for multi-selection; emits atomClicked / bondClicked Qt signals
  • Hover labels: hovering over an atom shows its label (enlarged when persistent labels are on); hovering over a bond shows the distance in Ångströms in a rounded tooltip near the cursor
  • Hydrogen visibility toggle
  • Atom label display toggle with adjustable font size
  • Bond width adjustment via spin box
  • Configurable bond color — set programmatically or via the control-bar color picker
  • Multiple file formats: CIF, SHELX .res/.ins, and plain XYZ. More to come...
  • Embeddable — both MoleculeWidget (2D) and MoleculeWidget3D (3D) are plain QWidget subclasses; drop either into any layout
  • Ready-to-use viewersMoleculeViewerWidget (2D) and MoleculeViewer3DWidget (3D) bundle the renderer with a full control bar
  • Common protocolMoleculeWidgetProtocol lets you write code that works with either widget interchangeably

Supported File Formats

Extension Format Notes
.cif Crystallographic Information File Reads atoms, unit cell, and ADPs
.res / .ins SHELXL instruction file Reads atoms and unit cell via shelxfile
.xyz Standard XYZ coordinate file Cartesian coordinates, no cell or ADPs

Installation

pip install fastmolwidget

By default, fastmolwidget installs without a concrete Qt binding. Install one binding explicitly via extras:

pip install "fastmolwidget[pyside6]"
pip install "fastmolwidget[pyqt6]"

For 3D OpenGL rendering, also install PyOpenGL:

pip install PyOpenGL

Without PyOpenGL the 3D widget still loads and displays a helpful message — the host application never crashes.

Optional C++ Acceleration (sdm_cpp)

The symmetry-growing step (Shortest-Distance-Matrix, SDM) has an optional C++ extension (sdm_cpp) that uses pybind11 and OpenMP for a significant speed-up on large structures. The pure-Python fallback is always active when the extension is not installed.

macOS

brew install libomp          # needed for OpenMP; skip if you don't want parallelism
pip install pybind11
pip install -e . --no-build-isolation

Linux / Windows

pip install pybind11
pip install -e . --no-build-isolation

If libomp is not found on macOS the module still builds and works, just single-threaded. You can verify whether OpenMP was compiled in:

import sdm_cpp
print(sdm_cpp.has_openmp)   # True / False

Requirements: Python >= 3.12, NumPy, gemmi, shelxfile, qtpy, and either PySide6 or PyQt6.

Quick Start

Standalone 2D viewer

from qtpy.QtWidgets import QApplication
from fastmolwidget import MoleculeViewerWidget

app = QApplication([])
viewer = MoleculeViewerWidget()
viewer.load_file("structure.cif")
viewer.show()
app.exec()

Standalone 3D viewer

from qtpy.QtWidgets import QApplication
from fastmolwidget import MoleculeViewer3DWidget, configure_opengl_format

# Must be called before QApplication is created
configure_opengl_format()

app = QApplication([])
viewer = MoleculeViewer3DWidget()
viewer.load_file("structure.cif")
viewer.show()
app.exec()

Embedding the 3D widget in your own layout

from fastmolwidget import MoleculeWidget3D, configure_opengl_format

configure_opengl_format()   # before QApplication

mol = MoleculeWidget3D(parent=self)
mol.open_molecule(atoms, cell=cell, adps=adps)
layout.addWidget(mol)

Embedding in your own layout (2D)

from fastmolwidget import MoleculeWidget, MoleculeLoader

mol = MoleculeWidget(parent=self)
loader = MoleculeLoader(mol)
# The loader recognizes the file format from the extension and populates `mol` accordingly
loader.load_file("structure.cif")

# drop `mol` into any QLayout
layout.addWidget(mol)

Loading a different file at runtime

viewer.load_file("new_structure.res")

Reacting to atom / bond clicks

mol.atomClicked.connect(lambda label: print(f"Clicked atom: {label}"))
mol.bondClicked.connect(lambda a, b: print(f"Clicked bond: {a}{b}"))

Mouse Controls

Action Effect
Left-drag Rotate the molecule
Right-drag Zoom in / out
Middle-drag Pan the view
Middle-click Recentre the rotation pivot on the clicked atom (3D only)
Scroll wheel Increase / decrease label font size
Left-click Select a single atom or bond
Ctrl + Left-click Toggle multi-selection
Hover over atom Show the atom label (enlarged when persistent labels are on)
Hover over bond Show the bond distance (Å) in a rounded tooltip near the cursor

Control Bar Options

MoleculeViewerWidget (2D) and MoleculeViewer3DWidget (3D)

Both viewers expose the same control bar:

Control Default Description
Grow Expand the asymmetric unit to complete molecules
Pack Unit Cell Generate all symmetry-equivalent positions within one unit cell (mutually exclusive with Grow)
Show ADP Toggle ORTEP ellipsoid / isotropic sphere rendering
Show Labels Toggle non-hydrogen atom labels
Round Bonds Switch between round cylinder and flat bond drawing
Show Hydrogens Show or hide hydrogen atoms and their bonds
Bond Width 3 Stroke width / cylinder radius for bonds (1–15)
Bond Color Opens a colour picker to change the default bond colour
Reset Rotation Center Restores the rotation pivot to the molecule's geometric centre (3D only)

API Overview

configure_opengl_format()

from fastmolwidget import configure_opengl_format
configure_opengl_format()   # call before QApplication(...)

Sets a sensible QSurfaceFormat default (24-bit depth, double-buffer, 4× MSAA) for all platforms, including macOS where the format must be configured before any GL context is created. Safe to call multiple times; any platform error is silently swallowed.

MoleculeViewer3DWidget(parent=None)

A self-contained 3D viewer combining MoleculeWidget3D with the control bar.

  • load_file(path) — load a structure file (format auto-detected from extension: .cif, .res, .ins, .xyz)
  • set_bond_color(color) — set the default color for non-selected bonds
  • render_widget — read-only property exposing the underlying MoleculeWidget3D

MoleculeWidget3D(parent=None)

Hardware-accelerated OpenGL renderer. A QOpenGLWidget (Qt ≥ 6) or QWidget subclass that can be dropped into any layout.

Rendering technique

Primitive Technique
Atoms Billboard sphere impostors — each atom is a quad; the fragment shader ray-casts a sphere and writes corrected depth values
ADP ellipsoids Impostor quads — the fragment shader ray-casts an exact ellipsoid using the inverse U_cart tensor passed as a mat3 uniform
Bonds Tessellated cylinder mesh (8-segment, 4-segment for angular style) built on the CPU and uploaded as a single VBO
Labels QPainter overlay drawn after the OpenGL pass

All GLSL shaders target #version 120 (OpenGL 2.1 / GLSL 1.20) for maximum hardware compatibility.

If PyOpenGL is not installed, or if OpenGL context creation fails at runtime, the widget falls back to a plain text overlay — the host application never crashes.

Qt Signals

Signal Signature Emitted when
atomClicked (label: str) The user clicks on an atom
bondClicked (label1: str, label2: str) The user clicks on a bond

Data Methods

  • open_molecule(atoms, cell=None, adps=None, keep_view=False)
    Load a new set of atoms and redraw.

    • atoms — list of Atomtuple(label, type, x, y, z, part) in Cartesian coordinates (Å)
    • cell — optional (a, b, c, α, β, γ) tuple; required for ADP rendering
    • adps — optional dict mapping atom labels to (U11, U22, U33, U23, U13, U12) tensors
    • keep_view — preserve current zoom, rotation, and pan when True
  • grow_molecule(atoms, cell=None, adps=None)
    Replace atoms while preserving the view. Equivalent to open_molecule(..., keep_view=True).

  • clear()
    Remove all atoms and bonds.

Display Methods

  • show_adps(value: bool) — toggle ADP ellipsoid rendering; falls back to isotropic spheres when False
  • show_labels(value: bool) — show / hide atom labels
  • show_hydrogens(value: bool) — show / hide hydrogen atoms and bonds
  • set_bond_width(width: int) — set cylinder radius scale (1–15)
  • set_bond_color(color) — set the default color for non-selected bonds; accepts QColor, hex string, or an RGB tuple
  • set_labels_visible(visible: bool) — alias for show_labels
  • setLabelFont(font_size: int) — set label font pixel size
  • set_background_color(color: QColor) — change background colour
  • reset_view() — reset zoom, rotation, and pan to defaults
  • reset_rotation_center() — restore the rotation pivot to the molecule's geometric center (undoes a middle-click recentring)
  • save_image(filename, image_scale=1.5) — render the current view to an image file

Example — feeding atom data directly to MoleculeWidget3D

from fastmolwidget import MoleculeWidget3D, configure_opengl_format
from fastmolwidget.sdm import Atomtuple

configure_opengl_format()   # before QApplication

mol = MoleculeWidget3D(parent=self)

atoms = [
    Atomtuple(label="C1", type="C", x=0.0,  y=0.0,  z=0.0,  part=0),
    Atomtuple(label="O1", type="O", x=1.22, y=0.0,  z=0.0,  part=0),
    Atomtuple(label="H1", type="H", x=-0.5, y=0.94, z=0.0,  part=0),
]

adps = {
    "C1": (0.02, 0.02, 0.02, 0.0, 0.0, 0.0),
    "O1": (0.03, 0.03, 0.03, 0.0, 0.0, 0.0),
}

cell = (5.0, 5.0, 5.0, 90.0, 90.0, 90.0)

mol.open_molecule(atoms=atoms, cell=cell, adps=adps)
mol.atomClicked.connect(lambda label: print(f"Selected: {label}"))

layout.addWidget(mol)

MoleculeViewerWidget(parent=None)

A self-contained 2D viewer combining MoleculeWidget with the control bar.

  • load_file(path) — load a structure file (format auto-detected from extension)
  • set_bond_color(color) — set the default color for non-selected bonds
  • render_widget — read-only property exposing the underlying MoleculeWidget

MoleculeWidget(parent=None)

The 2D QPainter renderer. A plain QWidget subclass you can drop into any layout.

Qt Signals

Signal Signature Emitted when
atomClicked (label: str) The user clicks on an atom; label is the atom name (e.g. "C1")
bondClicked (label1: str, label2: str) The user clicks on a bond; both atom labels are passed

Data Methods

  • open_molecule(atoms, cell=None, adps=None, keep_view=False)
    Load a new set of atoms and reset (or optionally preserve) the view.

    • atoms — list of Atomtuple(label, type, x, y, z, part) in Cartesian coordinates (Å)
    • cell — optional (a, b, c, α, β, γ) tuple of unit-cell parameters (Å / °); required for ADP rendering
    • adps — optional dict mapping atom labels to (U11, U22, U33, U23, U13, U12) ADP tensors
    • keep_view — when True, the current zoom, pan, and rotation are preserved (useful for live updates)
  • grow_molecule(atoms, cell=None, adps=None)
    Replace the atom set while always preserving the current view.
    Equivalent to calling open_molecule(..., keep_view=True).

  • clear()
    Remove all atoms and bonds from the display.

Display Methods

  • show_adps(value: bool)
    Toggle ORTEP-style ADP ellipsoid rendering. When False, atoms are drawn as isotropic spheres.

  • show_labels(value: bool)
    Show or hide non-hydrogen atom labels.

  • show_hydrogens(value: bool)
    Show or hide hydrogen / deuterium atoms and their bonds.

  • set_bond_width(width: int)
    Set the stroke width for bonds in pixels (valid range: 1–15).

  • set_bond_color(color)
    Set the default color for non-selected bonds. Accepts QColor, hex string (e.g. "#d1812a"), or an RGB tuple (floats in [0..1] or integers in [0..255]).

  • set_labels_visible(visible: bool)
    Alias for show_labels.

  • setLabelFont(font_size: int)
    Set the pixel size used for atom labels.

  • set_background_color(color: QColor)
    Change the widget background color.

  • reset_view()
    Reset zoom, pan, and rotation to their defaults.

Example — feeding atom data directly to MoleculeWidget (2D)

from fastmolwidget import MoleculeWidget
from fastmolwidget.sdm import Atomtuple

mol = MoleculeWidget(parent=self)

atoms = [
    Atomtuple(label="C1", type="C", x=0.0,  y=0.0,  z=0.0,  part=0),
    Atomtuple(label="O1", type="O", x=1.22, y=0.0,  z=0.0,  part=0),
    Atomtuple(label="H1", type="H", x=-0.5, y=0.94, z=0.0,  part=0),
]

# ADP tensors: {atom_label: (U11, U22, U33, U23, U13, U12)}
adps = {
    "C1": (0.02, 0.02, 0.02, 0.0, 0.0, 0.0),
    "O1": (0.03, 0.03, 0.03, 0.0, 0.0, 0.0),
}

cell = (5.0, 5.0, 5.0, 90.0, 90.0, 90.0)   # optional

mol.open_molecule(atoms=atoms, cell=cell, adps=adps)
mol.atomClicked.connect(lambda label: print(f"Selected: {label}"))

layout.addWidget(mol)

MoleculeWidgetProtocol

from fastmolwidget import MoleculeWidgetProtocol

A typing.Protocol (runtime-checkable) that captures the common public API of both MoleculeWidget and MoleculeWidget3D. Use it to write renderer-agnostic code:

from fastmolwidget import MoleculeWidgetProtocol

def load_into(widget: MoleculeWidgetProtocol, atoms, cell, adps) -> None:
    widget.open_molecule(atoms, cell=cell, adps=adps)
    widget.show_labels(True)

Any class that implements open_molecule, clear, show_adps, show_labels, show_hydrogens, set_bond_width, set_bond_color, set_labels_visible, set_background_color, setLabelFont, reset_view, and save_image satisfies the protocol.

MoleculeLoader(widget)

Format-aware loader that populates any widget satisfying MoleculeWidgetProtocol.

  • load_file(path, keep_view=False) — parse file and call open_molecule / grow_molecule
  • set_grow(value: bool) — toggle automatic molecule growing (expand asymmetric unit)

License

BSD 2-Clause License — see LICENSE for details.

© 2026 Daniel Kratzert

Maintainer Release Workflow

The release workflow is tag-driven and currently publishes to TestPyPI only.

  1. Ensure project.version in pyproject.toml is the version to publish.
  2. Create and push a matching tag in the format version-X.Y.Z.
  3. GitHub Actions builds sdist/wheel and uploads to TestPyPI.

Example:

git tag version-0.1.0
git push origin version-0.1.0

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

fastmolwidget-0.6.1-cp314-cp314-win_amd64.whl (161.1 kB view details)

Uploaded CPython 3.14Windows x86-64

fastmolwidget-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

fastmolwidget-0.6.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

fastmolwidget-0.6.1-cp314-cp314-macosx_14_0_arm64.whl (411.8 kB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

fastmolwidget-0.6.1-cp313-cp313-win_amd64.whl (158.4 kB view details)

Uploaded CPython 3.13Windows x86-64

fastmolwidget-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

fastmolwidget-0.6.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

fastmolwidget-0.6.1-cp313-cp313-macosx_14_0_arm64.whl (411.8 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

fastmolwidget-0.6.1-cp312-cp312-win_amd64.whl (158.4 kB view details)

Uploaded CPython 3.12Windows x86-64

fastmolwidget-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

fastmolwidget-0.6.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

fastmolwidget-0.6.1-cp312-cp312-macosx_14_0_arm64.whl (411.7 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

File details

Details for the file fastmolwidget-0.6.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 79bd46e5144bf2acb6a5de0270e54c7cbcbe04b263fca9d38b8a8ea92fe06169
MD5 9c9f77f3588c129d3216922949dd81ed
BLAKE2b-256 dfd6c49af3cc87aae5c4e3c7356109bbe8910095ea955577339845c7092c4cfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp314-cp314-win_amd64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 49bca9eb5b5e8a888cf6700e4258522a4fc21955263a7ae3b4d3900abdf247ec
MD5 f3fc9eac6fc24e1a341e39818b9b53f5
BLAKE2b-256 64789e168303fbd85aecb8bd23bad8728d754692194d05da4ee83a981ae5739c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 82bcfa663b6ddf4df517cd4148b72642c6b0a73c327f841b3166f391127194db
MD5 0125dfc2576a954668c30f778fb1e420
BLAKE2b-256 91e43fdf302d635ff8f204fe7aaa80c3eb5a2710b51ed85731c1cdc592d078fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cd650f5039466f82fd2babc0e41d51e9775f1f7afddbe9ee380c5a6375fdf8a4
MD5 b9f5060ea6d6c94a0e04962afd253bfe
BLAKE2b-256 3d2f6b4f354699137f2b2eb2dd7d2f93e1735913504baaa6025a14f7329612c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ffbb17e970bad2801f2ef10be294f4eb19ec5f06d744d080540980d2cccbab31
MD5 5d69a49b3f883d5905a186e05d38d2ff
BLAKE2b-256 c471ce7788b7f3248d047c55c52a7105b5108bee1088c0e14626f71313bed8da

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp313-cp313-win_amd64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bf0e542b9bca9fd10d46560a40c18de28e6d9d5ca12145f592baaf2658ce13ce
MD5 a40b57935fec030216c52c992da67616
BLAKE2b-256 bc2541deef32003eba5ce1cbe9f5f347aed5e93b0dbcef7899da1e0994585fba

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0bd641301f6499995fdcd298b5b59258ba3d72f6abf319119a12620d949c9afe
MD5 0c5950cfbba8e0b9965a80c1bca440bb
BLAKE2b-256 b31d87f49610109d2af1a6795ff15a930e23c93c64c7764571c336c19ac85d4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7f143ff64ac3c1eccd3b9fe945a25782c4fc67d39e25fa25d0f291d407291ea2
MD5 2c0850d6098ee5fe331078fcc4ad7383
BLAKE2b-256 b953c57f1c3fafe9d0994744b3c7a2b0b9768f979f8e8b8660e068400421bd20

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 27559c45898881d7bf2a461ef548485727ef8af7f6bac99cccf6767ca3c8df7b
MD5 3a1a136bbcfb43aeddebf21c51c0452b
BLAKE2b-256 90f9d5a28ddbbabb89f2113c40c3fbd2c37eb0d08248fcb684b12c6e82e79abc

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp312-cp312-win_amd64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 daef21e0843885a218db85e98d6880642d6017389790217f29eae68882e4d2bf
MD5 e213577bf0fb628c4862eccfe4404dfa
BLAKE2b-256 0b4a9116d6bbd435f4a9054b5b5224df1efb499596331c9351cf024a21ef2089

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d5dcc50236cb5e0e8691f2561837df6a4070ab6762bc35218f6bc62b3823591e
MD5 2f45ff5c1f2e50f014d829b9c6ce3931
BLAKE2b-256 f6e92d852eeaaa506479cc2bde7f84a97759e4cc04680ede2da6bf19ac5dbbe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

File details

Details for the file fastmolwidget-0.6.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.6.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 603b5e158d01afcf5f511979ee05443172d0b3bcebeef22f852b885e7eeb54e8
MD5 2c44fa0aca7e9ec5440aaa2cdacee6a6
BLAKE2b-256 6d4a850ea91d9b5e6b6d084522e40e9b28f42621a33d465e3f5953b244899d45

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.6.1-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: python-publish.yml on dkratzert/Fastmolwidget

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page