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.1.0.tar.gz (4.0 MB view details)

Uploaded Source

Built Distributions

fast_crossing-0.1.0-cp312-cp312-win_amd64.whl (308.6 kB view details)

Uploaded CPython 3.12 Windows x86-64

fast_crossing-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (436.3 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fast_crossing-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (416.1 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

fast_crossing-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (337.1 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fast_crossing-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl (369.2 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

fast_crossing-0.1.0-cp311-cp311-win_amd64.whl (304.5 kB view details)

Uploaded CPython 3.11 Windows x86-64

fast_crossing-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (436.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fast_crossing-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (418.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

fast_crossing-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (335.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fast_crossing-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl (367.4 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

fast_crossing-0.1.0-cp310-cp310-win_amd64.whl (303.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

fast_crossing-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (435.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fast_crossing-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (417.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

fast_crossing-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (333.7 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fast_crossing-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (365.7 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

fast_crossing-0.1.0-cp39-cp39-win_amd64.whl (291.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

fast_crossing-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (435.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fast_crossing-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (418.0 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

fast_crossing-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (333.8 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

fast_crossing-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl (365.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

fast_crossing-0.1.0-cp38-cp38-win_amd64.whl (303.5 kB view details)

Uploaded CPython 3.8 Windows x86-64

fast_crossing-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (435.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

fast_crossing-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (417.5 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

fast_crossing-0.1.0-cp38-cp38-macosx_11_0_arm64.whl (333.6 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

fast_crossing-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl (365.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: fast_crossing-0.1.0.tar.gz
  • Upload date:
  • Size: 4.0 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.1.0.tar.gz
Algorithm Hash digest
SHA256 d05cf25bd62bb3bf6e4ed59824e97edecafebc0ed7dc7508daf55e3eaf087254
MD5 ceae00e58ba713ef0c4ffcdee5c5284c
BLAKE2b-256 1aee7b03b64699c26229dfbd06dfbaa29e2915ea5396a9ca44c67b639eaecaf4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f202eda8d538888ce92e06dd448dad696e190dbf4ea719b19a89cef4b1a4c99b
MD5 52ee8d71573838c1c21841b7819969d5
BLAKE2b-256 fe1d28151776dcff3751914e44853e753887e0b40e196e61a708b55c06d32845

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5af13835dca1069c7e8e9b6611953a193e433ba04c9b9f3c2b8e1e2b1ff8e14b
MD5 1e276d95d4333f19acbbbdc3390c4300
BLAKE2b-256 b7e50e1689ab390e26e4324458bda33e80385526eeadb5ebbf866ef040e14c13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ffe59551272acc4a22726961a836e7f2b8ff40887cdfbfd2d784df03ffbd5862
MD5 55e36843bb1e19a3f413d7101884724f
BLAKE2b-256 e2da91e489629abdda6ca2eba5699b8aabd1ed2648654f20667f13f40dc9826a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc7ab8accabc079f4327b821a6ebbd5097be22bd9a868b82b26b82fefd3e63fb
MD5 27d4e2946030b72e662c3ca6171c5487
BLAKE2b-256 bd13def2148dddc5884c1a2a452ee715c5d84742795b32685d9253dcea98d10e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7b50aaf4d0eedacf62a971cf9e45123444d83080dba00f29075d8dde9a9e4159
MD5 60396262088620330772655988f738f5
BLAKE2b-256 3c1d9d8aab611690d9694a4348a5431c1a90d749168f5f64ab155891e3094984

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d53943f10d866affcbb1110c3e9e7dee8f8baa710fb9e11ef410530314b059dc
MD5 ef6433fc40822244dd09229e7da25d58
BLAKE2b-256 54373dfbbcc4816665a6c2475a2745a2a6bf7b549c5e6c3aaad889b9413b3135

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d80b4801d96195b661c48ae5929f836a3eac2fd483978231f43900c38c479102
MD5 616ee481a1771689ef53ba4afa1cd6dd
BLAKE2b-256 45ba4e1f085cdac51e66fe10703140bf0a7e0c4ef8d85ad94aab465059854762

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 667a6c00c01c1a156af16744da3c4d076e72dbd60adbe3b3fe7f9ab76ae84fa5
MD5 4f699d159e266a0cb32a5799bbdfe771
BLAKE2b-256 94536593575e3ca2105fb77065e74a0b21837b2549389d93b117e0875347afdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4886a4216e9dd404ff9b1e54b8680e59222ca4f67f8f9ceb2233e7e923850502
MD5 56d3035643df917bbcbe4b95076d46d2
BLAKE2b-256 7b31f9a9fc7716d476321380bda237c9498f0a0ba143682fe5a25882521dd6ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6b2e0e06b92418dea31981b592d5b780aa02cefaa6f5509438fc19146f7de49e
MD5 96b49b31285284aff1c7355111e54c3d
BLAKE2b-256 77dd9c81a3374c1760cbc7b0c2f13ec197d44bb8701c20a27e3ecc08ee77c8d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 43419f4c353f4adf11cc47e88b82a55dac693d415a0a7678c83945092e4cd63f
MD5 8e754d2d5ae0f878ba10814cd15f70d9
BLAKE2b-256 a513ba45bfb20d107b12e8890546e4bfbd0ea808a66d1524d8a3d06841f9c36e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc6c3dde49a792a87f518b747d1a742310875ecaa65cc551538929f0a01b2009
MD5 7fe4614251660383d4ecbe96f4bb564f
BLAKE2b-256 fca051674382d04b9472c4267d50bdff1a10bcff6ae271e233c571800979eac7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c6553a7f385cf58680ec63474515fd48098dfbe0b09dd87d24ef5165edce523e
MD5 381307ce5bad5c32ab64a8bc51db68a1
BLAKE2b-256 b205e2c887dc52ba5b297b2849189c30b3c47dc6a0099318f6706c4086a94ab8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b98f0e4f24600640c9059cd68a70bdec4f6af8e6a4d9cc3a3d867fe24331466
MD5 91e487e2edff02c71245cd0eeb911ec6
BLAKE2b-256 adebbabfbf35a370f4feeb6bc621b9393f622fc8639910d47aa014d5791bb79d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7cd5ebf2d7bcdc95da97e2286e57bc9cc54fc064699c9aac35424d628f9f0f0a
MD5 6deed60cdad85489d6135df8cc4ac9f9
BLAKE2b-256 f4e82dce25e0f6cb2946853ef4b8487389f2f4a1e9d16cddde045cf65a6617e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6ae318c75cd0047e4ecede5f1c500e527d4c244936688841aa49f8ea19658a9f
MD5 9cab779c802993cedd8e53d12945a2a6
BLAKE2b-256 6cc6bab3ff63e7aece5d5877ccb9a6bad3d4c21ac2cd162a869890ab5c3a1c07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e69dc5797f155ace82b31eb9542e36698e4be97bdd49d34650e17e9994d1784f
MD5 6f96601b1b1c36fb15e5c8bfba2ce8d3
BLAKE2b-256 8b859ca11c743f8fc00b0922da8083b3a2f90cbf8a6a30706832cebc9a60f79a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c0aae73f3d8ba9ad97779178d89c653c44fdf6ea9d85d034bb91d062f75ccf2f
MD5 52bc5eec89e6d3f46fbf56d474778af7
BLAKE2b-256 adec6d2bb6b09727b825eb2e4f1c5d62edd808b78b9017f2dff78ae97f8f9bbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 038c308acf2660edad9fcf62876503c81092665829f6934d43d7b97a8141726f
MD5 9bbfa36dfa6b49d28f4a41341375aa12
BLAKE2b-256 dc2b216304790534f7e91f81a7978fbf1b689b65662e20fe2ee307d9a4ac0cc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b68df357e69ab729c94d240d7d91b0a0f0eeff42ffaf3b1a40bed47dfb9e4166
MD5 79f3eacba3da5008644bf624e96c5d96
BLAKE2b-256 8e5df84b12c2b7114edb248ff6be4329e8c6e7a32acd2d5965ca7f48e56c0c57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 dfb087ddd9e4ab6a7d0ccf028ca34fdf8b0bb7fa9f16deaa6b4afc2b9ab64bfa
MD5 f9fbac3e0b238829461d28b490064021
BLAKE2b-256 4ef8354343413c6d2f46077111181c5e78db816f28127e20107128168bef32f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b0e2fcd58af50dfbb6b4c4ca90aa2d5a70b17a3de00497d02b2a886b4e191fdf
MD5 77248c950fc7e876bd9ce551e9520dc2
BLAKE2b-256 536dc12e05fb0a373f186c4683c50ca5770de4fe7cb84b8adfa166dd1fc0425d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a323794d398f6b253392f0050f22d82e1cbe6f6cdb93a0b667c3a8cfbb89bed4
MD5 d0a3e77a71c56acf0f2d53359952c734
BLAKE2b-256 d897d5ed8c1aeef2fbcf35392c6acd666a9e31864112b40d31d03d847d4ffa95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d6c7f6498477dfd7b8911fa09e9970ca574187e3d678673a1971c109e2ce180
MD5 789788517b6873e2ee230f85d922b4fa
BLAKE2b-256 1acee96507c6654723f88ee98f7710507edc8afee6629d08cdaa9b6367e5e453

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fast_crossing-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 043e5daaa67170ee3532b63ea91fa42cec599532fec9a3b2c2b3f39ed81b42ac
MD5 10d9d9f112d740c6c784291860aea6fc
BLAKE2b-256 9e81554f8c12d6ae255a912fef808c1ac2fe9988cd52ea0c1d7522f463994559

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