Skip to main content

Extended XYZ file format tools

Project description

Extended XYZ specification and parsing tools

This repository contains a specification of the extended XYZ (extxyz) file format, and tools for reading and writing to it from programs written in C, Fortran, Python and Julia.

Installation

Python

The latest development version can be installed via

pip install git+https://github.com/libAtoms/extxyz

This requires Python 3.10+ and a working C compiler, plus the PCRE2 and libcleri libraries. libcleri is included here as a submodule and will be compiled automatically, but you may need to install PCRE2 with something similar to one of the following commands.

brew install pcre2          # macOS with Homebrew
sudo apt-get install libpcre2-dev   # Ubuntu / Debian
vcpkg install pcre2:x64-windows     # Windows (via vcpkg)

Binary wheels for Linux, macOS (arm64 and x86_64), and Windows are built in the GitHub CI for each tagged release and bundle PCRE2 and libcleri, so an end-user pip install extxyz does not need either system library.

Stable releases are made to PyPI, so you can install with

pip install extxyz

libextxyz C library and standalone executables

The C parser, the standalone libextxyz shared library, and the C-only cextxyz test driver are all Meson targets. To build them outside of the Python wheel flow:

meson setup builddir
meson compile -C builddir extxyz cextxyz       # libextxyz.{so,dylib,dll} + cextxyz
meson install -C builddir                      # installs libextxyz under --prefix

The Meson build picks up PCRE2 via pkg-config, falling back to a bundled WrapDB build of PCRE2 if no system copy is found.

Fortran bindings

To build the fextxyz executable demonstrating the Fortran bindings, you first need to compile QUIP's libAtoms library. QUIP now uses Meson too:

git clone --recursive https://github.com/libAtoms/QUIP
meson setup QUIP/builddir QUIP -Dgap=true -Dmpi=false
meson compile -C QUIP/builddir libAtoms f90wrap_stub

Then point this project's Meson build at the resulting library and module directories — the fextxyz target is opt-in via the quip_lib_dir and quip_mod_dir options:

QUIP_LIB_DIR=$PWD/QUIP/builddir/src/libAtoms
QUIP_MOD_DIR=$(find "$QUIP_LIB_DIR" -iname 'libatoms_module.mod' -printf '%h\n' | head -1)
meson setup builddir \
  -Dquip_lib_dir="$QUIP_LIB_DIR" \
  -Dquip_mod_dir="$QUIP_MOD_DIR"
meson compile -C builddir fextxyz

The Fortran bindings will later be moved to QUIP, since they are tied to QUIP's Dictionary and Atoms types.

Julia bindings

Julia bindings are distributed in a separate package, named ExtXYZ.jl. See its documentation for further details.

Usage

Usage of the Python package is similar to the ase.io.read() and ase.io.write() functions, e.g:

from extxyz import read, iread, write, ExtXYZTrajectoryWriter
from ase.build import bulk
from ase.optimize import BFGS
from ase.calculators.emt import EMT

atoms = bulk("Cu") * 3
frames = [atoms.copy() for frame in range(3)]
for frame in frames:
    frame.rattle()
    
write("filename.xyz", frames)

frames = read("filename.xyz") # all frames in file
atoms = read("filename.xyz", index=0) # first frame in file
write("newfile.xyz", frames)

traj = ExtXYZTrajectoryWriter("traj.xyz", atoms=atoms)
atoms.calc = EMT()
opt = BFGS(atoms, trajectory=traj)
opt.run(fmax=1e-3)

There is also an extxyz command line tool for testing purposes, see extxyz -h for help. This can alternatively be invoked via python -m extxyz.

Remaining issues

  1. make treatement of 9 elem old-1d consistent: now extxyz.py always reshapes (not just Lattice) to 3x3, but extxyz.c does not.
  2. Since we're using python regexp/PCRE, we could make per-atom strings be more complex, e.g. bare or quoted strings from key-value pairs. Should we?
  3. Decide what to do about unparseable comment lines. Just assume an old fashioned xyz with an arbitrary line, or fail? I don't think we really want every parsing breaking typo to result in plain xyz.
  4. Used to be able to quote with {}. Do we want to support this?

Extended XYZ specifcation

General formatting

  • Allowed characters: printable subset of ASCII, single byte
  • Allowed whitespace: plain space and tab (no fancy unicode nonbreaking space, etc)
  • Allowed end-of line (EOL) characters set by implementation + OS
    • pure python: whatever is used to return lines by file object iterator
    • low level c: fgets()
  • Blank lines: allowed only as 2nd line of each frame (for plain xyz) and at end of file

General definitions

  • regex: PCRE/python regular expression
  • Whitespace: regex \s, i.e. space and tab

Primitive Data Types

String

Sequence of one or more allowed characters, optionally quoted, but must be quoted in some circumstances.

  • Allowed characters - all except newline
  • Entire string may be surrounded by double quotes, as first and last characters (must match). Quotes inside string that are same as containing quotes must be escaped with backslash. Outermost double quotes are not considered part of string value.
  • Strings that contain any of the following characters must be quoted (not just backslash escaped)
    • whitespace (regex \s)
    • equals =
    • double quote ", must be represented by \"
    • comma ,
    • open or close square bracket [ ] or curly brackets { }
    • backslash, must be represented by double backslash \\
    • newline, must be represented by \n
  • Backslash \: only present in quoted strings, only used for escaping next character. All backslash escaped characters are the following character itself except \n, which encodes a newline.
  • Must conform to one of the following regex
    • quoted string: (")(?:(?=(\\?))\2.)*?\1
    • bare (unquoted) string: (?:[^\s=",}{\]\[\\]|(?:\\[\s=",}{\]\[\\]))+
  • only used in comment line key-value pairs, not per-atom data

Simple string

Sequence of one or more allowed characters, unquoted (so even outermost quotes are part of string), and without whitespace

  • allowed characters - regex \S, i.e. all except newline and whitespace
  • regex \S+
  • only used in per-atom data, not comment line key-value pairs

Logical/boolean

  • T or F or [tT]rue or [fF]alse or TRUE or FALSE
  • regex
    • true: (?:[tT]rue|TRUE|T)\b
    • false: (?:[fF]alse|FALSE|F)\b

Integer number

string of one or more decimal digits, optionally preceded by sign

  • regex [+-]?+(?:0|[1-9][0-9]*)+\b

Floating point number

  • optional leading sign [+-], decimal number including optional decimal point ., optional [dDeE] folllowed by exponent consisting of optional sign followed by string of one or more digits
  • regex
    • integer without leading sign bare_int = '(?:0|[1-9][0-9]*)'
    • optional sign opt_sign = '[+-]?'
    • floating number with decimal point float_dec = '(?:' + bare_int + '\.|\.)[0-9]*'
    • exponent exp = '(?:[dDeE]'+opt_sign+'[0-9]+)?'
    • end of number num_end = '(?:\b|(?=\W)|$)'
    • combined float regexp opt_sign + '(?:' + float_dec + exp + '|' + bare_int + exp + '|' + bare_int + ')' + num_end

Order for identifying primitive data types, accept first one that matches

  • int
  • float
  • bool
  • bare string (containing no whitespace or special characters)
  • quoted string (starting and ending with double quote and containing only allowed characters)

one dimensional array (vector)

sequence of one or more of the same primitive type

  • new style: opens with [, one or more of the same primitive type separated by commas and optional whitespace, ends with ]
  • backward compatible: opens with " or {, one or more of the same primitive types (all types allowed in {}, all except string in "") separated by whitespace, ends with matching " or }. For backward compatibility, a single element backward compatible array is interpreted as a scalar of the same type.
  • primitive data type is determined by same priority as single primitive item, but must be satisfied by entire list simultaneously. E.g. all integers will result in an integer array, but a mix of integer and float will result in a float array, and a mix of integer and valid strings will results in a string array.

two dimensional array (matrix)

sequence of one or more new style one dimensional arrays of the same length and type

  • opens with [, one or more new style one dimensional arrays separated by commas, ends with ]
  • all contained one dimensional arrays in a single two dimensional array must have same number and primitive data type elements, and will be promoted to other possible types if necessary to parse entire array. E.g. a row of integers followed by a row of strings will be promoted to a 2-d string array.

XYZ file

A concatenation of 1 or more FRAMES (below), with optional blank lines at the end (but not between frames)

FRAME

  • Line 1: a single integer <N> preceded and followed by optional whitespace
  • Line 2: zero or more per-config key=value pairs (see key-value pairs below)
  • Lines 3..N+2: per-atom data lines with M columns each (see Properties and Per-Atom Data below)

key=value pairs on second ("comment") line

Associates per-configuration value with key. Spaces are allowed around = sign, which do not become part of the key or value.

Key: bare or quoted string

Value: primitive type, 1-D array, or 2-D array. Type is determined from context according to order specified above.

Special key "Properties”: defines the columns in the subsequent lines in the frame.

  • Value is a string with the format of a series of triplets, separated by “:”, each triplet having the format: “<name>:<T>:<m>”.
    • The <name> (string) names the column(s), <T> is a one of “S”, “I”, “R”, “L”, and indicates the type in the column, “string”, “integer”, “real”, “logical”, respectively. <m> is an integer > 0 specifying how many consecutive columns are being referred to.
    • The sum of the counts "m" must equal number of per-atom columns M (as defined in FRAME)
  • If after full parsing the key “Properties” is missing, the format is retroactively assumed to be plain xyz (4 columns, Z/species x y z), the entire second line is stored as a per-config “comment” property, and columns beyond the 4th are not read.

Per-atom data lines

Each column contains a sequence of primitive types, except string, which is replaced with simple string, separated by one or more whitespace characters, ending with EOL (optional for last line). The total number of columns in each row must be equal to the M and to the sum of the counts "m" in the "Properties" value string.

READING ase.atoms.Atoms FROM THIS FORMAT

Specific keys indicate special values, with specific order for overriding

Key-value pairs:

  • Lattice -> Atoms.cell, optional [do we want to accept "cell" also?]
    • 3x3 matrix - rows are cell vectors [preferred]
    • 9-vector - 3 cell vectors concatenated [only for backward compat]
    • 3-vector - diagonal entries of cell matrix [?]
  • pbc -> Atoms.pbc, optional
    • 3-vector of bool
    • default [False]*3 if no Lattice, otherwise [True]*3
  • Calculator results, used to set SinglePointCalculator.results dict
    • all per-config properties in ase.calculator.all_properties, with same name
    • scalars, vectors - directly stored
    • stress
      • 6-vector Voigt
      • 9-vector, 3x3 matrix, stored as stress Voigt-6, fail if not symmetric
    • virial -> stress (to convert multiply by -1/cell_vol), same format as stress [warn/fail if stress also present, perhaps only if inconsistent?]

Properties keys (all types are per-atom), types are simple

  • Atoms
    • Z -> numbers
    • species -> numbers, fail if not valid chemical symbol [warn/fail if conflict with Z?]
    • pos -> positions
    • mass -> masses
    • velo -> momenta (get mass from atomic number if missing)
    • same name: initial_charges, initial_magmoms
  • Calculator.results
    • local_energy -> energies
    • forces -> forces [also support “force”? What about overriding, complain if inconsistent?]
    • same name: magmoms (scalar or 3-vector), charges

WRITING ase.atoms.Atoms TO THIS FORMAT

General considerations

  • platform-appropriate EOL
  • [require some specific whitespace convention?]
  • scalars
    • all strings are quoted
    • otherwise stored unquoted
  • arrays
    • use {} [or []?] container marks, comma separated (not backward compatible " and space separated forms)
  • Definitely store (naming as described below)
    • all "first-class" Atoms properties (cell, pbc, numbers, masses, positions, momenta [any others?])
    • all info keys that are scalar, 1-D, 2-D array of prim type
    • all arrays that are scalar (Natoms x 1) or 1-D array( Natoms x (m > 1)) of prim type, shape[1] mapped to number of columns and space separated, not using regular array notation
    • [optionally warn about un-representable quantities?]
  • all Calculator.results key-value pairs, per-config same as info, per-atom same as arrays
  • Perhaps store
    • all info keys, per-config calculator results that are not representable (i.e. not prim type scalar, 1-D, or 2-D for per-config only) but can be mapped to JSON, as string starting with "_JSON "
    • same for arrays [?]
  • In general, keep ASE data type/dimension, invert mapping of names for reading. For quantities that have multiple possible names, use:
    • Lattice, not cell, 3x3 matrix
    • velo, not momenta
    • stress, not virial, as 3x3 matrix [are we OK with this?]

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.

extxyz-0.2.2-cp313-cp313-win_amd64.whl (280.9 kB view details)

Uploaded CPython 3.13Windows x86-64

extxyz-0.2.2-cp313-cp313-manylinux_2_28_x86_64.whl (260.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

extxyz-0.2.2-cp313-cp313-macosx_15_0_x86_64.whl (285.9 kB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

extxyz-0.2.2-cp313-cp313-macosx_15_0_arm64.whl (266.4 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

extxyz-0.2.2-cp312-cp312-win_amd64.whl (280.9 kB view details)

Uploaded CPython 3.12Windows x86-64

extxyz-0.2.2-cp312-cp312-manylinux_2_28_x86_64.whl (260.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

extxyz-0.2.2-cp312-cp312-macosx_15_0_x86_64.whl (285.9 kB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

extxyz-0.2.2-cp312-cp312-macosx_15_0_arm64.whl (266.4 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

extxyz-0.2.2-cp311-cp311-win_amd64.whl (280.9 kB view details)

Uploaded CPython 3.11Windows x86-64

extxyz-0.2.2-cp311-cp311-manylinux_2_28_x86_64.whl (260.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

extxyz-0.2.2-cp311-cp311-macosx_15_0_x86_64.whl (285.9 kB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

extxyz-0.2.2-cp311-cp311-macosx_15_0_arm64.whl (266.4 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

extxyz-0.2.2-cp310-cp310-win_amd64.whl (280.9 kB view details)

Uploaded CPython 3.10Windows x86-64

extxyz-0.2.2-cp310-cp310-manylinux_2_28_x86_64.whl (260.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

extxyz-0.2.2-cp310-cp310-macosx_15_0_x86_64.whl (285.9 kB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

extxyz-0.2.2-cp310-cp310-macosx_15_0_arm64.whl (266.4 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file extxyz-0.2.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: extxyz-0.2.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 280.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for extxyz-0.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 28424a8e3033167605359d787c2a2d35a4fb601bea572cfe4395aa8b83cd465f
MD5 3546e9d0dfaf2b22343a55830cfe9642
BLAKE2b-256 1df326fb6216a9eaab35058652adc2c49fdcb13f873fbd50b8ea9712ebfde30b

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9566dd2456fc6b82d16a97b3805a631a7dfc5a1adc45d244612537323099016f
MD5 7be9d0a7a146bffe7dd2d311f30e5346
BLAKE2b-256 1028f63dbfc0d99214a36fa56a0145ee2340aab4c60c145b9ad5c982ffc15973

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 a631649d9f0a9bdcfb7e26911dd208fac0f3f141786d4bb989987e568803dcad
MD5 cef931dd8e34519ad935d50f39ff3a43
BLAKE2b-256 9d7dc53794b9a5bbbd140617d32da81bd8b4e06520ac50f7ed0ab9d7a258597a

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 83b9887a6a8d998626e8b5790822f9e44accfedcbfe766f17dd645740585dddc
MD5 8333d1046b410816f19b42ad43851ac6
BLAKE2b-256 ef579f0ab9bc98a744211d4174a735129a52198dc2b28d74acf42bb3dcff1986

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: extxyz-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 280.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for extxyz-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2a8d841bea1fff235c36366ffada25ebb73488b0109d6f378d095b39622ed131
MD5 9de8c5347dd8e7bfc68e7b633a651eea
BLAKE2b-256 15ff015b9e9462c2d9784f38e3107209a85ec18b566967ad58204fe656bb067b

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 40a60344ba70d2ac27521d2653fb3bd4cfe1c080378bf6f9b8a987b2f44910c4
MD5 0528f548ea71ab7b135c2ddb7c6c6d62
BLAKE2b-256 9e3c9e2aa492737b67ba996c546b74e81d4f56f140a300614d881a08717e8fb4

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 f02c8eb656bcca448ee869d313b7817bcf11c74c217576ea32d5629d9195191b
MD5 4b6a7f8daab7dbb4a6f6131cb05244da
BLAKE2b-256 07303550de1b4999a91e2ff8d14806a317d9f0ad1034c69588adf833be64349e

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 afe2b91b6f3b0fce5fe74ded00d312e7c6e4f9bfb59be0def3a15a82ca51ddfc
MD5 169361a5bb3b162ffd9e860dea0d6008
BLAKE2b-256 f2cf739090f07b4e9697acd9371893dd9dc17f5576a0642c6bb5fa1d7665e605

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: extxyz-0.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 280.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for extxyz-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fc2e9faf5d0449a239c9e272365ab0b9218e5beec7670d577af53eca51cbf93c
MD5 299ea14ade9be6d4f44cc29c1a2d3c61
BLAKE2b-256 a1086d9f57c355168582e11fbdd15280b09f3a1c381ec000305b16f55c3e782e

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4487b6ee6699b95ee3fec89c91148ead27eecde2b5a1ce56e9c2c1c6808e6d43
MD5 6960100b527341af9c27296a09d26ed3
BLAKE2b-256 82445852f3165db2d88e8a496d12ab457d676dd80ac001481e48d2b016b30733

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 c4e9d792472e968e50aa269d59fc421e9124e978ddb1a32b0b3198ade4f6c39b
MD5 fd5b5e98c62049fdd32e760a134394a6
BLAKE2b-256 3c5c954c0d85f9a2d5c15b251407d27dca864becf51bc88c0ea8b3b0311fd124

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 34602ca03dcadab0b54dffbc3431fd7399bb6aa700b82e6394ec3464da20e186
MD5 aacf081c78e4eec36f86a85144c618c6
BLAKE2b-256 4379c2bb814bf8b23946d6991a68b06ec7edde2992f0d7ab2ae6a668147c7aea

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: extxyz-0.2.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 280.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for extxyz-0.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 16a1ef5fa9f439e8427f40494d6d5a4e889ce5051f5b52697f3842f3001edc35
MD5 f8dbeb1bd02b287f728dd3f6aa8d7f2b
BLAKE2b-256 22d89b1b4674c2d94a8be8dd133cf423227af38b2dda6aae17449f5fb2beb384

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7f5dcd895d0c271d67df3cf3be8b2f66939bd1a5f49f97b240d98f207d81391a
MD5 03412b90e87a26b2cba1ce9d99ab6695
BLAKE2b-256 4278e1929b26e33ff756725d6a911b3140ca1e9d04520e0743977517d0a43f5f

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 0149ea4b7e503c744f8e33dfe3c84512a924123e362925c3c72eef8498d7caa8
MD5 3781a2e5fdc380969921d9e80cbc4546
BLAKE2b-256 c3b408a70bfb0cf0d42d2e81156d3d257cd5180a7e3be9b1ff87f6d900f766e2

See more details on using hashes here.

File details

Details for the file extxyz-0.2.2-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for extxyz-0.2.2-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 18cc7158107639290c6cd4468007915c343d7accefd802dc5a775705a29b9fe9
MD5 b9d957ecbc9718d39303dc820bb836e2
BLAKE2b-256 97543e0ce8f3bc834b2cb1479dcf52950fe416afd2029b1d203762ef72816e85

See more details on using hashes here.

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