Skip to main content

COLMAP bindings

Project description

Python bindings for COLMAP

PyCOLMAP exposes to Python most capabilities of the COLMAP Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline.

Installation

Pre-built wheels for Linux, macOS, and Windows can be installed using pip:

pip install pycolmap

The wheels are automatically built and pushed to PyPI at each release. They are currently not built with CUDA support, which requires building from source.

[Building PyCOLMAP from source - click to expand]
  1. Install COLMAP from source following the official guide.

  2. Build PyCOLMAP:

  • On Linux and macOS:
cd pycolmap
python -m pip install .
  • On Windows, after installing COLMAP via VCPKG, run in powershell:
cd pycolmap
python -m pip install . `
    --cmake.define.CMAKE_TOOLCHAIN_FILE="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" `
    --cmake.define.VCPKG_TARGET_TRIPLET="x64-windows"

Reconstruction pipeline

PyCOLMAP provides bindings for multiple steps of the standard reconstruction pipeline:

  • extracting and matching SIFT features
  • importing an image folder into a COLMAP database
  • inferring the camera parameters from the EXIF metadata of an image file
  • running two-view geometric verification of matches on a COLMAP database
  • triangulating points into an existing COLMAP model
  • running incremental reconstruction from a COLMAP database
  • dense reconstruction with multi-view stereo

Sparse & Dense reconstruction from a folder of images can be performed with:

output_path: pathlib.Path
image_dir: pathlib.Path

output_path.mkdir()
mvs_path = output_path / "mvs"
database_path = output_path / "database.db"

pycolmap.extract_features(database_path, image_dir)
pycolmap.match_exhaustive(database_path)
maps = pycolmap.incremental_mapping(database_path, image_dir, output_path)
maps[0].write(output_path)
# dense reconstruction
pycolmap.undistort_images(mvs_path, output_path, image_dir)
pycolmap.patch_match_stereo(mvs_path)  # requires compilation with CUDA
pycolmap.stereo_fusion(mvs_path / "dense.ply", mvs_path)

PyCOLMAP can leverage the GPU for feature extraction, matching, and multi-view stereo if COLMAP was compiled with CUDA support. Similarly, PyCOLMAP can run Delaunay Triangulation if COLMAP was compiled with CGAL support. This requires to build the package from source and is not available with the PyPI wheels.

All of the above steps are easily configurable with python dicts which are recursively merged into their respective defaults, for example:

pycolmap.extract_features(database_path, image_dir, sift_options={"max_num_features": 512})
# equivalent to
ops = pycolmap.SiftExtractionOptions()
ops.max_num_features = 512
pycolmap.extract_features(database_path, image_dir, sift_options=ops)

To list available options and their default parameters:

help(pycolmap.SiftExtractionOptions)

For another example of usage, see example.py or hloc/reconstruction.py.

Reconstruction object

We can load and manipulate an existing COLMAP 3D reconstruction:

import pycolmap
reconstruction = pycolmap.Reconstruction("path/to/reconstruction/dir")
print(reconstruction.summary())

for image_id, image in reconstruction.images.items():
    print(image_id, image)

for point3D_id, point3D in reconstruction.points3D.items():
    print(point3D_id, point3D)

for camera_id, camera in reconstruction.cameras.items():
    print(camera_id, camera)

reconstruction.write("path/to/reconstruction/dir/")

The object API mirrors the COLMAP C++ library. The bindings support many other operations, for example:

  • projecting a 3D point into an image with arbitrary camera model:
uv = camera.img_from_cam(image.cam_from_world * point3D.xyz)
  • aligning two 3D reconstructions by their camera poses:
rec2_from_rec1 = pycolmap.align_reconstructions_via_reprojections(reconstruction1, reconstrution2)
reconstruction1.transform(rec2_from_rec1)
print(rec2_from_rec1.scale, rec2_from_rec1.rotation, rec2_from_rec1.translation)
  • exporting reconstructions to text, PLY, or other formats:
reconstruction.write_text("path/to/new/reconstruction/dir/")  # text format
reconstruction.export_PLY("rec.ply")  # PLY format

Estimators

We provide robust RANSAC-based estimators for absolute camera pose (single-camera and multi-camera-rig), essential matrix, fundamental matrix, homography, and two-view relative pose for calibrated cameras.

All RANSAC and estimation parameters are exposed as objects that behave similarly as Python dataclasses. The RANSAC options are described in colmap/optim/ransac.h and their default values are:

ransac_options = pycolmap.RANSACOptions(
    max_error=4.0,  # for example the reprojection error in pixels
    min_inlier_ratio=0.01,
    confidence=0.9999,
    min_num_trials=1000,
    max_num_trials=100000,
)

Absolute pose estimation

For instance, to estimate the absolute pose of a query camera given 2D-3D correspondences:

# Parameters:
# - points2D: Nx2 array; pixel coordinates
# - points3D: Nx3 array; world coordinates
# - camera: pycolmap.Camera
# Optional parameters:
# - estimation_options: dict or pycolmap.AbsolutePoseEstimationOptions
# - refinement_options: dict or pycolmap.AbsolutePoseRefinementOptions
answer = pycolmap.absolute_pose_estimation(points2D, points3D, camera)
# Returns: dictionary of estimation outputs or None if failure

2D and 3D points are passed as Numpy arrays or lists. The options are defined in estimators/absolute_pose.cc and can be passed as regular (nested) Python dictionaries:

pycolmap.absolute_pose_estimation(
    points2D, points3D, camera,
    estimation_options=dict(ransac=dict(max_error=12.0)),
    refinement_options=dict(refine_focal_length=True),
)

Absolute Pose Refinement

# Parameters:
# - cam_from_world: pycolmap.Rigid3d, initial pose
# - points2D: Nx2 array; pixel coordinates
# - points3D: Nx3 array; world coordinates
# - inlier_mask: array of N bool; inlier_mask[i] is true if correpondence i is an inlier
# - camera: pycolmap.Camera
# Optional parameters:
# - refinement_options: dict or pycolmap.AbsolutePoseRefinementOptions
answer = pycolmap.pose_refinement(cam_from_world, points2D, points3D, inlier_mask, camera)
# Returns: dictionary of refinement outputs or None if failure

Essential matrix estimation

# Parameters:
# - points1: Nx2 array; 2D pixel coordinates in image 1
# - points2: Nx2 array; 2D pixel coordinates in image 2
# - camera1: pycolmap.Camera of image 1
# - camera2: pycolmap.Camera of image 2
# Optional parameters:
# - options: dict or pycolmap.RANSACOptions (default inlier threshold is 4px)
answer = pycolmap.essential_matrix_estimation(points1, points2, camera1, camera2)
# Returns: dictionary of estimation outputs or None if failure

Fundamental matrix estimation

answer = pycolmap.fundamental_matrix_estimation(
    points1,
    points2,
    [options],       # optional dict or pycolmap.RANSACOptions
)

Homography estimation

answer = pycolmap.homography_matrix_estimation(
    points1,
    points2,
    [options],       # optional dict or pycolmap.RANSACOptions
)

Two-view geometry estimation

COLMAP can also estimate a relative pose between two calibrated cameras by estimating both E and H and accounting for the degeneracies of each model.

# Parameters:
# - camera1: pycolmap.Camera of image 1
# - points1: Nx2 array; 2D pixel coordinates in image 1
# - camera2: pycolmap.Camera of image 2
# - points2: Nx2 array; 2D pixel coordinates in image 2
# Optional parameters:
# - matches: Nx2 integer array; correspondences across images
# - options: dict or pycolmap.TwoViewGeometryOptions
answer = pycolmap.estimate_calibrated_two_view_geometry(camera1, points1, camera2, points2)
# Returns: pycolmap.TwoViewGeometry

The TwoViewGeometryOptions control how each model is selected. The output structure contains the geometric model, inlier matches, the relative pose (if options.compute_relative_pose=True), and the type of camera configuration, which is an instance of the enum pycolmap.TwoViewGeometryConfiguration.

Camera argument

Some estimators expect a COLMAP camera object, which can be created as follows:

camera = pycolmap.Camera(
    model=camera_model_name_or_id,
    width=width,
    height=height,
    params=params,
)

The different camera models and their extra parameters are defined in colmap/src/colmap/sensor/models.h. For example for a pinhole camera:

camera = pycolmap.Camera(
    model='SIMPLE_PINHOLE',
    width=width,
    height=height,
    params=[focal_length, cx, cy],
)

Alternatively, we can also pass a camera dictionary:

camera_dict = {
    'model': COLMAP_CAMERA_MODEL_NAME_OR_ID,
    'width': IMAGE_WIDTH,
    'height': IMAGE_HEIGHT,
    'params': EXTRA_CAMERA_PARAMETERS_LIST
}

SIFT feature extraction

import numpy as np
import pycolmap
from PIL import Image, ImageOps

# Input should be grayscale image with range [0, 1].
img = Image.open('image.jpg').convert('RGB')
img = ImageOps.grayscale(img)
img = np.array(img).astype(np.float) / 255.

# Optional parameters:
# - options: dict or pycolmap.SiftExtractionOptions
# - device: default pycolmap.Device.auto uses the GPU if available
sift = pycolmap.Sift()

# Parameters:
# - image: HxW float array
keypoints, descriptors = sift.extract(img)
# Returns:
# - keypoints: Nx4 array; format: x (j), y (i), scale, orientation
# - descriptors: Nx128 array; L2-normalized descriptors

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

pycolmap-3.11.1-cp312-cp312-win_amd64.whl (13.8 MB view details)

Uploaded CPython 3.12 Windows x86-64

pycolmap-3.11.1-cp312-cp312-manylinux_2_28_x86_64.whl (12.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

pycolmap-3.11.1-cp312-cp312-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pycolmap-3.11.1-cp312-cp312-macosx_10_15_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

pycolmap-3.11.1-cp311-cp311-win_amd64.whl (13.8 MB view details)

Uploaded CPython 3.11 Windows x86-64

pycolmap-3.11.1-cp311-cp311-manylinux_2_28_x86_64.whl (12.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

pycolmap-3.11.1-cp311-cp311-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pycolmap-3.11.1-cp311-cp311-macosx_10_15_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

pycolmap-3.11.1-cp310-cp310-win_amd64.whl (13.8 MB view details)

Uploaded CPython 3.10 Windows x86-64

pycolmap-3.11.1-cp310-cp310-manylinux_2_28_x86_64.whl (12.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

pycolmap-3.11.1-cp310-cp310-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pycolmap-3.11.1-cp310-cp310-macosx_10_15_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

pycolmap-3.11.1-cp39-cp39-win_amd64.whl (13.9 MB view details)

Uploaded CPython 3.9 Windows x86-64

pycolmap-3.11.1-cp39-cp39-manylinux_2_28_x86_64.whl (12.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

pycolmap-3.11.1-cp39-cp39-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pycolmap-3.11.1-cp39-cp39-macosx_10_15_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

pycolmap-3.11.1-cp38-cp38-win_amd64.whl (13.8 MB view details)

Uploaded CPython 3.8 Windows x86-64

pycolmap-3.11.1-cp38-cp38-manylinux_2_28_x86_64.whl (12.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

pycolmap-3.11.1-cp38-cp38-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

pycolmap-3.11.1-cp38-cp38-macosx_10_15_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

Details for the file pycolmap-3.11.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e023af9e4fb54c5e2dec23ff7410eedfa79d53f5f8eeac31f435cf560a9e4c94
MD5 aa9e1a91bf9dbecb989198e95f093e5e
BLAKE2b-256 9cd4fe80e9a4d299870af4f3de81857fac74ae5dc8d7773d658d82ecc17e529e

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 14f04f48d13358e9418d71b3a806f1aa39ab0b2a35904907f74142e4964b098b
MD5 2a35dc5a023625ed6a8aa6cc738d89b8
BLAKE2b-256 fc45783e293e974cfc56816dd87946c7d5ea410c8fdf7e6d04ef4be947e2a2c8

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d3541c671b7e61f5e381ed6a08de522f4f26ada957cecff1f8e7f964f03d3d7
MD5 358941d9639c292dc0b8e3644ca70d71
BLAKE2b-256 bc76e21bad4b7dc2ef464b5145328d7a67d2371c95ea46678ee48043e05a92d2

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 994dc06fb94d733897cf696df25f1217f3491f34b3c26354ceee5a5e60f7a22b
MD5 48fa506555f95b64a8f2e29bcc3d1349
BLAKE2b-256 e730c5c3476a859bd1c22669a6440d1ef8f10f3f16966d265c36878f0141140a

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f41e1c057b5acfd4363aac0c85960fd880b612c93b96569bdc188b743e31ec0d
MD5 fad50b29038fb5ae9a6f54fb77c56fe7
BLAKE2b-256 ead20fdb358e1fa251b14d39564a40fdb4c57c5c97496fed45d270a56d5dd2cd

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9bb98585e540a403df718b26ffdf475eba74891d16bf59ba94eef0f3acb827a5
MD5 786a1866288355fbe4054b2256c18a8d
BLAKE2b-256 e50b8787d4a47127fdd0486f121042fab51591137d1217c05c68ca9431224b5d

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c8f9679a78fa68e3b718f5efc87d520012330c32b1c0c1321766addda7903e5
MD5 99b0607548ff1cbf84df06fa4fcfd80b
BLAKE2b-256 af0aaf45bd2c04fe80b29251c2f5a73c432487d310e3cf7906071041baf1e05f

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1949ca7eaa0a74ff76d3758d10496a0147d98bb89c6c7aad2514f1c70d88b852
MD5 66f912f915a0246c5fdbb4dd443b2965
BLAKE2b-256 f7427ddb49da876c1d873ea6a27a01d1518877aae7cab9926d40e4e1f5a11e1f

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b3bb1831287246b0825a17f9ee19e90d18fbfe096eada7b89bdee3a1d8c5e040
MD5 4a5126226ed458c6fa198ddf5cfcb9a1
BLAKE2b-256 4974573638ce614555a8ea24b8f791e37c03259411419308d562f7ef05903d40

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 413b95d933b8ed10ece2011cbd80fe32704464b5ba38cfbc978dec68757dfaec
MD5 fd15e32ba106f6f9077696c67cbe3ad9
BLAKE2b-256 4eeb1a1ce6fe807d2ad93d459f4f118e46508cc937c618fa6a7806c30a2b9769

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 92d12806ed7252e2c8f9584d2751e3afacbd21be5150d8f24c52b067c67695ab
MD5 f52fce6bc6cb8180e7d0cbf0cbc39319
BLAKE2b-256 de915349422143dcf6d640c7ec46c2fbbeb8b72237f01ba8a76ced8a719df806

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 52810e9d63c3f2d5e0e0ebac97b453c14ca06f42072ede26fe9bc5207e5f32ea
MD5 103f436ab190794942e42ad5239e6bd7
BLAKE2b-256 5413f97318a98c68ee18d07c1769caa6049a67a1ec42ebb55fc36d0853a61100

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pycolmap-3.11.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 13.9 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pycolmap-3.11.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 26dcd876aceca8dffa8877c4beefda68b1ce37369621b27c5ae6fed8409cb41d
MD5 aaaf9b01b38060632bef8365708b6190
BLAKE2b-256 3417aa5093bc6078d063f9594dba3c55e2e9701e4b7d3e71cad2955c967c94a0

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2c6d3671f84eebd005ae5b77d39a8fad5bf49d85caea49ef81f87325316437d1
MD5 90249b2890e604f5e84a64785f285766
BLAKE2b-256 c16cf444b3db3a68046c0027852d2d98bd0822aff898504903507c7e9fd4f629

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7e107117837ccd0a4b6a22adc5a26849afed26b0d2ddde354e402614e5cad51
MD5 4960d605ccccfe942d215f884883b269
BLAKE2b-256 04c458066dc5f0b485566ddad36b70c585c3d5aac12ef0268fa02639626b1592

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0564490d3511ccadd3dc0e7e640f1109fda1e59b883041ce744a08f1393abb52
MD5 56e3027b415a71fc820faa40a64eaee2
BLAKE2b-256 eca08661d59d121f74d05f27ed7ac0d7fea31ed0b8f6cd698df1e92197dba0b0

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pycolmap-3.11.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 13.8 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pycolmap-3.11.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d9f94f5d4134a3b29d38e85e07aa88ae502567fd549bc000312a5d4f3932cb9f
MD5 649b451b65c579476cb5f08d0648cc38
BLAKE2b-256 9caf4f157e1df3528b93947fc837e8858b468fec79fb88f448e9ee3dc1a536af

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9ee22f77230fb92519327a5bfb48c9f9624840a5103007a0fc62b2b9940221b5
MD5 62e62a5c4a2ae5ca54d8e75a107589da
BLAKE2b-256 6bdc73d8c6ebccd1883c08be7851d230faf5816121e587556110ad67c3a3a1d5

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa51d8adbd52b310ec46f71220443acf5d54d1ec5f809fba741774a7532a78e8
MD5 af242e3e241e17141ec93a80c1658f48
BLAKE2b-256 d05fd984dcf3ab8100a584976a1bf0c3cfee2d360923cbd2438d1eca94e0e011

See more details on using hashes here.

File details

Details for the file pycolmap-3.11.1-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pycolmap-3.11.1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f7ab7704f0692347027e17cb218bf1e56933a670561a988fe2d3608a7b836d38
MD5 20ef8a58ff9abb0825b5ad4966201c1c
BLAKE2b-256 55e35db5c1e1084186d286c76792cb0d30fc0b1bf1a3ca964287e7edb35ed058

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 Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page