Skip to main content

Python bindings for FCPW

Project description

FCPW: Fastest Closest Points in the West

FCPW is an acceleration library for performing fast geometric queries, such as closest points and ray intersections, on 3D triangle meshes and 2D line segment meshes. It is available in C++ and Python, and offers GPU acceleration via the Slang shading language and CPU vectorization via the Enoki library.

C++ API

The easiest and most direct way to use FCPW is through the Scene class which provides methods to load geometry, build and refit the acceleration structure and perform geometric queries. Here is an example of performing a closest point query on a 3D triangle mesh:

#include <fcpw/fcpw.h>
using namespace fcpw;

// initialize a 3d scene
Scene<3> scene;

// load positions and indices of a single triangle mesh
scene.setObjectCount(1);
scene.setObjectVertices(positions, 0);
scene.setObjectTriangles(indices, 0);

// build acceleration structure
AggregateType aggregateType = AggregateType::Bvh_SurfaceArea;
bool buildVectorizedBvh = true;
scene.build(aggregateType, buildVectorizedBvh);

// perform a closest point query
Interaction<3> interaction;
bool found = scene.findClosestPoint(queryPoint, interaction);

// access distance and closest point via interaction.d and interaction.p (resp.)

The Scene class is templated on dimension, which enables it to work with geometric data in any dimension as long as primitives are defined for the dimension of interest. In addition to triangles in 3D, FCPW also provides support for line segments in 2D. The Interaction class stores information relevant to the query, such as the distance to and closest point on the primitive.

If your scene consists of multiple objects with the same type of primitives (e.g. triangles), it is better to "flatten" those objects into a single object (with a list of positions and indices). FCPW then builds a single acceleration structure over all primitives in the scene. If multiple objects are loaded, FCPW instead builds a hierarchy of acceleration structures, with a structure for each object in the scene.

Refer to demo.cpp for a complete demo, and fcpw.h for the full API, which includes the list of supported geometric queries, heuristrics for constructing the accerlation structure, as well as support for refitting, instancing and CSG operations. Details regarding GPU support and installation are provided below.

Python API

FCPW's C++ and Python APIs follow a similar structure. However, since Python does not support templates, Python classes and functions use explicit _2D or _3D dimension tags:

import fcpw

# initialize a 3d scene
scene = fcpw.scene_3D()

# load positions and indices of a single triangle mesh
scene.set_object_count(1)
scene.set_object_vertices(positions, 0)
scene.set_object_triangles(indices, 0)

# build acceleration structure
aggregate_type = fcpw.aggregate_type.bvh_surface_area
build_vectorized_bvh = True
scene.build(aggregate_type, build_vectorized_bvh)

# initialize bounding spheres
bounding_spheres = fcpw.bounding_sphere_3D_list()
for q in query_points:
	bounding_spheres.append(fcpw.bounding_sphere_3D(q, np.inf))

# perform several closest point queries
interactions = fcpw.interaction_3D_list()
scene.find_closest_points(bounding_spheres, interactions)

# extract closest points
closest_points = [i.p for i in interactions]

Refer to demo.py for a complete demo. The full API can be viewed in the Python console using help(fcpw).

GPU Support

GPU support for a large collection of query points is provided through the GPUScene class in C++, and gpu_scene_*D classes in Python. FCPW currently requires the acceleration structure to be built on the CPU and then transferred to the GPU. For instance, in C++ we have:

#include <fcpw/fcpw_gpu.h>
using namespace fcpw;

// initialize a 3d scene and load geometry (same as above)
Scene<3> scene;
...

// build acceleration structure on CPU
bool buildVectorizedCPUBvh = false; // NOTE: must build non-vectorized structure
scene.build(AggregateType::Bvh_SurfaceArea, buildVectorizedCPUBvh);

// transfer scene to GPU
GPUScene<3> gpuScene("PATH_TO_FCPW_DIRECTORY");
gpuScene.transferToGPU(scene);

// initialize bounding spheres 
std::vector<GPUBoundingSphere> boundingSpheres;
for (auto q: queryPoints) {
	float3 queryPoint = float3{q[0], q[1], q[2]};
	boundingSpheres.emplace_back(GPUBoundingSphere(queryPoint, INFINITY));
}

// perform several closest point queries on GPU
std::vector<GPUInteraction> interactions;
gpuScene.findClosestPoints(boundingSpheres, interactions);

and in Python:

import fcpw

# initialize a 3d scene and load geometry (same as above)
scene = fcpw.scene_3D()
...

# build acceleration structure on CPU
build_vectorized_cpu_bvh = False # NOTE: must build non-vectorized structure
scene.build(fcpw.aggregate_type.bvh_surface_area, build_vectorized_cpu_bvh)

# transfer scene to GPU
gpu_scene = fcpw.gpu_scene_3D("PATH_TO_FCPW_DIRECTORY")
gpu_scene.transfer_to_gpu(scene)

# initialize bounding spheres
bounding_spheres = fcpw.gpu_bounding_sphere_list()
for q in query_points:
	gpu_query_point = fcpw.float_3D(q[0], q[1], q[2])
	bounding_spheres.append(fcpw.gpu_bounding_sphere(gpu_query_point, np.inf))

# perform several closest point queries on GPU
interactions = fcpw.gpu_interaction_list()
gpu_scene.find_closest_points(bounding_spheres, interactions)

Refer to demo.cpp and demo.py for complete demos. GPU support is available on Linux and Windows (Slang currently only has unofficial support for macOS). Installation details for Slang are provided below.

For those developing directly on the GPU, the acceleration structure can also be accessed through bvh.slang. Slang offers CUDA, HLSL, Vulkan, OpenGL and Metal (experimental) as compilation targets. Refer to its user guide for further details on compiling to these targets.

C++ Installation

FCPW is developed as a header-only library. It can be downloaded and compiled using CMake as follows:

git clone https://github.com/rohan-sawhney/fcpw.git
cd fcpw && git submodule update --init --recursive
[...clone additional dependencies...] // instructions below
mkdir build && cd build
cmake [-DFCPW_BUILD_DEMO=ON] [-DFCPW_USE_ENOKI=OFF] [-DFCPW_ENABLE_GPU_SUPPORT=ON] ..
make -j8 // for Linux and Mac; cmake generates a visual studio project for Windows.

The FCPW_BUILD_DEMO option requires polyscope as a dependency in the deps repo. Clone polyscope using:

git clone --recurse-submodules https://github.com/nmwsharp/polyscope.git deps/polyscope

The C++ demo can be run from the build directory with the command:

./demos/demo [--useGpu]

For CPU vectorization, Enoki is included by default as a submodule. It can be disabled with the command -DFCPW_USE_ENOKI=OFF, in which case FCPW falls back to Eigen for non-vectorized CPU queries.

To include FCPW in your project without GPU support, add the following lines to your CMakeLists.txt file:

add_subdirectory(fcpw)
target_link_libraries(YOUR_TARGET fcpw)
target_include_directories(YOUR_TARGET PRIVATE ${FCPW_EIGEN_INCLUDES})
target_include_directories(YOUR_TARGET PRIVATE ${FCPW_ENOKI_INCLUDES})

If your prefer to directly include FCPW header files without CMake, then you'll have to define a few extra variables before including the library:

#define FCPW_USE_ENOKI
#define FCPW_SIMD_WIDTH 4 // change based on the SIMD width supported by your machine
#include <fcpw/fcpw.h>

Finally, for GPU support the FCPW_ENABLE_GPU_SUPPORT option assumes Slang binaries are available under deps/slang. Copy-paste the contents of the latest release under this directory for the relevant platform. Additionally include the following lines in your CMakeLists.txt file:

target_link_libraries(YOUR_TARGET ${FCPW_SLANG_LIBRARY})
target_link_libraries(YOUR_TARGET ${FCPW_SLANG_GLSLANG_LIBRARY})
target_link_libraries(YOUR_TARGET ${FCPW_GFX_LIBRARY})
target_include_directories(YOUR_TARGET PRIVATE ${FCPW_SLANG_INCLUDES})

On Windows, you may need to download necessary DLL files from the official DirectX Shader Compiler repository on GitHub here. Copy dxil.dll and dxcompiler.dll to C:\Windows\System32\ for 64-bit systems or to C:\Windows\SysWOW64\ for 32-bit systems. This makes the DLLs available to all applications system-wide.

Python Installation

Pre-built Python wheels are available for Linux, Windows and macOS on PyPI but without GPU support:

pip install fcpw

These wheels can also be downloaded and installed from Releases:

pip install fcpw-*.whl

Alternatively, to build Python bindings on your local machine with GPU support, first clone nanobind using:

git clone --recurse-submodules https://github.com/wjakob/nanobind.git deps/nanobind

To build and install the bindings, run:

pip install . [--config-settings=cmake.define.FCPW_ENABLE_GPU_SUPPORT=ON]

For GPU support, you will need to follow the instructions in the previous section on fetching and placing Slang binaries under deps/slang. Finally, launch the Python demo from the demos folder using:

python -m pip install polyscope
python demo.py [--use_gpu]

Citation

@software{FCPW,
author = {Sawhney, Rohan},
title = {FCPW: Fastest Closest Points in the West},
version = {1.0},
year = {2021}
}

Author

Rohan Sawhney

License

Released under the MIT License.

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

fcpw-1.0.4-pp310-pypy310_pp73-win_amd64.whl (312.6 kB view details)

Uploaded PyPy Windows x86-64

fcpw-1.0.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (450.7 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

fcpw-1.0.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl (299.7 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

fcpw-1.0.4-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (335.3 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

fcpw-1.0.4-pp39-pypy39_pp73-win_amd64.whl (312.6 kB view details)

Uploaded PyPy Windows x86-64

fcpw-1.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (450.7 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

fcpw-1.0.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl (299.7 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

fcpw-1.0.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (335.3 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

fcpw-1.0.4-pp38-pypy38_pp73-win_amd64.whl (312.3 kB view details)

Uploaded PyPy Windows x86-64

fcpw-1.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (450.7 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

fcpw-1.0.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl (299.6 kB view details)

Uploaded PyPy macOS 11.0+ ARM64

fcpw-1.0.4-pp38-pypy38_pp73-macosx_10_15_x86_64.whl (335.0 kB view details)

Uploaded PyPy macOS 10.15+ x86-64

fcpw-1.0.4-cp312-abi3-win_amd64.whl (316.9 kB view details)

Uploaded CPython 3.12+ Windows x86-64

fcpw-1.0.4-cp312-abi3-musllinux_1_2_x86_64.whl (940.1 kB view details)

Uploaded CPython 3.12+ musllinux: musl 1.2+ x86-64

fcpw-1.0.4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (454.1 kB view details)

Uploaded CPython 3.12+ manylinux: glibc 2.17+ x86-64

fcpw-1.0.4-cp312-abi3-macosx_11_0_arm64.whl (297.0 kB view details)

Uploaded CPython 3.12+ macOS 11.0+ ARM64

fcpw-1.0.4-cp312-abi3-macosx_10_15_x86_64.whl (334.5 kB view details)

Uploaded CPython 3.12+ macOS 10.15+ x86-64

fcpw-1.0.4-cp311-cp311-win_amd64.whl (314.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

fcpw-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl (942.8 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

fcpw-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (454.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fcpw-1.0.4-cp311-cp311-macosx_11_0_arm64.whl (303.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fcpw-1.0.4-cp311-cp311-macosx_10_15_x86_64.whl (339.6 kB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

fcpw-1.0.4-cp310-cp310-win_amd64.whl (315.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

fcpw-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl (943.2 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

fcpw-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (454.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fcpw-1.0.4-cp310-cp310-macosx_11_0_arm64.whl (303.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fcpw-1.0.4-cp310-cp310-macosx_10_15_x86_64.whl (339.7 kB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

fcpw-1.0.4-cp39-cp39-win_amd64.whl (315.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

fcpw-1.0.4-cp39-cp39-musllinux_1_2_x86_64.whl (943.6 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

fcpw-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (455.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fcpw-1.0.4-cp39-cp39-macosx_11_0_arm64.whl (303.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

fcpw-1.0.4-cp39-cp39-macosx_10_15_x86_64.whl (340.0 kB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

fcpw-1.0.4-cp38-cp38-win_amd64.whl (315.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

fcpw-1.0.4-cp38-cp38-musllinux_1_2_x86_64.whl (943.2 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

fcpw-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (454.6 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

fcpw-1.0.4-cp38-cp38-macosx_11_0_arm64.whl (302.8 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

fcpw-1.0.4-cp38-cp38-macosx_10_15_x86_64.whl (339.4 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

File details

Details for the file fcpw-1.0.4-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 9d6719539861162c74ee00d8cc889ef0e2ca266cac5bba805306fce6936a983e
MD5 cc5ba9938770fac451a11c4b62739d5e
BLAKE2b-256 3bca492d2cc7f961b94a860f677fe346d66fe5f8a27e4843289777b386da3809

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2b563b8db43a83071488f8da8281564aae620f7de96fa087c3503d3daa2e4f7
MD5 86354a99e970715a24d903007711b7fa
BLAKE2b-256 58f58c95b8ddb817f8065de8c2245473569bfdbd2a5ff82c8fbbec1e5d040e2d

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e826cca188a2e6d181e86ef0c491c0b920f0e69d84ebc1fef828d7abd59ccdc9
MD5 906dd7994a5092b2fcdf0203fc3b1c1b
BLAKE2b-256 7d970e1a931f0dd4b355ddc3bc7645b467c5a88a49d060fc491b0e81c9bb835c

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a0f62eb9230e6197e0560621ea4b4f729e8c2d7ed4272f00dddbe931398c40c8
MD5 05798b7d900a36a9b3ecfc845b88b6e6
BLAKE2b-256 c75914fcdbc99051ec4356afcecbb00c3bd0ae004bb11d8dbc195db313ba840b

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 74750f52f77416493b04336a848533e51d31a33f41fce992f5f8e1a6b0f77abd
MD5 94517cfdd86858c6fa7434e968e0ea4c
BLAKE2b-256 ace7dd5d9a578fb1633bede21f382f4874345a42abd49d061a2c905a670aae8a

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 489e782676f88611c095b0510078e4d990c605813e07d317f590794654cfb1e9
MD5 ab1dc03c98c0f905d4132e2c303c3689
BLAKE2b-256 9aa3e0ff45146771c870903dc947547350a376f0972f345c0255db0661058937

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14fd46a3a5778d17bf7c35f5742d7dd7c806e3358b932fc0ac79b813b1ebe45a
MD5 d23c0f1edf14fab62c0c0c168a8ef147
BLAKE2b-256 02490b693d35c532493c993d67d80853a473d59aa4292b4d85e51b38ab2858b8

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ed317aeb3e74e8e11e7c3ad04c0a8f85573917e0a80fa56a1320c68c46834622
MD5 c4fa09bce0648fba39a2eb028fdc8c3c
BLAKE2b-256 c23281f7ecb2cf51fc40f4ed598798c6eda3c5d25e951a7f614f98eb21a7bef2

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 9318d2aac0dc1bc07158e64a66ad372d66cd0036b212f1910ee986d0724112ed
MD5 10523641a8d68a7094db24805e813b65
BLAKE2b-256 3dc603447c5027474db07a508e4d4e9af4b62c7d9d26db9e3d5108f5187fcd5f

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 421d04d5bbcfec91dc13bf65c04bd6670a992f1b29ab963f546623200819fcb0
MD5 f0b025b7a7a5a463585027e9b3ed75e6
BLAKE2b-256 8b4647a80aff0382833e2a8ef7eb0c986e2e277491f4243354fb81793639c408

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c66e53917a49643a342a59e76e51b5b4d6bac2f941145aa91c8d932b800685ee
MD5 a58bdc4cd713e88d092d778b2869f01a
BLAKE2b-256 4b3cdf760c93d8c21e8a53dd10382acd5bcef8646b18be19a550508be8aad4a8

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-pp38-pypy38_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 34879c1ea4cb33aae47354a7b576b67204087ea02eebff09e1dd2f1b61b2c8ab
MD5 491a718e79471ea93a5de0987d5e47c8
BLAKE2b-256 199c91832820c04b2bf3a0995f258a721a04ddf23d3b8a6d7d8060926d9a7ae0

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: fcpw-1.0.4-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 316.9 kB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fcpw-1.0.4-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 200fc7ed070b1a1fe961f1543199c124919490de5f9abd8765ea837efe2574f4
MD5 2dab148c550ec6c82a80f7eb77873d72
BLAKE2b-256 4d631f00a28eb5e46d681693919fdf98ec81cb770c3292bb412fa68d99391024

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9e8afd9f42e70e7bd69a98be0d1ef5c65d4874d7a3c2b5e4335e2b5cbf1d916a
MD5 a18bfab4cab3d7adeaf8d97dd352258a
BLAKE2b-256 c644e7b9be667480a7c6c77962486a4186a8686a8e81d85ceafa616db880b430

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfc9676af8949682e80810048290491f4b669a686ad131fbddc25491fd0cc1a5
MD5 05c987859256241ea1a2a79eaceffcfa
BLAKE2b-256 cd7f6aa5de2ebb0473946321a54f10e03edba0eb73122d2d3e68dea4db783aaa

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1339e263621ad97e4aeba9a1a899f2007dbe1d0b0dd03cb9bc8d28d712eff25
MD5 bbc921709677eec6a1c12b79fe4050c6
BLAKE2b-256 cde7529be75b58529b5c9187316d23560b896b589b364e002ebc995e5235cf6a

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp312-abi3-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp312-abi3-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 36c65ace9166c8394fa0e3cd29a36049e6a650f9d96bc8d3363ec462db393894
MD5 7279dc37cc78a1f4a6e9b32d2f4085d0
BLAKE2b-256 e900fcf0287447ad5107ee2a731386cfa187a3343e5c40298e8f29218a37f730

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: fcpw-1.0.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 314.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fcpw-1.0.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 233fd00f151c5f5e38c2880082160b72b97815eeeb0866979acd54556d780cdd
MD5 a4bb30786bf0ced41f7f5975ea69b984
BLAKE2b-256 24eef6f21f7b46024171e16257ea9786e8a15a4d5e8980bddb89a3a58197484a

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e8ab3efa91eea6ff10091fe9ee0124f3a413ef54041482c47ac3936666855c12
MD5 b23a4ab16b261f2af68fbced0ef95bb4
BLAKE2b-256 15ea10e0b2d437b8db9b46fcf4d10f9f3bc8b9d3dbe53d7b5a1ee973fe6b6d45

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cbe65b1ed97229b96d5e8200cf490be6d76898922826e1852b92ba12ba98a577
MD5 f1b0248a2b97c3b1de393b442019295f
BLAKE2b-256 0d826c12da903cd9964bed412833a19af1964337ac09218c0b6807e048ef1519

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a43ce5e635ce5d509a0f0f1b8f25908be10da0c0dc090d1c8ac3056d34acae9
MD5 6acc533e0c7c9a0f1771409b2f020ea5
BLAKE2b-256 69ad450c5e6280c284587413a0d1d4ca64ae647b36d76c59e9842a5d872e7210

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 2e827e6745a2a2d0049aeba1d33c89fb8790f23fb27e48e5868e107c0f212ee6
MD5 4f12c6d41ab8ddadc28c73175ecf5784
BLAKE2b-256 ab9e83aabb9de35af6a350ad4e96a3082c2c1144f44de07e296ee6d83c04074a

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: fcpw-1.0.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 315.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fcpw-1.0.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cac84154697bda1bc835ef801736376ad82ebbdaaba823333f965aa0c1b6a3fc
MD5 31850d4eedf4f8363cbf0e195f453c1b
BLAKE2b-256 fa08491c1a6e7b2ef29f5d7bd01cb7a05215bee8002772e3574fb3fe0b4490bc

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f196f00a06161cc7a6af5815c35ab1c6686e209389274c7ace8d7581ba86ed7b
MD5 2cbf454c3b3683adb3595c031a96ffd7
BLAKE2b-256 eae71a852e456ddfae5f8d3c32a11132b096b004dad7d95d9f8df235fb66d50e

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e2050841a7fbd5b0486cb7adbf5394e42f0d9136689915f3fd8563874968b9db
MD5 84a5da3cb45e083770346eb299a85179
BLAKE2b-256 d9a27e72bb3458eff380d226293b788c242eff3dd9de5ba459f8dda4cada25e9

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb0b7f2987da2794b31ac08652d602ee06bed569a74c1ff900c08391489c07ec
MD5 5495fe950e7ab45340ec2870a24ab2c4
BLAKE2b-256 a782bd886142421c170fea1c33e95e9a548b39b36ccc50b627476146e7ad0128

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f315a3e9c80eae6ae8c5e8528755b1eaaa6a2004fc56a0c430f5d373b9bb3cac
MD5 45b89e5cae597b8835ff2d114c18aad5
BLAKE2b-256 291979903d350d189eb592de0016a45898d2fdc3ed02538fa224c2cf321f9962

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: fcpw-1.0.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 315.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fcpw-1.0.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f64dd51772f2818e8db0445ba8ae1e1839b6b91e6bc2b370ba57181bac831486
MD5 3dba567436addc17ed40a03e7dcf07dc
BLAKE2b-256 450bae159b7a968d3e2cf4a8f27e187551524206a62024e4e9649d18c39f7cde

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c2de7ada638d5275dfe72d0f0ed17f637d3e26982d30d11c6edbb3b13de89a2c
MD5 966485bd4303bf5320143441d78b0c56
BLAKE2b-256 45f2d3941f4e741078f12c181c5be197c907a91c0ed99a34cfa586ccf966cd7c

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1fb5eec363eee82fa51dd52cd2de14fffef1bb2d5a097318889b06f42976d495
MD5 0ffb01d4d9ccfea17b08d98c2d9ba630
BLAKE2b-256 8b76ccf3f49eed39ecd8a50061c9ea2ed9441c3e127b7eddd9a96a581412cf32

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f70f353e6d784924fd894f66bfa637524b863fe477801abcc898cd8261084b31
MD5 044bb62de1ca90a407d5090a97a313e7
BLAKE2b-256 bb401ef63bf1cc8afcea679690917f81ae65cbe02973f1fa3261a40a6a21d8f5

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 cb54eb94551fa2673326aaee827c6c85a10aa603b97d8675b6af763430f65db9
MD5 054281c74499c0ac006596f4e46a9632
BLAKE2b-256 62257091dc3b5b970f57cad77eee6c0dee10b91e1d3f4f044c28a3c6fc20c820

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: fcpw-1.0.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 315.2 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for fcpw-1.0.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d5d23223070595a6ac6bddf0fa8cf163865a6d191124fcc0fbd4818e1d3c2056
MD5 89f6aa49c5fb640ebaa4527b79e5c192
BLAKE2b-256 fcf03a7c16233fa8a722c91b841f58dbb966fa89d94c7f61db75b3e3e18da5c3

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ff5e76d03a7019dcd4d8e156faa34cd1afe1570a353cbb0df245a66fa088ff9e
MD5 2bfebd13ce4aad8dff8f19162f3a46a8
BLAKE2b-256 b930a67d4c0706dab7d16f8558b506cc6d19bcecb4e83b3d05dfcfea27991896

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fdbf73a23ea9ff0370db7e4809233e7ec1a0f829f2a489344be5f523f4a39731
MD5 340ec62768522e6f563da2b3286e92fc
BLAKE2b-256 c545ff420423f3c7f298476995ae1e299c3f8f3155ef46bf0b9affccb8f08501

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04535e37a23713579aba0ac5a5e99ce5c8d4ba6f2de39ce9444f28a61f45350d
MD5 d7c3d1cd12d555fbffdd5d3e0b05ad6f
BLAKE2b-256 1d567e4ee6e20e1e1e5c73c0203653a3d3bb72525019ea6c52a2933c0d0d1c7a

See more details on using hashes here.

File details

Details for the file fcpw-1.0.4-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fcpw-1.0.4-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1a0f20da59a25edd4cf1f9490dba8957c61c324ae604e9bd01b113a3db21ee6b
MD5 8df0c78651b3ea1789fe8b034245acbb
BLAKE2b-256 7fe1067e40f7f4618a8acad30418c9de16a7ee6a36c4fa23edb88578ad252aaf

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