Skip to main content

A parser for SHELXL results files

Project description

Shelxfile

Packaging status

Unit tests Contributions

This is a full implementation of the SHELXL[1] file syntax. Additionally it is able to edit SHELX properties using Python. The implementation is Python3-only and supports SHELXL after 2017 (you should not use old versions anyway). Shelxfile is used as file parser in StructureFinder[3].

Shelxfile always keeps the file order intact. Every SHELX instruction like DFIX or an atom is stored as a class object in the list Shelxfile._reslist. When writing the Shelxfile content to disk, it writes the _reslist content to disk.

Shelxfile tries to detect all possible syntax errors that SHELXL would not like either. Use verbose=True during initialization for more output about syntax and other errors. Use debug=True to halt on errors. Otherwise, the parser is quiet except for really severe errors like a missing unit cell.

Not every part of Shelxfile is complete, for example it will not recognize if you add restraints with atom names that are not in the SHELX file. Please help me improving it!

Source Code

You can find the ShelXfile source code at GitHub.

Installation

pip install shelxfile

Quick Start

from shelxfile import Shelxfile

shx = Shelxfile(verbose=True)  # or debug=True, debug will halt on errors.
shx.read_file('tests/resources/p21c.res')  # or shx.read_string('...')

Examples

Unit Cell

>>> shx.cell
CELL 0.71073 10.5086 20.9035 20.5072 90 94.13 90

>>> list(shx.cell)
[10.5086, 20.9035, 20.5072, 90.0, 94.13, 90.0]

>>> shx.cell.volume
4493.047384590458

>>> shx.cell.a
10.5086

CIF Export

>>> shx.to_cif('test.cif')
# Writes a CIF file from the content of p21c.res
# Optionally pass a custom template: shx.to_cif('test.cif', template='my_template.tmpl')

Modifying SHELX Instructions

You can overwrite any parameter in a SHELX file:

>>> shx.plan
PLAN 20

>>> shx.plan.npeaks
20

>>> shx.plan.set('PLAN 30')
>>> shx.plan
PLAN 30

Atoms

>>> shx.atoms
O1     3    0.074835    0.238436    0.402457   ...
C1     1    0.028576    0.234542    0.337234   ...
C2     1    0.121540    0.194460    0.298291   ...
...

>>> len(shx.atoms)
148

>>> shx.atoms.number
148

>>> shx.atoms.hydrogen_atoms
[Atom ID: 134, Atom ID: 141, Atom ID: 148, ...]

>>> shx.atoms.hydrogen_atoms[1].name
'H32'

>>> shx.atoms.n_hydrogen_atoms
24

# Atoms with a riding model (e.g. hydrogen atom riding on a carbon atom):
>>> shx.atoms.riding_atoms
[Atom ID: 134, Atom ID: 141, Atom ID: 148, ...]

# Q-peaks in the file:
>>> shx.atoms.q_peaks
[Atom ID: 328, Atom ID: 329, ...]

# Number of anisotropic/isotropic atoms:
>>> shx.atoms.n_anisotropic_atoms
124
>>> shx.atoms.n_isotropic_atoms
24

# Residue numbers present:
>>> shx.atoms.residues
[0, 1, 2, 3, 4]

Working with Individual Atoms

>>> a = shx.atoms.get_atom_by_name('F1_2')  # Atom F1 in residue 2
>>> a
Atom ID: 258  # The Atom ID is the index number in Shelxfile._reslist

>>> str(a)
'F1    4    0.245205    0.192674    0.649231   -21.00000    0.05143    0.03826      0.03193   -0.00579   -0.01865   -0.00485'

>>> a.name
'F1'

>>> a.element
'F'

>>> a.resinum
2

>>> a.part.n
2

>>> a.sfac_num
4

>>> a.occupancy
0.51904

>>> a.frac_coords
(0.245205, 0.192674, 0.649231)

>>> a.cart_coords
(1.617897551082389, 4.027560959000001, 13.279336538026431)

>>> a.is_hydrogen
False

>>> a.is_isotropic
False

>>> a.atomid  # position in the SHELX .res file (_reslist index)
258

>>> str(shx._reslist[a.atomid])  # In regular code, do not access shx._reslist directly!
'F1    4    0.245205    0.192674    0.649231   -21.00000    0.05143    ...'

Displacement Parameters

>>> c = shx.atoms.get_atom_by_name('C1')

# Equivalent isotropic U (trace of U_cart / 3, IUCr definition):
>>> c.ueq
0.027...

# For riding hydrogen atoms the Uiso is a multiple of the pivot atom's Ueq:
>>> h = shx.atoms.get_atom_by_name('H34')
>>> h.pivot.name       # the carbon H34 rides on
'C34'
>>> h.Uiso             # = 1.2 × C34.ueq  (encoded as -1.2 in the .res file)
0.02956...
>>> h.Uiso == h.pivot.Uiso * 1.2
True

# Full anisotropic U-value chain (numpy arrays):
>>> c.ucif              # 3×3 U(cif) matrix  [U11 U12 U13 / U12 U22 U23 / U13 U23 U33]
array(...)
>>> c.ustar             # U(star) = N @ U(cif) @ N.T,  N = diag(a*, b*, c*)
array(...)
>>> c.u_cart            # U(cart) = A @ U(star) @ A.T,  A = orthogonalisation matrix
array(...)

Connectivity Table

# Pairwise bond connectivity for all atoms in the asymmetric unit:
>>> conn = shx.atoms.conntable   # tuple of (i, j) index pairs
>>> conn[0]
(0, 1)

Bond List

# Human-friendly bond list (sorted by atom name):
>>> for bond in shx.atoms.bonds:
...     print(bond)
AL1     O1      1.7236 Å
AL1     O2      1.7278 Å
C1      C2      1.5210 Å
C1      H1      1.0900 Å
...

# Total number of bonds:
>>> len(shx.atoms.bonds)
199

# Access individual bond attributes:
>>> b = shx.atoms.bonds[0]
>>> b.atom1.name, b.atom2.name, b.distance
('AL1', 'O1', 1.7236...)

# Tuple-style unpacking:
>>> atom1, atom2, dist = shx.atoms.bonds[0]

# Machine-readable repr:
>>> repr(shx.atoms.bonds[0])
"Bond(AL1, O1, 1.7236 Å)"

Full Bond List (with Symmetry Neighbors)

Shows every atom in the asymmetric unit together with all its bonded neighbors, including those reached by a crystallographic symmetry operation, in the same style as SHELXL's .lst file.

>>> for bond in shx.atoms.full_bond_list():
...     print(bond)
AL1     O1      1.7236 Å          # plain asymmetric-unit bond
AL1     O2 [-x, y+1/2, -z+1/2]  1.7095 Å   # symmetry-generated neighbor
C1      C2      1.5454 Å
...

# Total bonds (plain + symmetry):
>>> bl = shx.atoms.full_bond_list()
>>> plain = [b for b in bl if not b.is_symmetry_bond]
>>> symm  = [b for b in bl if b.is_symmetry_bond]

# 4-field unpacking (atom1, atom2, distance, symm_label):
>>> atom1, atom2, dist, label = shx.atoms.full_bond_list()[0]
>>> label   # '' for plain bonds, e.g. '-x, y+1/2, -z+1/2' for symmetry bonds

# Include Q-peaks:
>>> shx.atoms.full_bond_list(with_qpeaks=True)

Modifying Atoms

# Make an atom isotropic:
>>> a.to_isotropic()
>>> str(a)
'F1    4    0.245205    0.192674   0.649231  -21.00000    0.04000'

# Introduce a new element (automatically updates the SFAC table):
>>> a.element = 'Na'
>>> shx.sfac_table
SFAC C  H  O  F  Al  Ga  Na

Adding and Deleting Atoms

# Add a new atom (isotropic carbon, fully occupied, default Uiso = 0.04):
>>> a = shx.add_atom(name='C99', coordinates=[0.1, 0.2, 0.3])
# The atom is inserted directly before HKLF (after the last real atom).
# write_shelx_file() produces a valid file immediately.

# Specify element, disorder part, and occupancy (high-level style):
>>> shx.add_atom(name='N1', coordinates=[0.5, 0.5, 0.5], element='N',
...              occupancy=0.5, part=1)      # → sof = 1*10 + 0.5 = 10.5

# Tie occupancy to a specific free variable (e.g. fvar 2):
>>> shx.add_atom(name='C2A', coordinates=[0.1, 0.2, 0.3],
...              occupancy=1.0, fvar=2, part=1)   # → sof = 21.0
>>> shx.add_atom(name='C2B', coordinates=[0.1, 0.2, 0.35],
...              occupancy=-1.0, fvar=2, part=2)  # → sof = 19.0 (complementary)

# Raw SHELXL sof encoding is still accepted when occupancy is not given:
>>> shx.add_atom(name='N1', coordinates=[0.5, 0.5, 0.5], sof=21.0)

# Mixing the two styles raises ValueError:
>>> shx.add_atom(name='N1', coordinates=[0.5, 0.5, 0.5], occupancy=0.5, sof=10.5)
ValueError: Specify occupation using either 'occupancy'/'fvar' or 'sof', not both.

# Anisotropic displacement parameters [U11, U22, U33, U23, U13, U12]:
>>> shx.add_atom(name='C99', coordinates=[0.1, 0.2, 0.3],
...              uvals=[0.03, 0.04, 0.05, 0.001, 0.002, 0.003])

# A single Uiso value is automatically expanded to six parameters:
>>> shx.add_atom(name='C99', coordinates=[0.1, 0.2, 0.3], uvals=[0.05])

# Insert directly after a specific atom in the file:
>>> anchor = shx.atoms.get_atom_by_name('C1')
>>> shx.add_atom(name='C99', coordinates=[0.1, 0.2, 0.3], after=anchor)

# Provide Cartesian coordinates (auto-converted to fractional):
>>> shx.add_atom(name='C99', coordinates=[1.0, 2.0, 3.0],
...              coords_are_cartesian=True)

# Elements not yet in the SFAC table are registered automatically:
>>> shx.add_atom(name='XE1', coordinates=[0.1, 0.2, 0.3], element='Xe')
>>> shx.sfac_table
SFAC C  H  O  F  Al  Ga  Xe

# Get the next available atom name for an element (max 4 chars: C→C999, Fe→Fe99):
>>> shx.unused_atom_name('C')
'C149'   # (or whichever number is free)
>>> shx.unused_atom_name('Fe')
'Fe1'    # two-char element: up to Fe99

# Combine: generate a unique name and add the atom in one go:
>>> name = shx.unused_atom_name('N')
>>> shx.add_atom(name=name, coordinates=[0.3, 0.3, 0.3], element='N')

# Duplicate names raise ValueError:
>>> shx.add_atom(name='C99', coordinates=[0.2, 0.2, 0.2])  # already exists
ValueError: Atom 'C99_0' already exists in the structure.

# Delete atoms around a given atom:
>>> for x in a.find_atoms_around(dist=2.5, only_part=2):
...     x.delete()

Finding Nearby Atoms

>>> a.find_atoms_around(dist=2.0, only_part=1)
[Atom ID: 239, Atom ID: 241, Atom ID: 245]

>>> [str(x) for x in a.find_atoms_around(dist=2.2, only_part=2)]
['C2     1    0.192984    0.140449    ...', 'F2     4    ...', 'F3     4    ...']

SFAC Table Lookups

>>> shx.sfac2elem(4)
'F'

>>> shx.elem2sfac('F')
4

Restraints

>>> shx.restraints[1]
SADI_CCF3 0.02 C1 C2 C1 C3 C1 C4

>>> str(shx.restraints[1])
'SADI_CCF3 0.02 C1 C2 C1 C3 C1 C4'

>>> shx.restraints[1].residue_class
'CCF3'

# The residue class 'CCF3' has three residues with these numbers:
>>> shx.restraints[1].residue_number
[4, 1, 2]

# The esd of the SADI restraint:
>>> shx.restraints[1].s
0.02

Distances and Angles

# Distance between two atoms (by name):
>>> shx.atoms.distance('O1', 'C1')
1.3505645511659556

# Bond angle between three atoms:
>>> at1 = shx.atoms.get_atom_by_name('O1_4')
>>> at2 = shx.atoms.get_atom_by_name('C1_4')
>>> at3 = shx.atoms.get_atom_by_name('C2_4')
>>> shx.atoms.angle(at1, at2, at3)
109.68812347

# Torsion angle between four atoms:
>>> at1 = shx.atoms.get_atom_by_name('O1')
>>> at2 = shx.atoms.get_atom_by_name('C1')
>>> at3 = shx.atoms.get_atom_by_name('C2')
>>> at4 = shx.atoms.get_atom_by_name('F1')
>>> shx.atoms.torsion_angle(at1, at2, at3, at4)
74.09573117980119

Symmetry Cards

Symmetry cards that are implied by lattice symmetry are generated on-the-fly:

>>> shx.symmcards
| 1  0  0|   | 0.0|
| 0  1  0| + | 0.0|
| 0  0  1|   | 0.0|

|-1  0  0|   | 0.0|
| 0 -1  0| + | 0.0|
| 0  0 -1|   | 0.0|

|-1  0  0|   | 0.0|
| 0  1  0| + | 0.5|
| 0  0 -1|   | 0.5|

| 1  0  0|   | 0.0|
| 0 -1  0| + |-0.5|
| 0  0  1|   |-0.5|

Growing Structures

Complete or "grow" structures with higher symmetry:

>>> shx2 = Shelxfile()
>>> shx2.read_file('tests/resources/p-31c.res')
>>> len(shx2.atoms)
88
>>> p = shx2.grow()
>>> len(p)
208

Writing a Grown Structure to File

write_grown_file() calls grow() and writes the complete molecule(s) to a standalone .res file in P1 symmetry. The output:

  • Uses LATT -1 (primitive, non-centrosymmetric) with no SYMM cards, so that SHELXL and viewers like fastmolwidget do not re-apply symmetry to the already-grown atoms (preventing duplicate atoms and wrong bonds).
  • Preserves disorder parts via PART cards so the bond graph is correct (atoms in different disorder alternatives are not connected to each other).
  • Strips restraints, AFIX, HFIX and other cards that only make sense in the context of the original asymmetric unit.
  • Adds a REM warning that the file is not suited for refinement.
>>> shx2 = Shelxfile()
>>> shx2.read_file('tests/resources/p-31c.res')
>>> shx2.write_grown_file('grown_p1.res')
# grown_p1.res is a valid P1 .res file with 208 atoms and PART cards

Packing the Unit Cell

pack() applies all symmetry operations to the asymmetric unit and folds every position back into [0, 1) fractional coordinates, removing duplicates. Unlike grow(), it does not stitch molecular fragments together — it simply fills one unit cell.

>>> shx2 = Shelxfile()
>>> shx2.read_file('tests/resources/p-31c.res')
>>> len(shx2.atoms)          # asymmetric unit
88
>>> packed = shx2.pack()
>>> len(packed)              # full unit cell (Z × asymm unit, minus special positions)
304
>>> all(0.0 <= a.x < 1.0 and 0.0 <= a.y < 1.0 and 0.0 <= a.z < 1.0 for a in packed)
True

The result is a plain list of Atom objects — the Shelxfile object itself is not modified. Q-peaks can be included with shx.pack(with_qpeaks=True).

Writing Files

Writes the current shx object to a SHELX file. All lines in Shelxfile._reslist get wrapped after 79 characters with " =\n " as specified by SHELXL during the file writing.

>>> shx.write_shelx_file('test.ins')

Optional C++ Acceleration

The SDM (Shortest Distance Matrix), which underlies grow() and pack(), ships with an optional C++ extension (sdm_cpp) compiled with pybind11 and OpenMP. When present it is used automatically and can give a 5–10× speedup on large structures; if it is absent the pure-Python fallback is used silently.

# Build the extension (requires a C++17 compiler):
pip install pybind11
pip install -e . --no-build-isolation

# macOS only — OpenMP support:
brew install libomp
from shelxfile.shelx.sdm import HAS_CPP
print(HAS_CPP)   # True when the extension is installed

Sum Formula

# Sum formula based on UNIT instruction:
>>> shx.sum_formula
'C0.25 H0.5 O0.75 F1 AL1.25 GA1.5'

# Exact sum formula from all atom occupancies:
>>> shx.sum_formula_exact
'C34 H24 O4 F36 Al1 Ga1'

Residuals from .res File

These values are parsed from REM lines written by SHELXL into .res files:

>>> shx.R1
0.04

>>> shx.wr2
0.1005

>>> shx.goof
1.016

>>> shx.space_group
'P2(1)/c'

>>> shx.wavelength
0.71073

Refinement (Requires SHELXL)

No matter if you loaded a .res or .ins file, refine() runs SHELXL on the Shelxfile object:

>>> shx.insert_anis()
>>> shx.refine(2)

 Running SHELXL with "/usr/local/bin/shelxl -b3000 ..." and "L.S. 2"
 wR2 =  0.1143 before cycle   1 for   10786 data and    945 /    945 parameters
 wR2 =  0.1025 before cycle   2 for   10786 data and    945 /    945 parameters
 wR2 =  0.1006 before cycle   3 for   10786 data and      0 /    945 parameters
 SHELXL Version 2018/3

References

[1] http://shelx.uni-goettingen.de/, G. M. Sheldrick, Acta Cryst. (2015). C71, 3-8. https://doi.org/10.1107/S2053229614024218

[2] https://github.com/dkratzert/DSR

[3] https://github.com/dkratzert/StructureFinder

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.

shelxfile-24-cp314-cp314-win_amd64.whl (175.5 kB view details)

Uploaded CPython 3.14Windows x86-64

shelxfile-24-cp314-cp314-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

shelxfile-24-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

shelxfile-24-cp314-cp314-macosx_14_0_universal2.whl (259.3 kB view details)

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

shelxfile-24-cp313-cp313-win_amd64.whl (172.5 kB view details)

Uploaded CPython 3.13Windows x86-64

shelxfile-24-cp313-cp313-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

shelxfile-24-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

shelxfile-24-cp313-cp313-macosx_14_0_universal2.whl (259.3 kB view details)

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

shelxfile-24-cp312-cp312-win_amd64.whl (172.5 kB view details)

Uploaded CPython 3.12Windows x86-64

shelxfile-24-cp312-cp312-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

shelxfile-24-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

shelxfile-24-cp312-cp312-macosx_14_0_universal2.whl (259.2 kB view details)

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

shelxfile-24-cp311-cp311-win_amd64.whl (171.8 kB view details)

Uploaded CPython 3.11Windows x86-64

shelxfile-24-cp311-cp311-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

shelxfile-24-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.4 MB view details)

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

shelxfile-24-cp311-cp311-macosx_14_0_universal2.whl (256.2 kB view details)

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

File details

Details for the file shelxfile-24-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: shelxfile-24-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 175.5 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

Hashes for shelxfile-24-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b52e4001259b9c27af3684c5b03127c69056b6465a85c21dbe2524b63a9ed64b
MD5 99689973d43065b8080a60fd4cfb8a39
BLAKE2b-256 45b8a3fd3429951c8c7ae52124c48af5b12135014d5bf9305c5f5a68d1fcd82a

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp314-cp314-win_amd64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8ce0b3fcd23de61351a4663e416172d1b149547e54475a1eddf203b3b02a1f25
MD5 a1b95f74f3d4e8f42de3f4cd91842942
BLAKE2b-256 1feef74c7fe40f40bef663a9a4d559448b38ffd29bc47aba8907d8bde446fc7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1299b5719e9f9331affc5d81515176f41bbb3b65f3f3f2d10a8f4c0adeebf74e
MD5 170cd842cc844ca4ebc4a092fee21104
BLAKE2b-256 604ac0b4424c5078243ec1e5d9ae95ac405a814340331944492d1448c6cf1e37

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp314-cp314-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp314-cp314-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 1a0ea16c74d8c9824d73cb15bc966516d81a99a9d50fd4d87425881baacf7280
MD5 ea11764a233152ccf64c36d6e19dbfd6
BLAKE2b-256 53d7aaacadd8f7d33b95f2e6f957079767f7adb3c238d6e146aa315919b9135b

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp314-cp314-macosx_14_0_universal2.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: shelxfile-24-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 172.5 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

Hashes for shelxfile-24-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4d2aaf65ff3c3c48545536c511f27503b63ee13db90de1d7dc4b0932bd5c3618
MD5 57dd1d4aaa6c1174e16936af83d34891
BLAKE2b-256 c14a11e6326d372ee2cdd37f6f360f64b45fd1a297fe14a287cded4371c6e5ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp313-cp313-win_amd64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f54a48885025678d27455fa8ea1add6ae2ba9f13a16f46a0dcd9c909ad672153
MD5 3d827c6fb2302f310aba15770beda50e
BLAKE2b-256 86ded24d2c46d654347fa376be3a39817e78284434d5fb82a8cc7502b79d864e

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 020a66c1e3ab39d70370024c77f63082913563fa042a87597f7d581762bc79e1
MD5 31af743f1574d1ba27c740fa981fe1cb
BLAKE2b-256 0f03dc8800780b3aac76c07a8b757b14b8f0f8126d8be4b8fba4703058bb1470

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp313-cp313-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp313-cp313-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 51a9992ad266edd890c4f6c6bcc91c95b0200d894af5ad8ff3b0ac23100eb7e7
MD5 f7c4fa4dbfb62a8be4b95929cf24380e
BLAKE2b-256 cdbcb7db28ad8291985bf9a6503a0640cc37606326161b5b819b2e794dc59b5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp313-cp313-macosx_14_0_universal2.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: shelxfile-24-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 172.5 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

Hashes for shelxfile-24-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2154942e44448ba43cecd322dbe0b173a1fcfb2db02077322ad011626c52f064
MD5 85c01cafd937ea85e52265b2d7b39d67
BLAKE2b-256 923bb20a3c4923a56695d76cd4ad6f5f4defb0a85ca6e29236447218f12fd702

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp312-cp312-win_amd64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c071b309efc87a1a7369078d653532a03808224b774a68a4b06e20a7f6ed0dc2
MD5 d84211a6d3ae3430e3bc6181ddb8196f
BLAKE2b-256 ec13350404921f32681180bbd97bc7dd12e835645decb970e92094d5fa436b84

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a9997e4e45c4875893803f2777a21e8c05ea54bc9abe2d49016c972817de83ef
MD5 57150b055fcb929018046e8dd61b44fc
BLAKE2b-256 589df28db419cdae3b87772fcf35b1cbc031fc5f151c5c97400526f410710dd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp312-cp312-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp312-cp312-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 3c817f091bdaa8e8c932c25a5bc9b5247a2ac73abf2771c9015daef4ff116fa3
MD5 aaac4cea30c8c0254c32e70456579296
BLAKE2b-256 df625e29c12ddc1d35462a2fbd8490dec26527ab9c0d6b4bc796a12716cac0b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp312-cp312-macosx_14_0_universal2.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: shelxfile-24-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 171.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shelxfile-24-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c877c81554ba9dbcf5a536261daf67a316415c89375fd0dd3209db1fb3e6059a
MD5 1d77966211177433471f3e1c1037ef4e
BLAKE2b-256 ff9e941719c817fcfb33e927f35b52eb6b9103d1cc9874364a8d901b0ebbe6d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp311-cp311-win_amd64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5029788a1d8bf228901b96d3f273328bf2379a22e29cd17a08918552b62e1a08
MD5 4d6fd74721039778127ed808be7e5438
BLAKE2b-256 44a96c641cebc3ef44792bb0534a78f2f73463345013b254380ef9989f806304

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 140a5c45d647957335fba2200e2a52a54e05fa19f83416d31653403eb8a3b384
MD5 db89cb1cfba73c264630fdb6ea870c44
BLAKE2b-256 c7c7c137359caec9de9a356a24be5e77fdba452a12610516736465946327b397

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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

File details

Details for the file shelxfile-24-cp311-cp311-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for shelxfile-24-cp311-cp311-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 a42a79829d5e052c1dfc0256f1cad9f15fe8c4e1e4ea5ba1991ccdc40f00321d
MD5 65a1a67e74c5b1e2b0cf7269408d7d13
BLAKE2b-256 3292514f86ff5c08984c4eb1b119a80c99cc3e3478b5d4682676e0b944d7ba9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-24-cp311-cp311-macosx_14_0_universal2.whl:

Publisher: python-dist.yml on dkratzert/ShelXFile

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