Crystal Geometry
3D crystal geometry engine for crystallographic visualization. Computes polyhedra from Crystal Description Language (CDL) strings using half-space intersection with point group symmetry.
Part of the Gemmology Project.
Installation
pip install crystal-geometry
Quick Start
from crystal_geometry import cdl_string_to_geometry, create_octahedron
# Create geometry from CDL string
geom = cdl_string_to_geometry("cubic[m3m]:{111}@1.0 + {100}@1.3")
print(f"Vertices: {len(geom.vertices)}, Faces: {len(geom.faces)}")
# Use convenience constructors
octahedron = create_octahedron()
print(f"Octahedron has {len(octahedron.faces)} faces")
Features
- CDL Integration: Parse Crystal Description Language strings to 3D geometry
- Point Group Symmetry: All 32 crystallographic point groups supported
- Half-Space Intersection: Robust geometry computation using scipy
- 7 Crystal Systems: Cubic, tetragonal, orthorhombic, hexagonal, trigonal, monoclinic, triclinic
- Miller Indices: Full support for 3-index (hkl) and 4-index (hkil) notation
- Amorphous Geometry (v2.0): 7 parametric shape generators for non-crystalline materials (massive, botryoidal, reniform, stalactitic, mammillary, nodular, conchoidal)
- Aggregate Layouts (v2.0): 6 spatial arrangement algorithms for crystal aggregates (parallel, random, radial, epitaxial, druse, cluster)
- Nested Growth (v2.0): Geometry support for overgrowth relationships via the
>operator
Core API
Geometry Generation
from cdl_parser import parse_cdl
from crystal_geometry import cdl_to_geometry, cdl_string_to_geometry
# From CDL string directly
geom = cdl_string_to_geometry("cubic[m3m]:{111}")
# From parsed description (more control)
desc = parse_cdl("cubic[m3m]:{111}@1.0 + {100}@1.3")
geom = cdl_to_geometry(desc, c_ratio=1.0)
Convenience Constructors
from crystal_geometry import (
create_octahedron,
create_cube,
create_dodecahedron,
create_truncated_octahedron,
)
# Regular polyhedra
octahedron = create_octahedron(scale=1.0)
cube = create_cube(scale=1.0)
dodecahedron = create_dodecahedron(scale=1.0)
truncated = create_truncated_octahedron(octahedron_scale=1.0, cube_scale=1.3)
CrystalGeometry Class
from crystal_geometry import CrystalGeometry
geom = cdl_string_to_geometry("cubic[m3m]:{111}")
# Properties
geom.vertices # Nx3 numpy array of vertex positions
geom.faces # List of face vertex indices
geom.face_normals # List of unit normal vectors
geom.face_forms # Form index for each face
geom.face_millers # Miller indices for each face
geom.is_amorphous # True for amorphous geometry (v2.0)
geom.aggregate_metadata # AggregateMetadata or None (v2.0)
geom.component_ids # Per-face component ID for aggregates/twins
# Methods
geom.get_edges() # Get unique edges as vertex pairs
geom.center() # Compute centroid
geom.scale_to_unit() # Scale to fit unit sphere
geom.translate(offset) # Translate by vector
geom.euler_characteristic() # V - E + F (should be 2)
geom.is_valid() # Verify geometry integrity
geom.to_dict() # Export to dictionary
AggregateMetadata (v2.0)
from crystal_geometry import AggregateMetadata
# Attached to CrystalGeometry.aggregate_metadata for aggregate geometry
# Properties:
# arrangement: str - Layout algorithm ('parallel', 'random', etc.)
# n_instances: int - Number of crystal instances
# spacing: float|None - Spacing between instances
# orientation: str|None - Orientation mode
Symmetry Operations
from crystal_geometry import (
get_point_group_operations,
generate_equivalent_faces,
miller_to_normal,
LatticeParams,
)
# Get symmetry operations for a point group
ops = get_point_group_operations('m3m') # 48 operations
ops = get_point_group_operations('6/mmm') # 24 operations
# Generate equivalent faces from one Miller index
faces = generate_equivalent_faces(1, 1, 1, 'm3m') # 8 faces for {111}
faces = generate_equivalent_faces(1, 0, 0, 'm3m') # 6 faces for {100}
# Convert Miller indices to normal vector
lattice = LatticeParams.cubic()
normal = miller_to_normal(1, 1, 1, lattice)
# Create lattice parameters
cubic = LatticeParams.cubic()
tetragonal = LatticeParams.tetragonal(c_ratio=1.5)
hexagonal = LatticeParams.hexagonal(c_ratio=1.2)
Crystal Systems and Point Groups
| System | Point Groups |
|---|---|
| Cubic | m3m, 432, -43m, m-3, 23 |
| Tetragonal | 4/mmm, 422, 4mm, -42m, 4/m, -4, 4 |
| Hexagonal | 6/mmm, 622, 6mm, -6m2, 6/m, -6, 6 |
| Trigonal | -3m, 32, 3m, -3, 3 |
| Orthorhombic | mmm, 222, mm2 |
| Monoclinic | 2/m, 2, m |
| Triclinic | -1, 1 |
Examples
Diamond-like Crystal
# Octahedron truncated by cube
geom = cdl_string_to_geometry("cubic[m3m]:{111}@1.0 + {100}@1.3")
assert len(geom.faces) == 14 # 8 octahedron + 6 cube
Garnet-like Crystal
# Dodecahedron with trapezohedron
geom = cdl_string_to_geometry("cubic[m3m]:{110}@1.0 + {211}@0.6")
Hexagonal Prism
# Prism with pinacoid termination
geom = cdl_string_to_geometry("hexagonal[6/mmm]:{10-10}@1.0 + {0001}@0.5")
Quartz-like Crystal
# Prism with rhombohedron
geom = cdl_string_to_geometry("trigonal[-3m]:{10-10}@1.0 + {10-11}@0.8")
Amorphous Shape (v2.0)
from crystal_geometry import generate_amorphous_shape
# Generate parametric mesh for an amorphous material
geom = generate_amorphous_shape("botryoidal", radius=1.0, seed=42)
print(geom.is_amorphous) # True
Available shapes: massive, botryoidal, reniform, stalactitic, mammillary, nodular, conchoidal.
Crystal Aggregate (v2.0)
from crystal_geometry import generate_aggregate, cdl_string_to_geometry
# Generate base geometry, then arrange as aggregate
base = cdl_string_to_geometry("trigonal[32]:{10-10}@1.0 + {10-11}@0.8")
aggregate = generate_aggregate(base, arrangement="cluster", count=12, seed=42)
print(aggregate.aggregate_metadata.n_instances) # 12
Available arrangements: parallel, random, radial, epitaxial, druse, cluster. Instance count is capped at 200 for performance.
Source Modules
| Module | Purpose |
|---|---|
geometry.py |
Core half-space intersection engine |
symmetry.py |
Point group symmetry operations |
twins.py |
Twin geometry computation |
habits.py |
Convenience constructors |
amorphous.py |
Parametric mesh generators for amorphous shapes (v2.0) |
aggregates.py |
Spatial layout algorithms for crystal aggregates (v2.0) |
models.py |
CrystalGeometry, AggregateMetadata data classes |
modifications.py |
Morphological modification transforms |
Requirements
- Python >= 3.10
- numpy >= 1.20.0
- scipy >= 1.7.0
- cdl-parser >= 2.0.0
Documentation
See crystal-geometry.gemmology.dev for full documentation.
License
MIT License - see LICENSE for details.
Related Packages
- cdl-parser - Crystal Description Language parser
- mineral-database - Mineral preset database
- crystal-renderer - SVG/3D rendering
Metadata
Release files for gemmology-crystal-geometry 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gemmology_crystal_geometry-2.0.0.tar.gz | 93.6 kB | Details |
Built distributions (wheels)
Total release size: 2.6 MB
Release files / gemmology_crystal_geometry-2.0.0.tar.gz
| Download URL | gemmology_crystal_geometry-2.0.0.tar.gz |
|---|---|
| Size | 93.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ce5652e22d89462ecdfc51c06ca74ab2f1ade9875520b2d0b1fc1d217a3d9806
|
|
BLAKE2b-256 checksum How to use checksums |
491a86209de757606309bdd48e829c9de9e444a95f3231bc2141e529d826afdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp313-cp313-win_amd64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 158.6 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0828f7e56046c676c7238ba6c2e053e5a68ffe127e46b517173b7fdff815e930
|
|
BLAKE2b-256 checksum How to use checksums |
c9a4942607a94c9ec9687b59bc003e43db24a78c51cc6a9e943dec4c110e3015
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp313-cp313-win32.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp313-cp313-win32.whl |
|---|---|
| Size | 149.7 kB |
| Tags | CPython 3.13 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
ae48d000f31f0376fb78803beeb41009d5c19d7829d8172bac590502c1ceeff9
|
|
BLAKE2b-256 checksum How to use checksums |
a666f9e5d75ca55fdcfe1e68fbbb3b1acac9258a0b4e25018b8cb1c7ce4e3491
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 180.2 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
1588ac25c218d5201e3215ab739aa32c8f3c2696e6b1f9cd47138121800d441a
|
|
BLAKE2b-256 checksum How to use checksums |
d223d0edf1eaeabc6fe853db8ba6463e8e9c5d7c999a4b8b315e34b08b3ce73f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 141.8 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
77d459c1c29a8e0e8b750d6ec11e9bd17493d4c4818895be176c7cf2d2cb25e0
|
|
BLAKE2b-256 checksum How to use checksums |
e5fd1027cdd1b0028daf33efc6ac02885a08a10c34adfa63e8ca0fcd0dd3aad3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp312-cp312-win_amd64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 158.6 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4eb0116ee45c470a4af231ba23e9a352fe0f03a9a438915e60df3e61228efd5c
|
|
BLAKE2b-256 checksum How to use checksums |
3c7418174eca9bac928be929f04dc8d4dd7eaf3658d49839f3f4350a3105ddd4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp312-cp312-win32.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp312-cp312-win32.whl |
|---|---|
| Size | 149.7 kB |
| Tags | CPython 3.12 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
db2afca2c47e2eeaf6fd785c42f3d2e32c0fa2662056b51f9b5f64eaec4f2a89
|
|
BLAKE2b-256 checksum How to use checksums |
20d211bff92b988983deaa8d1c13280c694771d5143034d5f978c0a5240fd948
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 180.1 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
1de50120ad9cc6391a2e5606f9c202f9d6b0e9b0291d2aa85d120549eca999f4
|
|
BLAKE2b-256 checksum How to use checksums |
916f0852bb617b534adc107b096f804bd248631fe853574df634dda3f6027172
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 141.7 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
048104dfcd6f7364bb0f6dd4ae3a7f74053fcc944c8b4ccb7f03338274724d03
|
|
BLAKE2b-256 checksum How to use checksums |
651ddf605b7822d16614069a2f745068fe3b9703cbf3a74e25707991c8530536
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp311-cp311-win_amd64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 157.1 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2037005016674d82ae84a75869f76753b05a377ddc7c823ddae58e1e213ccac3
|
|
BLAKE2b-256 checksum How to use checksums |
7cf7d414a1820f37bbc7caa260faa73ed69148d23908c1d37bafa26ac114c591
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp311-cp311-win32.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp311-cp311-win32.whl |
|---|---|
| Size | 148.9 kB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
a92dc1987459355816d2f78ad1144d9edc3027cb3cb332e6ee3e5f6a06b12175
|
|
BLAKE2b-256 checksum How to use checksums |
a99f29551c1480a49646b41b814accaa54385a8cae539f347756e1f34abf692d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 179.6 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
4e2b8c8f82aabac30ff1f754ba067ad0f3649903fe6951d8029b223ad905eeb6
|
|
BLAKE2b-256 checksum How to use checksums |
d5a34ab8a1b276b529e3d86b9293215a9e6e168f48bda530f855adce1409d505
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 141.6 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
56edf54ce02a9563357f5825ae67b9e7d6d62a6433c6db53c9a907e96ab57bb8
|
|
BLAKE2b-256 checksum How to use checksums |
e8a8a9e44d153697111dd674533a5e5b8e18a9b68564d5534713ca794b80b446
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp310-cp310-win_amd64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 156.4 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cbfb169a855cd2e1fad8e4e82c02731c75a35a84da00dff3898650c18e10102f
|
|
BLAKE2b-256 checksum How to use checksums |
253221ca9f917b04b5c6ef44329fefccab80227b1e0e1608c9f9f4cded6d2310
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp310-cp310-win32.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp310-cp310-win32.whl |
|---|---|
| Size | 147.9 kB |
| Tags | CPython 3.10 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
d640b32141a237863e195f84ffd200b57364a85a2e73d82445f7521ab3a1d488
|
|
BLAKE2b-256 checksum How to use checksums |
244296e9c8f14051b006d549b07efc51ae83dfab07a017c4717fce4d984dc37b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 178.0 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
a4759fc26033b4805f7a9dd46633c2177398fb9e2d0ac77c452aec5537f7fcc0
|
|
BLAKE2b-256 checksum How to use checksums |
956e99c18c908b56dfd81d68318f4e3124ced85891dc9789a6d11486a3b8727a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency logRelease files / gemmology_crystal_geometry-2.0.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | gemmology_crystal_geometry-2.0.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 140.3 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
21b4df3e3c5538f9f3cb80202cdbc8813ad3ccc840699d06e55f0cc17d2af384
|
|
BLAKE2b-256 checksum How to use checksums |
5061c35afebc997907d293bfbd75934d5c7fea06f88d0125322927757b843adc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 16, 2026.
Transparency log