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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

shelxfile-23-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-23-cp314-cp314-macosx_14_0_universal2.whl (258.6 kB view details)

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

shelxfile-23-cp313-cp313-win_amd64.whl (171.8 kB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

shelxfile-23-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-23-cp313-cp313-macosx_14_0_universal2.whl (258.7 kB view details)

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

shelxfile-23-cp312-cp312-win_amd64.whl (171.8 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

shelxfile-23-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-23-cp312-cp312-macosx_14_0_universal2.whl (258.5 kB view details)

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

shelxfile-23-cp311-cp311-win_amd64.whl (171.1 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

shelxfile-23-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-23-cp311-cp311-macosx_14_0_universal2.whl (255.6 kB view details)

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

File details

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

File metadata

  • Download URL: shelxfile-23-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 174.8 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-23-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c6dd2494d580fb580ab9cbdc805170fe7fae668538d338d5ba6b9d796cf7eb40
MD5 c0b484a259f15fa4c37a25748c592d32
BLAKE2b-256 30b68bb27b422fd021c74c78855e045c17569ae6dc7dcd38ccdb61ff0717c52c

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e4dafd6bce0e008a5c8b145cb54253d0718394a9a89a33c8ce466d086ff8385d
MD5 ef04e795809c6ddbb757d1baef4f7f1b
BLAKE2b-256 2d2bf318a62fd953661f8f1a73f3b99783a42ef736832337be0450ee410d4877

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for shelxfile-23-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55a3953d78f06dbc42f7c7f40fac5b4839306721d146265aa43aa0c0317bed99
MD5 edc980104cf5bfbe5fd5c00d36261e87
BLAKE2b-256 c58dc72f11e6158371dcc37e8a5beeed154a2b89a77e2b60edced7377736645c

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp314-cp314-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp314-cp314-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 442a30a4193b53cc9452fc2a49683bbac9900824f12a20fbe93701b84eccdddd
MD5 dfe6de13e70637bdc86be6ad2741aa6e
BLAKE2b-256 566ab0f9141a4373a9a62fdce4513006f93cdb5e0f9eb3e888577c4ff9c76190

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: shelxfile-23-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 171.8 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-23-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ed783a87ea2fbeeb5a2702f44f01b87b4e7b254ac571033a64e42191934201d9
MD5 b35bf5b04dea3f646d0fa60d05ce9579
BLAKE2b-256 dff5c3f7758cdbefe784694eee2fd29494cd148cec91e3fc7ebaf8aded9d9e00

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ee7ece3c51c8c647a1be6f9b9843fb9aa94c84c7bde0ea0cf2123092f6430817
MD5 95920a9c74282d0fd025cd3732da08b0
BLAKE2b-256 651b4ebb3fc9c7b75e40f3b5987f92b1394e2fdcaac8312ee28a88645ada46d9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for shelxfile-23-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 abf6dd59cf3c268d6952d812ddad633e75a446edf19bf98fb823215459700e55
MD5 489d8d52011d55bb71bf52b3d4903b69
BLAKE2b-256 3cd86be1625b4be26cb0ff3a017efef6df8b4df9c0440adb027ead5f5d7f0154

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp313-cp313-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp313-cp313-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 b81708229aa760137a2ecf01ab2cf5b70c944ef7baf32a315b39693baf73de49
MD5 e5f9fd73f5d63f5ecceffe620b830f05
BLAKE2b-256 ee7398c37cef4206fc44642ed161aeaf0bf4920f44078e4147a1c10b6b0f2e8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: shelxfile-23-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 171.8 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-23-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7134790cc8b4e2ce6a59fbdf5713ab16b8c86feb56edfcbf59574e902c54d942
MD5 eeff97de5188418ed3f0fe5f5c51125a
BLAKE2b-256 35a0b50ce701025fb6512e9ddff151e54182b5016cd3b5e130c134fbf922260c

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b5efc81ea2c7b2149fc8303e4ed7afb4c04d5a352a92894c74828bd987340c85
MD5 d36e81b90d800f1c2d57542f231ee490
BLAKE2b-256 c336f4b4448c9cf0e14075229aa0ba1109f6f5716576ed2c7a13d09f0ffe5320

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for shelxfile-23-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd0e3316ea902f057f4858b32b615a0e3f6362c9ce3adafcccba49e0d138c36f
MD5 29d83a38e7bf543257ed1b7fb589fb5f
BLAKE2b-256 cd99f8e0f32b6486e51bbd46d5c487a3e3384c459ce4819035241d7d31b55ad9

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp312-cp312-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp312-cp312-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 283cdb738246c48850dbed7da98e91b384f6678b615cdab0e1e33ab451305d9f
MD5 875bece0e363c09e1b60614c04aa3d08
BLAKE2b-256 5cc26817a2e10ae271c90ec972ef376e6c902f8a4f331a4a020ac0ba97a77088

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: shelxfile-23-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 171.1 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-23-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 edb74dda76c97ff1e299ee41a79ba9be530dc632ec6d80a64569c278c55e41b2
MD5 0c971aaa3cb3b715a1efc226609d1a78
BLAKE2b-256 6dedac757aa66fc29e73584c8b54256845e70b6a55f74b9a2e73594df302c72f

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 02759117bc0803273d9e0098e035a6ee446a73915795e5942566588485924037
MD5 e099376b1c5f51934212df200b78cf67
BLAKE2b-256 7e80133bc91bc6ff1f5506eb90d4df69b8dd4700c1887158e908290d9d44bf1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10ffe2b427e34c40a88405e8b562cdd51fce4ffe63679e76a05fc653eb473d9a
MD5 22f90465f7aefabd1d33a9ef6ea4a2d0
BLAKE2b-256 8918cacd118205499dce29a8a4d87d8edd927b8479bb68f3d6309a9b04bce655

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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-23-cp311-cp311-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for shelxfile-23-cp311-cp311-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 5e9eac79d38773dfb41e683c92efac8107a033bbffd7d4b184e44fa9a2acc140
MD5 869093e32a1637efd151fef3219c7a9d
BLAKE2b-256 8f16c89a5a554d3f3a0da9667fd06627ebfaa2ba635559df804fcbd255ec958b

See more details on using hashes here.

Provenance

The following attestation bundles were made for shelxfile-23-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