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 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) |
|---|---|
| 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/bondClickedQt 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) andMoleculeWidget3D(3D) are plainQWidgetsubclasses; drop either into any layout - Ready-to-use viewers —
MoleculeViewerWidget(2D) andMoleculeViewer3DWidget(3D) bundle the renderer with a full control bar - Common protocol —
MoleculeWidgetProtocollets 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
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)set_bond_color(color)— set the default color for non-selected bondsrender_widget— read-only property exposing the underlyingMoleculeWidget3D
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 ofAtomtuple(label, type, x, y, z, part)in Cartesian coordinates (Å)cell— optional(a, b, c, α, β, γ)tuple; required for ADP renderingadps— optionaldictmapping atom labels to(U11, U22, U33, U23, U13, U12)tensorskeep_view— preserve current zoom, rotation, and pan whenTrue
-
grow_molecule(atoms, cell=None, adps=None)
Replace atoms while preserving the view. Equivalent toopen_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 whenFalseshow_labels(value: bool)— show / hide atom labelsshow_hydrogens(value: bool)— show / hide hydrogen atoms and bondsset_bond_width(width: int)— set cylinder radius scale (1–15)set_bond_color(color)— set the default color for non-selected bonds; acceptsQColor, hex string, or an RGB tupleset_labels_visible(visible: bool)— alias forshow_labelssetLabelFont(font_size: int)— set label font pixel sizeset_background_color(color: QColor)— change background colourreset_view()— reset zoom, rotation, and pan to defaultsreset_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 byimage_scaleusing 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)set_bond_color(color)— set the default color for non-selected bondsrender_widget— read-only property exposing the underlyingMoleculeWidget
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 ofAtomtuple(label, type, x, y, z, part)in Cartesian coordinates (Å)cell— optional(a, b, c, α, β, γ)tuple of unit-cell parameters (Å / °); required for ADP renderingadps— optionaldictmapping atom labels to(U11, U22, U33, U23, U13, U12)ADP tensorskeep_view— whenTrue, 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 callingopen_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. WhenFalse, 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. AcceptsQColor, hex string (e.g."#d1812a"), or an RGB tuple (floats in[0..1]or integers in[0..255]). -
set_labels_visible(visible: bool)
Alias forshow_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. -
save_image(filename: Path, image_scale: float = 1.5)
Render the current structure view to an image file.
The widget is redrawn off-screen atwidget_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastmolwidget-0.7.4-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 170.9 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db3da7ac0a0b79dc332185ff0ecd6b8e2d82315c8b63027e7528429a7ee45888
|
|
| MD5 |
5da6cd7282b7271a1a6fcedaf7450f04
|
|
| BLAKE2b-256 |
2e4304c1a91342c91c9d386bb4a4f1383bcb36e3974032a5a5a5bf48e053a24e
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp314-cp314-win_amd64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp314-cp314-win_amd64.whl -
Subject digest:
db3da7ac0a0b79dc332185ff0ecd6b8e2d82315c8b63027e7528429a7ee45888 - Sigstore transparency entry: 1442505373
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d694af02a6893bf64c6e4237f3fcf496a865540b4e1686abf1eb2646e8938669
|
|
| MD5 |
7f33b8b0fd420731b3bc17f21a1ebad3
|
|
| BLAKE2b-256 |
0fee0544847d625b63bdb58324a3d971b5e2fd052c1fb85bc1c56dc092b25c06
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl -
Subject digest:
d694af02a6893bf64c6e4237f3fcf496a865540b4e1686abf1eb2646e8938669 - Sigstore transparency entry: 1442506057
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.14, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ded19ac757b4a88326ba0d662e763419452acb76dd13ddec3c8b1415fcdd221
|
|
| MD5 |
165a7ec0fdaf5c3e1cfff69f07a3170b
|
|
| BLAKE2b-256 |
6d5e2eadc214c33909071292f7d2b9df24c96773ef711a3bfeecc95e7be1b9bb
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
0ded19ac757b4a88326ba0d662e763419452acb76dd13ddec3c8b1415fcdd221 - Sigstore transparency entry: 1442505513
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp314-cp314-macosx_14_0_universal2.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp314-cp314-macosx_14_0_universal2.whl
- Upload date:
- Size: 254.2 kB
- Tags: CPython 3.14, macOS 14.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10dfc64899ec068d67769e8b27010860275a7e5cf6bc592eeedd156c7d2dad0b
|
|
| MD5 |
0557af8b5a7d5b01e9f3fb496baf9eda
|
|
| BLAKE2b-256 |
9289b87241c637cc3d6ca4294d81e15e7b3e6687f0d0f8e242b7ad75440a48f8
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp314-cp314-macosx_14_0_universal2.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp314-cp314-macosx_14_0_universal2.whl -
Subject digest:
10dfc64899ec068d67769e8b27010860275a7e5cf6bc592eeedd156c7d2dad0b - Sigstore transparency entry: 1442505886
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 168.2 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f559aea0a5cebbc9d6852a8fd5cc861436ad3f3184f3e5b828690660723d6d2e
|
|
| MD5 |
1fb36ea462f50307b3f2d84fcdddaaba
|
|
| BLAKE2b-256 |
1eeb68fa842b7e47bf49680c9b630359ef293e8e093605a16402be17b92ce550
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp313-cp313-win_amd64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp313-cp313-win_amd64.whl -
Subject digest:
f559aea0a5cebbc9d6852a8fd5cc861436ad3f3184f3e5b828690660723d6d2e - Sigstore transparency entry: 1442505446
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa11d434e7c11bc1c2334183bd0791d73049cbdbff680b6700f0952879b797bb
|
|
| MD5 |
5584699392ae316a73f9fdc08a002065
|
|
| BLAKE2b-256 |
cc80ecd7f0e3872d2fd53cc999fee043d8ca653cc081c611bb865c75a4bd9b47
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl -
Subject digest:
fa11d434e7c11bc1c2334183bd0791d73049cbdbff680b6700f0952879b797bb - Sigstore transparency entry: 1442506255
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.13, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1864731b24bb0092b2e2e085152b16258fd10b3b5b54e51c6d96b12201d7ee7e
|
|
| MD5 |
f33f20e3bf54919a1a63d621bf91404c
|
|
| BLAKE2b-256 |
384da355ab06b0172c7ca14e75c5e8d6b6cd32c24707b79c024743d7eefd849a
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
1864731b24bb0092b2e2e085152b16258fd10b3b5b54e51c6d96b12201d7ee7e - Sigstore transparency entry: 1442505697
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp313-cp313-macosx_14_0_universal2.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp313-cp313-macosx_14_0_universal2.whl
- Upload date:
- Size: 254.2 kB
- Tags: CPython 3.13, macOS 14.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5c606002a3c3c1020773c289d6ce41dc8786b7d0d2bd2d959c769eb43d9013b
|
|
| MD5 |
8679bbd3112047a8737839ebdc2f6c34
|
|
| BLAKE2b-256 |
f5a6ad7c4243172ca65eace3dbcd7aba8aa0e9f3d755f52885c15c3a9c2ec9a6
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp313-cp313-macosx_14_0_universal2.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp313-cp313-macosx_14_0_universal2.whl -
Subject digest:
d5c606002a3c3c1020773c289d6ce41dc8786b7d0d2bd2d959c769eb43d9013b - Sigstore transparency entry: 1442506166
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 168.2 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
757091fba8aa899e67bdcdbe3acd2632344481405a3fa6a65ec75d1969125334
|
|
| MD5 |
2b94bcc7fc0204f8a2875841d66ffb1a
|
|
| BLAKE2b-256 |
e61a9baf8c80f8aabee24d0dd8f6157d1eced621d26b2e6a1aee5eb5c44f1a58
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp312-cp312-win_amd64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp312-cp312-win_amd64.whl -
Subject digest:
757091fba8aa899e67bdcdbe3acd2632344481405a3fa6a65ec75d1969125334 - Sigstore transparency entry: 1442505805
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad54d928d7c96d16adfe8dacdefc1364dd3c81047f222202c635273696eb2ecc
|
|
| MD5 |
019ff1240b53121485249a76d9717f1b
|
|
| BLAKE2b-256 |
92e271f4174e46873906ac52438c53666b8c9ff2cb88b9f86be4bccd35a3458d
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl -
Subject digest:
ad54d928d7c96d16adfe8dacdefc1364dd3c81047f222202c635273696eb2ecc - Sigstore transparency entry: 1442506329
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3380307a1fddb239a2c2f8b616ba892e43cb92ab816b97fddfe71c6c76c71d5
|
|
| MD5 |
081fb940541d231fc5c9387d3ae45451
|
|
| BLAKE2b-256 |
aaa58a47807b1db9a31c994dde390d5c8cafa0c1b6f51dcbbf5b29533ef6dec7
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
d3380307a1fddb239a2c2f8b616ba892e43cb92ab816b97fddfe71c6c76c71d5 - Sigstore transparency entry: 1442505982
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fastmolwidget-0.7.4-cp312-cp312-macosx_14_0_universal2.whl.
File metadata
- Download URL: fastmolwidget-0.7.4-cp312-cp312-macosx_14_0_universal2.whl
- Upload date:
- Size: 254.1 kB
- Tags: CPython 3.12, macOS 14.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b821c6d2aa5b1ca7db376ad048091dba49926dc4c4f2ca4b861f7b0942335c68
|
|
| MD5 |
1ba4f92a1c4242fb1276c2cb8d70a948
|
|
| BLAKE2b-256 |
60c3330b0eb3d27f9c468c0b188c707eec12f73d689b3199101c81ff6b46aa54
|
Provenance
The following attestation bundles were made for fastmolwidget-0.7.4-cp312-cp312-macosx_14_0_universal2.whl:
Publisher:
python-publish.yml on dkratzert/Fastmolwidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastmolwidget-0.7.4-cp312-cp312-macosx_14_0_universal2.whl -
Subject digest:
b821c6d2aa5b1ca7db376ad048091dba49926dc4c4f2ca4b861f7b0942335c68 - Sigstore transparency entry: 1442505592
- Sigstore integration time:
-
Permalink:
dkratzert/Fastmolwidget@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Branch / Tag:
refs/tags/version-0.7.4 - Owner: https://github.com/dkratzert
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6f601afcdc7d3dd698648223d7b6985152c32d70 -
Trigger Event:
push
-
Statement type: