Skip to main content

fast crossing

Project description

fast crossing

(See jupyter notebook here)

Fast polyline (line segments) intersection (fast version of bentley-ottmann).

Installation

via pip

pip install -U fast-crossing

from source

git clone --recursive https://github.com/cubao/fast-crossing
pip install ./fast-crossing

Or

pip install git+https://github.com/cubao/fast-crossing.git

(you can build wheels for later reuse by pip wheel git+https://github.com/cubao/fast-crossing.git)

Related

Inspired by anvaka/isect: Segments intersection detection library.

Usage & Tests

See tests/test_basic.py:

import numpy as np
import pytest
from fast_crossing import FastCrossing


def test_fast_crossing():
    fc = FastCrossing()

    # add your polylines
    """
                    2 C
                    |
                    1 D
    0               |                  5
    A---------------o------------------B
                    |
                    |
                    -2 E
    """
    fc.add_polyline(np.array([[0.0, 0.0], [5.0, 0.0]]))  # AB
    fc.add_polyline(np.array([[2.5, 2.0], [2.5, 1.0], [2.5, -2.0]]))  # CDE

    # build index
    fc.finish()

    # num_poylines
    assert 2 == fc.num_poylines()
    rulers = fc.polyline_rulers()
    assert len(rulers) == 2
    ruler0 = fc.polyline_ruler(0)
    ruler1 = fc.polyline_ruler(1)
    assert not ruler0.is_wgs84()
    assert not ruler1.is_wgs84()
    assert ruler0.length() == 5
    assert ruler1.length() == 4
    assert fc.polyline_ruler(10) is None

    # intersections
    ret = fc.intersections([1.5, 0], [3.5, 2])
    assert len(ret) == 2
    assert np.linalg.norm(fc.coordinates(ret[0]) - [1.5, 0, 0]) < 1e-15
    assert np.linalg.norm(fc.coordinates(ret[1]) - [2.5, 1, 0]) < 1e-15
    xyz = fc.coordinates(0, 0, 0.2)
    assert np.linalg.norm(xyz - [1.0, 0, 0]) < 1e-15
    with pytest.raises(IndexError) as excinfo:
        xyz = fc.coordinates(2, 0, 0.5)
    assert "map::at" in str(excinfo)

    # query all line segment intersections
    # [
    #    (array([2.5, 0. ]),
    #     array([0.5       , 0.33333333]),
    #     array([0, 0], dtype=int32),
    #     array([1, 1], dtype=int32))
    # ]
    ret = fc.intersections()
    # print(ret)
    assert len(ret) == 1
    for xy, ts, label1, label2 in ret:
        # xy: intersection point, 2D ('o' in previous illustration)
        # t,s: interpolation ratio (0.5, 0.33)
        #        0.5  ->   o at AB t=1/2
        #        0.33 ->   o at DE s=1/3
        # label1: line segment index, (polyline_index, point_index)
        #        e.g. (0, 0),first segment of polyline AB (AB is the first polyline)
        # label2: line segment index
        #        e.g. (1, 1),second segment of polyline CDE
        # print(xy)
        # print(ts)
        # print(label1)
        # print(label2)
        assert np.all(xy == [2.5, 0])
        assert np.all(ts == [0.5, 1 / 3.0])
        assert np.all(label1 == [0, 0])
        assert np.all(label2 == [1, 1])

    # query intersections against provided polyline
    polyline = np.array([[-6.0, -1.0], [-5.0, 1.0], [5.0, -1.0]])
    ret = fc.intersections(polyline)
    ret = np.array(ret)  # convert to numpy
    xy = ret[:, 0]  # take all intersection points (2D)
    ts = ret[:, 1]  # all interpolation ratios
    label1 = ret[:, 2]  # all labels (of current polyline)
    label2 = ret[:, 3]  # all labels in tree
    # print(ret, xy, ts, label1, label2)
    assert np.all(xy[0] == [0, 0])
    assert np.all(xy[1] == [2.5, -0.5])
    assert np.all(ts[0] == [0.5, 0])
    assert np.all(ts[1] == [0.75, 0.5])
    assert np.all(label1 == [[0, 1], [0, 1]])
    assert np.all(label2 == [[0, 0], [1, 1]])

    polyline2 = np.column_stack((polyline, np.zeros(len(polyline))))
    ret2 = np.array(fc.intersections(polyline2[:, :2]))
    assert str(ret) == str(ret2)


def test_fast_crossing_intersection3d():
    fc = FastCrossing()
    """
                    2 C
                    |
                    1 D
    0               |                  5
    A---------------o------------------B
                    |
                    |
                    -2 E
    """
    fc.add_polyline(np.array([[0.0, 0.0, 0.0], [5.0, 0.0, 100]]))  # AB
    fc.add_polyline(np.array([[2.5, 2.0, 0.0], [2.5, 1.0, 100], [2.5, -2.0, 0]]))  # CDE
    fc.finish()
    ret = fc.intersections()
    assert len(ret) == 1
    ret = ret[0]
    xyz1 = fc.coordinates(ret, second=False)
    xyz2 = fc.coordinates(ret)
    assert np.linalg.norm(xyz1 - [2.5, 0, 50]) < 1e-10
    assert np.linalg.norm(xyz2 - [2.5, 0, 2 / 3 * 100.0]) < 1e-10


def test_fast_crossing_auto_rebuild_flatbush():
    fc = FastCrossing()
    fc.add_polyline(np.array([[0.0, 0.0, 0.0], [5.0, 0.0, 100]]))  # AB
    fc.add_polyline(np.array([[2.5, 2.0, 0.0], [2.5, 1.0, 100], [2.5, -2.0, 0]]))  # CDE
    ret = fc.intersections()
    assert len(ret) == 1

    fc.add_polyline([[1.5, 0], [3.5, 2]])
    ret = fc.intersections()
    assert len(ret) == 4  # should dedup to 3?


def test_fast_crossing_filter_by_z():
    fc = FastCrossing()
    fc.add_polyline([[0, 0, 0], [1, 0, 0]])
    fc.add_polyline([[0, 0, 10], [1, 0, 10]])
    fc.add_polyline([[0, 0, 20], [1, 0, 20]])
    ret = fc.intersections([[0.5, -1], [0.5, 1]])
    assert len(ret) == 3

    ret = fc.intersections([[0.5, -1], [0.5, 1]], z_min=-1, z_max=1)
    assert len(ret) == 1
    assert fc.coordinates(ret[0])[2] == 0

    ret = fc.intersections([[0.5, -1, 10], [0.5, 1, 10]], z_min=-1, z_max=1)
    assert len(ret) == 1
    assert fc.coordinates(ret[0])[2] == 10

    ret = fc.intersections([[0.5, -1, 20], [0.5, 1, 20]], z_min=-1, z_max=1)
    assert len(ret) == 1
    assert fc.coordinates(ret[0])[2] == 20

    ret = fc.intersections([[0.5, -1, 15], [0.5, 1, 15]], z_min=-6, z_max=6)
    assert len(ret) == 2
    assert fc.coordinates(ret[0])[2] == 10
    assert fc.coordinates(ret[1])[2] == 20


def test_fast_crossing_dedup():
    # should be stable
    for _ in range(100):
        fc = FastCrossing()
        fc.add_polyline([[0, 0, 0], [1, 0, 0], [2, 0, 0]])
        fc.add_polyline([[0, 1, 0], [1, 1, 0], [2, 1, 0]])

        ret = fc.intersections([[1, -1], [1, 1]])
        assert len(ret) == 2
        assert np.all(ret[0][-1] == [0, 0]), ret
        assert np.all(ret[1][-1] == [1, 0]), ret
        assert ret[0][1][1] == 1.0, ret
        assert ret[1][1][1] == 1.0, ret

        ret = fc.intersections([[1, -1], [1, 1]], dedup=False)
        # for idx, row in enumerate(ret):
        #     print(idx, row)
        assert len(ret) == 4

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

fast_crossing-0.0.9.tar.gz (3.7 MB view details)

Uploaded Source

Built Distributions

fast_crossing-0.0.9-cp312-cp312-win_amd64.whl (286.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

fast_crossing-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (356.1 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fast_crossing-0.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.0 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fast_crossing-0.0.9-cp312-cp312-macosx_11_0_arm64.whl (278.8 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fast_crossing-0.0.9-cp312-cp312-macosx_10_9_x86_64.whl (313.9 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

fast_crossing-0.0.9-cp311-cp311-win_amd64.whl (285.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

fast_crossing-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (356.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fast_crossing-0.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

fast_crossing-0.0.9-cp311-cp311-macosx_11_0_arm64.whl (277.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fast_crossing-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl (308.1 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

fast_crossing-0.0.9-cp310-cp310-win_amd64.whl (284.4 kB view details)

Uploaded CPython 3.10 Windows x86-64

fast_crossing-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fast_crossing-0.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fast_crossing-0.0.9-cp310-cp310-macosx_11_0_arm64.whl (276.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fast_crossing-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl (306.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

fast_crossing-0.0.9-cp39-cp39-win_amd64.whl (275.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

fast_crossing-0.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fast_crossing-0.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fast_crossing-0.0.9-cp39-cp39-macosx_11_0_arm64.whl (276.5 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

fast_crossing-0.0.9-cp39-cp39-macosx_10_9_x86_64.whl (306.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

fast_crossing-0.0.9-cp38-cp38-win_amd64.whl (284.6 kB view details)

Uploaded CPython 3.8 Windows x86-64

fast_crossing-0.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (355.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

fast_crossing-0.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

fast_crossing-0.0.9-cp38-cp38-macosx_11_0_arm64.whl (276.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

fast_crossing-0.0.9-cp38-cp38-macosx_10_9_x86_64.whl (306.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file fast_crossing-0.0.9.tar.gz.

File metadata

  • Download URL: fast_crossing-0.0.9.tar.gz
  • Upload date:
  • Size: 3.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.10

File hashes

Hashes for fast_crossing-0.0.9.tar.gz
Algorithm Hash digest
SHA256 66a0b911b9956e1bdb930fc73ce72726c3a200102c42bac7c367766a5d1dba9c
MD5 9f51ed123bf9f834dd9f9d5557a9a7d9
BLAKE2b-256 b04395bd3149c7842165d9abc0a6d961c38d61b0937cf619973d7da5f591abf4

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a80709cd05fcabc65e9a77ee885a52aec249a3384fdfef80a42be3f39634eb22
MD5 8887e48a2f1fa2717f8b5fd669a5cae1
BLAKE2b-256 89c26f75c4cacd380db09ea037e5543290ffcef201c0baa1ca38a9ef7212a600

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78adfaefd8e86598a6540d578680b09eeeb4b7d6629ed8115405ccd3ec32dfbe
MD5 cb1c1afd385b44e9caf71f8cfef760e3
BLAKE2b-256 40d5339faeb2f268b51f925e8fcb355d98c63c7f6b8f4a70821d81312e11398b

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3e94b543f5e7c81bbf787b7cb663cc6c2651e550e852877894eb8d81c861c29c
MD5 d9635c63f83cf56dd1176c2b9f2a2a88
BLAKE2b-256 41cf65e608dffb8af5c9eeae56e3ede0f2f7bb72993f55d97e3070ae30a56eb6

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a47239ba65ae51671fd627a24691c3d110312dd36d51e39b2fd9e06bd7d84b75
MD5 e306bd217708585bc046bd3950d88c91
BLAKE2b-256 3027980e6294e6a33d2a2827463e3d76f345231d8037214d29d106bf94da5ef5

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f719ac2c1d89ed0708ec7bd7d221c0f8e182e3b4edfc32a428e6ae67fc36947e
MD5 3d39e8450ce37e6317e37c3875de4bfa
BLAKE2b-256 0b2a16fdc7660b2c32ac98cbc8b9f0a6b3ec2691e7cd4b66b6202bbc5f0648a4

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3c77c1523ae13d7cc68e312e1b29cd8f3b147acefb18c37a1093df531833c440
MD5 8db99cdbb456ed95b1acf380ffa6bdb4
BLAKE2b-256 ccbbdf6695c91b9ca11054f264eb996d1b92e6ff6ba1100b2127ff1d8c96cc31

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 948c3a8e69ac7a630efddb5c4406b3edd46102b61401e01ede110d79346e3630
MD5 6c6b13bd9b8b25d76277a99b71c90084
BLAKE2b-256 bf38fa52e5285249ce8cf72b1bcfbb62b1eaf9bd6ee6e96cb10f29f184357c3b

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2a5c059956e915ea502805615a420ae0ab299e69b778f063ecd29c0d1d61c99b
MD5 5f5c316de96df0b3d7712cce7d048255
BLAKE2b-256 c60a0de185aa7976ddd12c289895fd2764919a3a60e9b5368f2e9785899a503a

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc1a284d589c27cf6833d3aa711583094ecbda701b590d4ebd5fd983a69fbbf6
MD5 28507ac89249de610e8d8619f6dd862f
BLAKE2b-256 9b7dfe61c8bef69499e8b99601f4f637aedb1ee51d22a6e64273ee51ef177718

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c5a089e604dd07a685dcaa4ce84e5d80a38087692306f727ddabc0cceb7ee521
MD5 8cc9ed6327de92b00b40c7d6cd5835e9
BLAKE2b-256 20ab25ebe1c09d497a279da36a81cb7574615b7ff7ce9de9e4c5c17d87bc80a3

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 62c9054a420cc9a8b577880d886df89aeae6d8a3e24f166a74e43c389383c133
MD5 c836d493d38e16b0e833b47bfa4a107e
BLAKE2b-256 82c03a4a28deb6ffa58d904f25a5061f25b9722be21019c616f20fcdb2d3df77

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 447f04de91835c76e38ca519b8a58d23cf402055006a53e7af362598f8910ff9
MD5 94b9a4102ffb96d22524f5dbcb029403
BLAKE2b-256 559ebf3f222ea0945d541f1a47a164a9c722f4cb92f2b67015ac302b767f5d0c

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3a31e9a4f0ad2c526469ede80d57ea1deb6631ff9556d0c622b97380e0a3e726
MD5 96c8552826caf69c7327b0e278bcd3ea
BLAKE2b-256 dc82a5e4fa1f61872d2e036f9308efd380233c462b7b57d695423569ff4086c5

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a94a6b190f449745eba935d861fe7e0a818614851739d89e9245490df34b9f7
MD5 3496d1e1a7ad61f6ac3ba40b936aa83f
BLAKE2b-256 d331c8262ae7f16bacbf7e2495b5febbbc9c704ecc83feeb0a73c4a59685e023

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 87d799d478291c93550ee6284d8d0978b7a0f6596f9fe2326f7f1cb4ea139c2c
MD5 3eb02d84334a9639d8fdaf9f14b818bd
BLAKE2b-256 d887f8a01d6e19b42b82e491dfd846a8b25a51039e5fde9d14674a86dc264806

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 970f77f7c5d19ebcf2004afef81fcf41044d70cd1fd15e929cc77653ab064949
MD5 0b7ba35d3a0901d30abfa5c072078037
BLAKE2b-256 6f75167deebe2a2d4c6cff61d919111a6c0dc6704be5ef48e9cf660f9a3a7502

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f2a491049c7d7470cee7a8c438f6638c3432f9f1f5483537cb1a646e1888a490
MD5 d1cc05a6c7486fe76f77b6bd1688e369
BLAKE2b-256 f14545c57395ce27fe96a47ef523bb1f7307dd4fe74fa8adb3b96d8554c0abc2

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 550aacbe7302e25fd8284bf3689249884534479175574359fd95a4778ac8f6ca
MD5 f94a2f213823e24d1d179cf94fe5b46d
BLAKE2b-256 a880fb2477a7de40912734ab6e6d4af31a895fe565b7789447518004bdc930a7

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 38cb30084c4fa072014861ea726be35d63b5f63e26a6a50825b0ab03dcc21391
MD5 bc2b777e0b4fba501b115aa328a439d1
BLAKE2b-256 a0dd1203b0ba49b7f4114e1e8681d33a24c6934ea1dcd182362728414d1bf252

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c66c1af54abb974f42ab4fca42e6176dce0b643f86df4f6a7ebb504bd88719a8
MD5 d4ebd1435a0ddc41ed42915f15e7e2ec
BLAKE2b-256 6d0b4f0ee6d3736e5987b4beffad428741e65ee6f0ba547f2a66fb0242c0f5c2

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 bbce32ffc4b78bd92849c2454bbd3afa449fb6d2befff2fdb5e87354af0acb68
MD5 20eecff12ecc6cd823e9e0b6a0610791
BLAKE2b-256 32a273a2abb4f67a5ee39392011d03bc4233870e03ae9798d1b54d8d4ee3a1ea

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b80d115b8b17ee8b238738e242257d2bc61d095a09f184ca685cadd7f501e24d
MD5 5cfe354ee2096659ed90dcf510b3cf8c
BLAKE2b-256 da5bcece7885b06d4e868f3bce93ed7f0af011d119918776a09455d49165dd1b

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8c53e82504ef6d349de40430780515cfd18f76ec0326fab6011a784e99588151
MD5 f92c47ad9467e9598c11119edcb45091
BLAKE2b-256 ed0ce8ec50132217d04418391247bafc1de2e374b7bbdf4237e5a42c493aed08

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a6a714c1434da61887c770531b18be6875e9fb551bc21fc39dddf1023b7d75b6
MD5 53c35383cc1083a5f86ce953947f76cd
BLAKE2b-256 e0893a7cd1fa77a0a04ed893e3eee4ceb3ade848aaa4c89fcad346af4774ed65

See more details on using hashes here.

File details

Details for the file fast_crossing-0.0.9-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fast_crossing-0.0.9-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1d56dfa40f265adc729a82b331d366505452a6468bb918916f5ded81284c23cf
MD5 ed367eabbbf7882a5a8db64df5fa4510
BLAKE2b-256 bf198bd89742398be2bf6f91f05e2c773d4e1cad2de2488dc1fcd1def5c94915

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page