Skip to main content

A PyQt/PySide widget to display crystal structures

Project description

Latest Release Unit Tests Contributions PyPI package Packaging status

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 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
  • Ball-and-stick and isotropic sphere
  • Real-time 3D rendering via MoleculeWidget3D — sphere impostors and tessellated cylinder bonds in hardware-accelerated OpenGL
  • 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; hovering over a bond shows the distance in Ångströms
  • 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

# with PySide6 (recommended)
uv add "fastmolwidget[pyside6]"

# or PyQt6
uv add "fastmolwidget[pyqt6]"

# add 3D OpenGL support (optional, requires Qt ≥ 6.7 and pyopenGL installed in the Python environment)
uv add "fastmolwidget[pyside6,gl3d]"

Optional C++ Acceleration (sdm_cpp)

The symmetry-growing step (SDM) has an optional C++ extension that uses pybind11 and OpenMP for a significant speed-up on large structures. The pure-Python fallback is always available.

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

# macOS: optionally install libomp for multi-threaded acceleration
brew install libomp

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

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

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)
Alt/Option + Left-click On systems without a middle mouse button, Alt/Option + Left-click recentres the rotation pivot on the clicked atom (same as Middle-click)
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

Keyboard Shortcuts

The widget must have keyboard focus (click on it once) for these shortcuts to work.

Key Effect
F1 Align the view so that the reciprocal axis a* points towards the viewer (requires a unit cell)
F2 Align the view so that the reciprocal axis b* points towards the viewer (requires a unit cell)
F3 Align the view so that the reciprocal axis c* points towards the viewer (requires a unit cell)

Note: The F-key shortcuts are available in both the 2D (MoleculeWidget) and 3D (MoleculeWidget3D) renderers. They have no effect when no unit cell is loaded (e.g. plain XYZ files).

Control Bar Options

MoleculeViewerWidget (2D) and MoleculeViewer3DWidget (3D)

Both viewers expose the same two-row control bar:

Row 1 — structure toggles

Control Default Description
Open File… Opens a file dialog to load a structure file
Grow Expand the asymmetric unit to complete molecules (mutually exclusive with Pack Unit Cell)
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
Hide Hydrogens When checked, hydrogen atoms and their bonds are hidden

Row 2 — bond and view controls

Control Default Description
Bond Width 3 Stroke width / cylinder radius for bonds (2D: 1–15, 3D: 0–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 (both 2D and 3D)
Save Image… Opens a file-save dialog and writes the current view to a PNG or JPEG file

When Pack Unit Cell is active, a unit-cell axis indicator (a = red, b = green, c = blue) is drawn in the bottom-left corner of the widget and rotates with the view.

API Overview

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)
  • grow() — expand the asymmetric unit to complete molecules using crystal symmetry; deactivates Pack Unit Cell if active; no-op for XYZ files or when no file is loaded
  • 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.

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_visible_parts(parts: set[int] | None) — filter by disorder part; None shows all atoms; an empty set hides all atoms; e.g. set_visible_parts({0, 1}) shows only Part 0 and Part 1
  • 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
  • align_best_view() — rotate the structure so the widest face points towards the viewer (PCA on visible atoms; H/D excluded when hydrogen visibility is off)
  • reset_rotation_center() — restore the rotation pivot to the molecule's geometric center (undoes a middle-click recentring)
  • save_image(filename: Path, image_scale: float = 1.5) — capture the current OpenGL framebuffer and write it to a PNG or JPEG file (format inferred from the file extension). The captured image is then scaled by image_scale using smooth bilinear filtering before saving. Labels appear in the saved image if they are active at the time of the call.

Example — feeding atom data directly to MoleculeWidget3D

from fastmolwidget import MoleculeWidget3D
from fastmolwidget.sdm import Atomtuple

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)
  • grow() — expand the asymmetric unit to complete molecules using crystal symmetry; deactivates Pack Unit Cell if active; no-op for XYZ files or when no file is loaded
  • 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_visible_parts(parts: set[int] | None)
    Filter by disorder part number. None (the default) shows all parts. Pass a set of integers to restrict rendering to those parts; an empty set hides every atom. Example: widget.set_visible_parts({0, 1}) shows Part 0 and Part 1.

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

  • align_best_view()
    Rotate the structure to the orientation that maximises atom visibility for screenshots. Uses PCA on the currently visible atom positions: the thinnest axis of the atom cloud points towards the camera so the widest face faces the viewer. Hydrogen / deuterium atoms are excluded when their visibility is turned off.

  • save_image(filename: Path, image_scale: float = 1.5)
    Render the current structure view to an image file.
    The widget is redrawn off-screen at widget_size × image_scale; the result is saved as PNG or JPEG (format inferred from the file extension).
    Labels appear in the saved image if they are active at the time of the call.

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)

Advanced API

MoleculeWidgetProtocol

The core rendering interface is defined by MoleculeWidgetProtocol. Both MoleculeWidget (2D) and MoleculeWidget3D (3D) satisfy this protocol, making them drop-in replacements for each other.

from fastmolwidget.molecule_base import MoleculeWidgetProtocol
from fastmolwidget import MoleculeWidget3D

def do_something_with_widget(widget: MoleculeWidgetProtocol):
    ...

3D Application Example

import sys
from qtpy.QtWidgets import QApplication
from fastmolwidget import MoleculeViewer3DWidget

app = QApplication(sys.argv)
viewer = MoleculeViewer3DWidget()
viewer.load_file("examples/test_molecule.res")
viewer.show()
sys.exit(app.exec_())

3D Generic Widget Example

import sys
from qtpy.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from fastmolwidget import MoleculeWidget3D
from fastmolwidget.loader import MoleculeLoader

app = QApplication(sys.argv)

main_window = QMainWindow()
central_widget = QWidget(main_window)
layout = QVBoxLayout(central_widget)

# Create and configure the 3D molecule widget
molecule_widget = MoleculeWidget3D()
molecule_widget.set_bond_color("#FF5733")  # Example: set bond color to a shade of orange

# Load a molecule file (CIF, RES, or XYZ format)
loader = MoleculeLoader(molecule_widget)
loader.load_file("examples/test_molecule.res")

layout.addWidget(molecule_widget)
main_window.setCentralWidget(central_widget)

main_window.show()
sys.exit(app.exec_())

Running the Examples

To run the provided examples, you can use the following commands:

# 2D Viewer example
python -m fastmolwidget.examples.viewer_2d_example

# 3D Viewer example
python -m fastmolwidget.examples.viewer_3d_example

# Generic 3D Widget example
python -m fastmolwidget.examples.generic_3d_widget_example

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.8.0-cp314-cp314-win_amd64.whl (177.3 kB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

fastmolwidget-0.8.0-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.8.0-cp314-cp314-macosx_14_0_universal2.whl (260.6 kB view details)

Uploaded CPython 3.14macOS 14.0+ universal2 (ARM64, x86-64)

fastmolwidget-0.8.0-cp313-cp313-win_amd64.whl (174.6 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

fastmolwidget-0.8.0-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.8.0-cp313-cp313-macosx_14_0_universal2.whl (260.6 kB view details)

Uploaded CPython 3.13macOS 14.0+ universal2 (ARM64, x86-64)

fastmolwidget-0.8.0-cp312-cp312-win_amd64.whl (174.6 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

fastmolwidget-0.8.0-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.8.0-cp312-cp312-macosx_14_0_universal2.whl (260.4 kB view details)

Uploaded CPython 3.12macOS 14.0+ universal2 (ARM64, x86-64)

File details

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

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f657b5b60cee9369d4134eb761fdbc693338f105075a6c829df7b48868891a2a
MD5 cd9955a5ebbb6f4eedd31180afe9057a
BLAKE2b-256 d8239fcd78c8d002887c5fb93a6f8353e4b5b0b65725e83fcedd5fac92c4e300

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9ee3472eeaba34a7ef53ce4b73eb6c3e5f63ba33badb850b64bba0b17569aa35
MD5 c564ee7ef4c98e9d969b7bef124877b6
BLAKE2b-256 1d24bd32b82f90f9d3ece4def6aa6d9cfcf5c1750ea7dfe744a63ef0a1c3ebb4

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2638af823e0c8b45aafeb5e2a78998d2ba5ade1d4efb1e2fdf7637ac3b6a6b52
MD5 5f999e599d4033a4978410ef8c0a3793
BLAKE2b-256 9b813b99e6196a6b85009220fa2453743cbcd3aec589af265646e74101d23570

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp314-cp314-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp314-cp314-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 9a233054e9acc3246ae395199df56aa2a49b46f16e70153b61289e4d434ef6c9
MD5 2388ecc1b02356305af863fbc0c04311
BLAKE2b-256 2814813142165ee2c761513bc93c97cdf017ba9a317de91f171cb05d365a9ed1

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-cp314-cp314-macosx_14_0_universal2.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.8.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 763a705f8ef61f8e9319fc9896e87aba658b8df25fab1ab826c7b24480e96192
MD5 10963eafb5ba12012a07ca57335e8ed1
BLAKE2b-256 e81a10ea8e25fa3e5fcfbe2da00a57457d730b5af84351d5e08c5c3cd3c582ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 24e04aa7ae220b258dc18009cea9ce6fd11b6ef9fad46c3e10fc4bcb54db869d
MD5 31c2a2c22e3fb4e673633cd67f266e8c
BLAKE2b-256 25a6204a9505b7a93dcd75001bac3079fb6bb92a18a9da24413d9b31aceb906a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 057de28d78468e1d369ea05a546f87956f91fc4ec7a77dc3f870ae8989df609b
MD5 9b833d7095f74a425f36bc516527a368
BLAKE2b-256 03baa7da650fd046bfed861a69a7ed41bc875ca717e63e0bd04a5dd085aa068b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp313-cp313-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp313-cp313-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 3a070e16a56caf8371f12e7ef0b5f1b99e829e1451d261af95c8cb19185db8fa
MD5 4c78e3677f9a56fd3db9467027af2ff1
BLAKE2b-256 aad9fc9beac68b21157fa9897e5ff8b019b8abbb7d18b612ecca9611dcb04fd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-cp313-cp313-macosx_14_0_universal2.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.8.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3f10e056d448160e72789e7bc21894af4b249451c1f1f437dcec3770e1b013e2
MD5 d6126e6432672b96fdcf058d4c3517eb
BLAKE2b-256 1535dd8cfadae6690dacae61cd85b2abb7e9c4c90e3d4d8a011d18277fb716d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d5083915b35db06027fb7910086183b0d5a7a8c902d1fd937b7ecaf0640c8a03
MD5 fa4d77b60502005f98a2654050628449
BLAKE2b-256 3187f53ea8fa9f204c8f0d2411c29aa123673780b5029f6f27a1ce74901cd63e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 93ee380e018e5de4cc93f5840b2e6bbc4ec32fa615cef56bc7e07b345ded04f0
MD5 5ec1d192b9570ffc9fbb7ac3f9f3d65a
BLAKE2b-256 a0a73af32197aa7a1bbad0812602a6cc811f397dcfc8b9d5054da94298223587

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-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.8.0-cp312-cp312-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for fastmolwidget-0.8.0-cp312-cp312-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 ad23b40fcd6d505cea2c2f14e79f6a27824e81b265111df7e0f631a93602ea13
MD5 5b0b0e46d73418fcca2892004a39f687
BLAKE2b-256 ef9b430393938f92ceb6fa9508caab09a11b07f7768d5027baa0a3d53639dfe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmolwidget-0.8.0-cp312-cp312-macosx_14_0_universal2.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