Skip to main content

Coordinate reference systems and coordinate transformations (OGC Coordinate Transformation Services, EPSG, WKT 1 and WKT 2)

Project description

CrsKit for Python

Coordinate reference systems, Well-Known Text and coordinate transformations, backed by the full EPSG catalogue. A thin binding over CrsKit, a C++23 implementation of the OGC Coordinate Transformation Services model, conformance-tested against the IOGP GIGS series.

pip install crskit[epsg]

Getting started

The [epsg] extra brings the EPSG catalogue with it, so init() needs no path — it finds the database on its own:

import crskit

crskit.init()

etrs89 = crskit.crs_from_epsg(4258)     # ETRS89, geographic 2D (latitude, longitude)
utm30n = crskit.crs_from_epsg(25830)    # ETRS89 / UTM zone 30N (easting, northing)

madrid = crskit.transformation(etrs89, utm30n).transform([40.416775, -3.703790])
print(madrid)                           # [440291.2843479216, 4474254.600145094]

Coordinates are given in the axis order the CRS declares — EPSG 4258 is latitude, longitude, not the other way round. Ask the system if you are unsure:

>>> etrs89.axes
[('Lat', 'North'), ('Lon', 'East')]
>>> utm30n.axes
[('E', 'East'), ('N', 'North')]

Transforming many points

transform_points() takes a NumPy array of shape (n, source_dimension) and crosses into C++ once for the whole batch, releasing the GIL while it works — the path to use for point clouds:

import numpy as np

points = np.array([[40.416775, -3.703790],      # Madrid
                   [41.385064,  2.173404],      # Barcelona
                   [37.389092, -5.984459]])     # Sevilla

transformation = crskit.transformation(etrs89, utm30n)
projected = transformation.transform_points(points)      # -> (3, 2) array

NumPy is optional: transform() works with any sequence of floats, and the module imports without it.

Coordinate reference systems

Build a CRS from an EPSG code or from Well-Known Text (WKT 1 and WKT 2 are both understood; the grammar is detected from the text):

crs = crskit.crs_from_wkt(open("layer.prj").read())

crs.name             # 'ETRS89 / UTM zone 30N'
crs.authority_code   # 25830, or None when the WKT carries no authority
crs.dimension        # 2
crs.remarks

Emit WKT in any of the flavours the library supports:

crs.to_wkt()                                        # OGC WKT 1 (the default)
crs.to_wkt(crskit.WktVersion.WKT2_2019)             # ISO 19162:2019
crs.to_wkt(crskit.WktVersion.WKT1_ESRI)             # ESRI dialect, for a .prj ArcGIS will read

Two systems compare by their mathematical definition, not by their name or authority: == asks "are these the same CRS for transformation purposes?", ignoring naming and axis order.

>>> crskit.crs_from_wkt(utm30n.to_wkt()) == utm30n
True
>>> etrs89.compare(utm30n)      # graded similarity, 0..100
0

Choosing between coordinate operations

Between two datums there is rarely a single transformation. EPSG defines twelve from ED50 to ETRS89, differing in accuracy, in the area they are valid in, and in whether they need a grid file. Choosing for you would mean silently deciding how wrong your coordinates are, so an ambiguous pair raises TransformationNotFoundError unless you say which one to use:

def for_mainland_spain(source_name, target_name, operations):
    for operation in operations:
        print(f"EPSG:{operation.code}  {operation.accuracy} m  {operation.area_of_use}")
    spain = [o for o in operations if "Spain - mainland" in o.area_of_use and not o.grid_files]
    return min(spain, key=lambda o: o.accuracy)

transformation = crskit.transformation(ed50, etrs89, select_operation=for_mainland_spain)
EPSG:15932   0.2 m  Spain - mainland and Balearic Islands onshore   needs SPED2ETV2.gsb
EPSG:1588    1.0 m  Norway - offshore north of 65°N; Svalbard
EPSG:1628    1.0 m  Gibraltar
EPSG:1632    1.5 m  Spain - mainland except northwest
EPSG:1650    2.0 m  France
EPSG:5040    5.0 m  Portugal - mainland - onshore
...

Each candidate tells you its code, accuracy in metres, area_of_use, grid_files and information_source — enough to choose by geography and not only by the smallest number.

Heights above sea level

A GNSS receiver gives an ellipsoidal height, which is not the altitude anyone means. Turning it into an orthometric height takes a geoid model. Pair a horizontal system with a vertical one and transform in 3D:

etrs89_3d = crskit.crs_from_epsg(4937)              # latitude, longitude, ellipsoidal height
utm_over_sea_level = crskit.compound_crs(25830, 5782)   # UTM 30N + Alicante height

crskit.transformation(etrs89_3d, utm_over_sea_level).transform([40.416775, -3.703790, 700.0])
# [440291.284, 4474254.600, 648.888]   <- 51.112 m of geoid undulation over Madrid

Or transform straight to a vertical CRS, and get the point back with only its height changed — EGM2008 (EPSG 3855) is the global model, so this works anywhere:

to_egm2008 = crskit.transformation(crskit.crs_from_epsg(4979), crskit.crs_from_epsg(3855),
                                   select_operation=lambda source, target, ops: ops[0])

to_egm2008.transform([27.988056, 86.925278, 8820.43])   # Everest, ellipsoidal height
# [27.988056, 86.925278, 8848.86]   <- the orthometric height everyone knows

When a transformation needs a grid

Datum shifts and orthometric heights often need a grid file (a geoid model, an NTv2 grid) that cannot be redistributed with the software. When one is missing, the error tells you exactly which file to obtain and for which EPSG operation:

try:
    crskit.transformation(source, target)
except crskit.GridFileNotFoundError as error:
    print(error.grid_file)           # 'egm08_25.gtx'
    print(error.searched_path)       # where it was looked for
    print(error.operation_code)      # the EPSG coordinate operation that needs it
    print(error.information_source)  # who publishes it

Put the grids in the data directory (init(..., data_directory=...), which defaults to the folder holding the EPSG database) and the transformation builds.

Where to get the grids

Grid files belong to the agencies that publish them, so they are not shipped with CrsKit. The two you are most likely to need:

EGM2008, the global geoid, published by the NGA — save the file under the name EPSG gives it, which is the name in the link:

These are mirrors of the NGA files, in the little-endian layout the reader expects; the originals are at earth-info.nga.mil.

Spain — the EGM08-REDNAP geoid, which is the model EPSG uses for heights over Alicante datum:

The ED50↔ETRS89 NTv2 grids (PENR2009.gsb, BALR2009.gsb) come from the CNIG download centre. All of these are © Instituto Geográfico Nacional de España, mirrored under its CC BY 4.0-compatible licence; the originals live at datos-geodesia.ign.es.

data/grid-sources.json in the repository maps a grid name to where it can be obtained, so an application can offer to fetch it when GridFileNotFoundError is raised.

Every error the library raises derives from crskit.CrsError, so one except catches them all; AuthorityCodeNotFoundError, WktParseError, TransformationNotFoundError, DimensionMismatchError, CoordinateOutsideDomainError and UnsupportedFormatError let you discriminate when you care.

The EPSG database

The catalogue lives in its own package, crskit-epsg, which the [epsg] extra installs. It is versioned after the dataset, not after the library, so a newer EPSG release is pip install -U crskit-epsg — no new version of CrsKit needed.

init() looks for the database in this order: the path you pass, the DIGI21_EPSG_SQLITE environment variable, and then the crskit-epsg package. Any SQLite built from the official EPSG SQL scripts works — for instance one you build yourself with tools/epsg-sqlite for a version newer than the packaged one:

crskit.init("/path/to/epsg.sqlite", data_directory="/path/to/grids")

The data are the EPSG Geodetic Parameter Dataset (https://epsg.org), owned by IOGP and used under its Terms of Use, which ship inside crskit-epsg. IOGP provides them "as is" and does not endorse CrsKit.

Inside an application that embeds Python

The module links the CrsKit shared library rather than compiling it in. So when a host application that already uses CrsKit runs a script through an embedded interpreter, the loader binds the module to the library the application has already loaded, and both share its state: the EPSG catalogue and settings are the ones the application set up, and there is nothing left to initialise.

if not crskit.is_initialized():
    crskit.init()

Learning it

  • TUTORIAL.md — the long way in, from "what is a CRS" to geoids and point clouds. Written for someone who knows Python and no geodesy; every output in it was produced by running the code. Also in español, français, italiano and deutsch.
  • examples/ — runnable scripts: a quick start, WKT round trips, a million points with NumPy, choosing among candidate operations, and orthometric heights. The test suite runs them, so they cannot rot.

Typing

The package ships type stubs and a py.typed marker (PEP 561), so editors complete the API and mypy checks it, even though the module is compiled C++.

License

Apache-2.0. The EPSG dataset is IOGP's, used under its own terms; this product is not endorsed by IOGP.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crskit-0.5.0.tar.gz (2.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

crskit-0.5.0-cp313-cp313-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.13Windows x86-64

crskit-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

crskit-0.5.0-cp313-cp313-macosx_13_0_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

crskit-0.5.0-cp313-cp313-macosx_13_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

crskit-0.5.0-cp312-cp312-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86-64

crskit-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

crskit-0.5.0-cp312-cp312-macosx_13_0_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

crskit-0.5.0-cp312-cp312-macosx_13_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

crskit-0.5.0-cp311-cp311-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.11Windows x86-64

crskit-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

crskit-0.5.0-cp311-cp311-macosx_13_0_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

crskit-0.5.0-cp311-cp311-macosx_13_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

crskit-0.5.0-cp310-cp310-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.10Windows x86-64

crskit-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

crskit-0.5.0-cp310-cp310-macosx_13_0_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

crskit-0.5.0-cp310-cp310-macosx_13_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

Details for the file crskit-0.5.0.tar.gz.

File metadata

  • Download URL: crskit-0.5.0.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for crskit-0.5.0.tar.gz
Algorithm Hash digest
SHA256 18aeb3af81acdfcf150a17531872865083e6dcefd272547c1e65148dc5c42004
MD5 a147a833218849e359d8f7a7968a636a
BLAKE2b-256 7420c6f955802868e48d5e3eec64d5c28ae11e04e791895df7b32cf41eab7924

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0.tar.gz:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: crskit-0.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • 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 crskit-0.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 64c4862b7ab7ae0bf874874111ad418cd8a92746639c3d9e708c8c319d7e6e70
MD5 11fdf8912b82832c012dd503115e9706
BLAKE2b-256 349923a50a80de4930a7f5132b28c403f66cdb92f8474432dd99a96ee95728d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 75b4d4547dcd3dd2ece8d0ab7d1f2fe6d7e0b2dbe7d078e9a6e14325f3daeada
MD5 36da765dab1c91faa8aefea4580cb00c
BLAKE2b-256 73215d19786ff7a4aae76c2057d2fd5c951f6b2ce7b5f848d0548725a4e75a7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 272457d47368b7ad52d59e772dd7136f1a5059a6b34da7cc7e30238162d2d042
MD5 b27a375015c6fb560b66341306980231
BLAKE2b-256 92af89710453601b50ef7eb7d79ead5c6edea00f5f593e1ab3cca409f1646ae3

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp313-cp313-macosx_13_0_x86_64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 006c85314bcb35e38f0381a330f82f4ca3ad359f1c913d1b45f3b8d93bcfeeb4
MD5 42377f5bbe83ac4d09a523388ef8c86b
BLAKE2b-256 80dacbfb773ce519a122edfb5c82a4bfbdea376a6ea9da72bef880ead4203bb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp313-cp313-macosx_13_0_arm64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: crskit-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • 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 crskit-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3a135d489a45ff51861ff84db3302afd362736d90a42dcb54f8f6cd93802f259
MD5 101ab2b989380164a4f339d535424436
BLAKE2b-256 823b0116b4eff45eb5d7c47b81428f286050b0e5d5b01df9ecff2c009cb8cd51

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d8edc1e30c671f30db5b8aeac2496d9e09dfbd103585f3d29776fcf9881c17b
MD5 37470f238f097fe0c68ffd3e2af83b00
BLAKE2b-256 3f1c632f440e9d31dc13e8fd6d674357df448ed24171cd2cde0af6b911587d01

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 5ee5308774e65a4e8ebbae40d8d5fdca8db83726dca6a4b1b0426884d0b00316
MD5 3c5ff3091911a82e3c55239ceaaa3666
BLAKE2b-256 2e73fd64d5bb459bd89fdee9b69fa614396a531c0803bbed9c920cdf13411b8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp312-cp312-macosx_13_0_x86_64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 70437dc5ff4deb7ec0979fd3a0c2607aaa8c8e85ce5972bc3c777ce2e346962a
MD5 0e463e8d7d6dce46b79052f39bbbf8af
BLAKE2b-256 bf57c7975ad807af66726390d857870b3c592c99e4800b3f2e4f27e5f62b1e8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp312-cp312-macosx_13_0_arm64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: crskit-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • 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 crskit-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 33be90d5d465f6c02fa7921d217e906c535996fb8e9feda0c0dbe2424d61a5c6
MD5 98e53a72e60d8588904ba8492818af41
BLAKE2b-256 11cef4fa4ce2ba60913730510d9fc9a3f3a0d83813363826de1ba354efc820ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e768dc4e38f1602c1ba7a477dc43e457cf205f1c2950e9bcf2388c38aef367ff
MD5 3f5be91d0fcc8756a7befd964d9a0bca
BLAKE2b-256 7ee441246242626cf597ceae5c947052453633cb8efaa7407bf64eb76735d06c

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a4019fdd72b66087d488495966b5563228aa668d0bf615deb72b6bb648ae03c9
MD5 98d68bb8b67a37027c2ac910bae21df1
BLAKE2b-256 0715f3c29dc11cce2e648ecb95d29aea4950a7d8e53a9404f902a384745ffda4

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp311-cp311-macosx_13_0_x86_64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1852e6966d5b83f1dc099cd778ebada32cab9a2187673ea2344f0dc880c54176
MD5 26ceec9c59d30af6b50f8bd6dad78fa8
BLAKE2b-256 b3ec1261b081a54b39220ffe2539c02362ab9fdfdecb8d791a45eab5fb48fc2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp311-cp311-macosx_13_0_arm64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: crskit-0.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for crskit-0.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 950efecd22c5b0f167f243ca170fe8352a7a8b871f988840a7cbf716473656bb
MD5 931cc4b4928ef8eccd2b479aaaf76bd5
BLAKE2b-256 ec18056eb4241aed7c95277a51163d504d8eea2f7be3dca5232eb1e63a611f6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 84b4324ba6074c94cd3dfabbd53e3a3e571b715a6557dc27fe634d72ab8dd073
MD5 869d6d08f3236fb9582aae98cca98ef0
BLAKE2b-256 07bef14bfeb16df5cb0072d07f40fb0249f36a3d1b8fcea67773d6fa813f1677

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 df676d3f1efca9e36818a69a048cd04ab39712b5f55e991058075ed765704ad5
MD5 4b2dd061d6fd61f494e320ec8cd642ce
BLAKE2b-256 a6a2e9003387c6982e82c18d3733905a020bdcff1f61aa7a54daf1d87718fc40

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp310-cp310-macosx_13_0_x86_64.whl:

Publisher: wheels.yml on digi21/crskit

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

File details

Details for the file crskit-0.5.0-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for crskit-0.5.0-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 5cee4e4658575fa594d2ff6e667f2f125fc317951f1e906b7e20c8b97f2181b0
MD5 c67319f76032d65a18fbae384630a865
BLAKE2b-256 12416107ff2b1886756ce82d9df06de0ae69be63a29640904b45b93f8a88ccb3

See more details on using hashes here.

Provenance

The following attestation bundles were made for crskit-0.5.0-cp310-cp310-macosx_13_0_arm64.whl:

Publisher: wheels.yml on digi21/crskit

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