A simple STL serializer and deserializer
Project description
OpenSTL
The fastest and most intuitive library to manipulate STL files (stereolithography) for C++ and Python, header-only.
🌟 :fist_raised: Please consider starring and sponsoring the GitHub repo to show your support! :fist_raised: 🌟
Performances benchmark
Discover the staggering performance of OpenSTL in comparison to numpy-stl, meshio and stl-reader, thanks to its powerful C++ backend. See benchmark.py. Benchmark performed on an Intel i5-9600KF CPU @ 3.70GHz.
Performance gains over numpy-stl, meshio and stl-reader
Write: 1.3 to 4+ X faster
Read: 1 to 2.3+ X faster
Rotate: 1 to 12+ X faster
Note: meshio has no straightfoward way of rotating vertices, so it was not benchmarked.
Python Usage
Install
pip install openstl
or pip install -U git+https://github.com/Innoptech/OpenSTL@main
Read and write from a STL file
import openstl
import numpy as np
# Define an array of triangles
# Following the STL standard, each triangle is defined with : normal, v0, v1, v2
quad = np.array([
# normal, vertices 0, vertices 1, vertices 2
[[0.0, 0.0, 1.0], [0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0]], # Triangle 1
[[0.0, 0.0, 1.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 1.0, 0.0]], # Triangle 2
])
# Serialize the triangles to a file
success = openstl.write("quad.stl", quad, openstl.format.binary) # Or openstl.format.ascii (slower but human readable)
if not success:
raise Exception("Error: Failed to write to the specified file.")
# Deserialize triangles from a file
deserialized_quad = openstl.read("quad.stl")
# Print the deserialized triangles
print("Deserialized Triangles:", deserialized_quad)
Rotate, translate and scale a mesh
import openstl
import numpy as np
quad = openstl.read("quad.stl")
# Rotating
rotation_matrix = np.array([
[0,-1, 0],
[1, 0, 0],
[0, 0, 1]
])
rotated_quad = np.matmul(rotation_matrix, quad.reshape(-1,3).T).T.reshape(-1,4,3)
# Translating
translation_vector = np.array([1,1,1])
quad[:,1:4,:] += translation_vector # Avoid translating normals
# Scaling
scale = 1000.0
quad[:,1:4,:] *= scale # Avoid scaling normals
Convert Triangles :arrow_right: Vertices and Faces
import openstl
# Define an array of triangles
triangles = [
# normal, vertices 0, vertices 1, vertices 2
[[0.0, 0.0, 1.0], [0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0]], # Triangle 1
[[0.0, 0.0, 1.0], [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 1.0, 0.0]], # Triangle 2
]
# Convert triangles to vertices and faces
vertices, faces = openstl.convert.verticesandfaces(triangles)
Convert Vertices and Faces :arrow_right: Triangles
import openstl
# Define vertices and faces
vertices = [
[0.0, 0.0, 0.0],
[1.0, 1.0, 1.0],
[2.0, 2.0, 2.0],
[3.0, 3.0, 3.0],
]
faces = [
[0, 1, 2], # Face 1
[1, 3, 2] # Face 2
]
# Convert vertices and faces to triangles
triangles = openstl.convert.triangles(vertices, faces)
C++ Usage
Read STL from file
#include <openstl/core/stl.h>
std::ifstream file(filename, std::ios::binary);
if (!file.is_open()) {
std::cerr << "Error: Unable to open file '" << filename << "'" << std::endl;
}
// Deserialize the triangles in either binary or ASCII format
std::vector<openstl::Triangle> triangles = openstl::deserializeStl(file);
file.close();
Write STL to a file
std::ofstream file(filename, std::ios::binary);
if (!file.is_open()) {
std::cerr << "Error: Unable to open file '" << filename << "'" << std::endl;
}
std::vector<openstl::Triangle> originalTriangles{}; // User triangles
openstl::serialize(originalTriangles, file, openstl::StlFormat::Binary); // Or StlFormat::ASCII
if (file.fail()) {
std::cerr << "Error: Failed to write to file " << filename << std::endl;
} else {
std::cout << "File " << filename << " has been successfully written." << std::endl;
}
file.close();
Serialize STL to a stream
std::stringstream ss;
std::vector<openstl::Triangle> originalTriangles{}; // User triangles
openstl::serialize(originalTriangles, ss, openstl::StlFormat::Binary); // Or StlFormat::ASCII
Convert Triangles :arrow_right: Vertices and Faces
using namespace openstl
std::vector triangles = {
// normal, vertices 0, vertices 1, vertices 2
Triangle{{0.0f, 0.0f, 1.0f}, {1.0f, 1.0f, 1.0f}, {2.0f, 2.0f, 2.0f}, {3.0f, 3.0f, 3.0f}},
Triangle{{0.0f, 0.0f, 1.0f}, {2.0f, 2.0f, 2.0f}, {3.0f, 3.0f, 3.0f}, {4.0f, 4.0f, 4.0f}}
};
const auto& [vertices, faces] = convertToVerticesAndFaces(triangles);
Convert Vertices and Faces :arrow_right: Triangles
using namespace openstl
std::vector vertices = {
Vec3{0.0f, 0.0f, 0.0f}, Vec3{1.0f, 1.0f, 1.0f}, Vec3{2.0f, 2.0f, 2.0f}, Vec3{3.0f, 3.0f, 3.0f}
};
std::vector<Face> faces = {
{0, 1, 2}, {3, 1, 2}
};
const auto& triangles = convertToTriangles(vertices, faces);
Integrate to your codebase
Smart method
Include this repository with CMAKE Fetchcontent and link your executable/library to openstl::core
library.
Choose weither you want to fetch a specific branch or tag using GIT_TAG
. Use the main
branch to keep updated with the latest improvements.
include(FetchContent)
FetchContent_Declare(
openstl
GIT_REPOSITORY https://github.com/Innoptech/OpenSTL.git
GIT_TAG main
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
)
FetchContent_MakeAvailable(openstl)
Naïve method
Simply add stl.h to your codebase.
Test
git clone https://github.com/Innoptech/OpenSTL
mkdir OpenSTL/build && cd OpenSTL/build
cmake -DOPENSTL_BUILD_TESTS=ON .. && cmake --build .
ctest .
Requirements
C++11 or higher.
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
Built Distributions
Hashes for openstl-1.1.6-pp310-pypy310_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6009e62da52007dc0797c4e182fb4e8ea200a9ec344d2f7daf28080b470b2874 |
|
MD5 | d1ed89208913fc3e7375cbe0e205a648 |
|
BLAKE2b-256 | ffa864233e2d1367fab3664bc60733662a63ec7f72f586eea1e982645d623054 |
Hashes for openstl-1.1.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3e687b4fe8911d1ca5daca725fa68a81fbbd9dffc1576ed042062924711d056 |
|
MD5 | e393efb727a9139768defabe4ca1f606 |
|
BLAKE2b-256 | 5263dc01b53bda3320da3f1fe25b0a20f51c057d110e510a7536647ff39ae893 |
Hashes for openstl-1.1.6-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e07b1b0d218394d8206a1f4349a036d5564cc408ade9bed09218f3ee1c68f4df |
|
MD5 | 3daf684cd9bf88040c38654d6999ad0b |
|
BLAKE2b-256 | 179d1a2b1c4c820d32ec9ade7c91d582e7530cfc2bdc584282caeab138bda973 |
Hashes for openstl-1.1.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36ccd69c35cf1fc0722fd7e30513f77bb68491bc55b00703ecb319795f42b2cc |
|
MD5 | 3a68ad68c5b81e9c0e68b59f2f082bdc |
|
BLAKE2b-256 | ad5c0503f5df48334fcd363d6b8271ffe81d9df16d9d8885277b7c28b9fda5e8 |
Hashes for openstl-1.1.6-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75127f003d1207428986901873a6e110bec2634627e9ee29bfb0f6b45ffc01b7 |
|
MD5 | 4edd3d2c3c626cac6f361bca1e2cf8a8 |
|
BLAKE2b-256 | e1587917a2d0db1b19ef40207c78f29233977a9eaffb4ce8f09ca3634cdcf7ee |
Hashes for openstl-1.1.6-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87497470ffd4f15e8471a7d301e239023a049da1ba484bbe204643144a0f8bb3 |
|
MD5 | 24570f301d2646034a28bbf400f6d2cb |
|
BLAKE2b-256 | 062a582521d93a0cd0671f424cbf515c5cdb8835cd418f3718f2389fa330037b |
Hashes for openstl-1.1.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29e4f09cabc76e7ea5debb5aa92ac6b29b9916666ccc36cb5ce7b1555c821bf8 |
|
MD5 | 36c8996fcb7532c142a2566364d5a369 |
|
BLAKE2b-256 | dedac98d86d5fd1c958a1aff27d52e6bf46ce0187072efa5154d6707f7fd8b9d |
Hashes for openstl-1.1.6-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6c412cb72b7e65d40cede8549b285135576df9d4e3d3b98e0d912c5eb928346 |
|
MD5 | 048d4ec6c37bf9ab552cc35086a31a91 |
|
BLAKE2b-256 | 9f1dea874d607357fba2fdc74e7d2d9e171f7aaa37cef4bc86daa40b8373a5d8 |
Hashes for openstl-1.1.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 174a0762bda4e7f1cad4e26b3166d6f38b428abdd03f7e773ab2402eb8674c35 |
|
MD5 | 5f1fe61d495771ee4aae082ae15f241a |
|
BLAKE2b-256 | 2c277e4026698b0a7e20418132dab431cdf1639089e47a472f4e60d7b6734af0 |
Hashes for openstl-1.1.6-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f2c6937cda9183c4d28b5a87242230c79e49df502d79ed77aff7b7c586e06b2 |
|
MD5 | e84e0ad03f4a22e753d2de87a985215b |
|
BLAKE2b-256 | 1fda475fd0c07054e86c85d0e274e32eb3542fc940d40a3262cad84c2953186b |
Hashes for openstl-1.1.6-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39432232708108bee47ef7756a5ed894aac2865a9e79f4c8cefe84d52c9e77a1 |
|
MD5 | a0d0dd71e9e106b2e946f343b292309b |
|
BLAKE2b-256 | 603ce5acdc910173cc6b30ffd6b29cb735705ea4e54ca165532ab6265d4af69f |
Hashes for openstl-1.1.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81606066a7286526605ab8782772253bd48db90c984504765cebc9d42d542763 |
|
MD5 | a6d923dba1d3df26d16957dcae855da5 |
|
BLAKE2b-256 | f44596eabd8f4c66b9c718b04b7d5a69210d58dad1aba5fb21598aed3e0b3bac |
Hashes for openstl-1.1.6-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60f0832c35b4a256e1a43be0befc1a89d4dd61819322adf917104202c6add969 |
|
MD5 | 206d908f33be421ec2fb4f3fcc9d0eaf |
|
BLAKE2b-256 | 99bb79a8f510bde3e14d1afbe922c4beb010f15252115c305d6e07db622c29e6 |
Hashes for openstl-1.1.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c7a76d62b3c2a086098c7fef26d42420ccfa4cfb220bf6fa7635d7ee6c23fd3 |
|
MD5 | 05f1790ecad626c746f9389af0c0953c |
|
BLAKE2b-256 | 548dc649fa552b4f4a04c46d3019e95267f4c3aedf1ef7b3d2224670f51a0e05 |
Hashes for openstl-1.1.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9359b411820a993ac083aec6fff47d3c913353d32249ecebbec2922ef8db5dcc |
|
MD5 | a6f8ee82e71a0f26aea6325d20e262c6 |
|
BLAKE2b-256 | 3db55f37c26d94250601dcf7504984f9254a4a1f488a1dcc2f19e6757f92ea72 |
Hashes for openstl-1.1.6-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49a773dff613aa028ce7c2319a516cd0890bf8d24b87f4f540c00a2c82bf9aba |
|
MD5 | 52b8921b48a04d42658e47a40d230f59 |
|
BLAKE2b-256 | 74bca12f18e2cc9434b263b52819ce07cdd2bc9218100095d856cc002009edde |
Hashes for openstl-1.1.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92abbac8af228d09e1dfb27ff31c97a03f93cdac67c85abc5f77bd0b0dd4ee5c |
|
MD5 | 2589c86cd2692c6b13a7491f3c95dce3 |
|
BLAKE2b-256 | 3b42f49e396a0fb8f6bc14221d1a4b2dff2dabafca8b6775fba907639bdd5417 |
Hashes for openstl-1.1.6-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c391f9c7df16aa6fa4342c52548428d91ac8aeb2dcfa11dbd67f11aea835a28d |
|
MD5 | ac69a5723b16f1c814d6eca9852303cf |
|
BLAKE2b-256 | 00d8eca8e276b538d34399e66a9db35d48800679af78c5ccea055c77485bb375 |
Hashes for openstl-1.1.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9861afc5689664791c37a45e68f250a78b6f7a8f8c189ea5a42bc4c5b1d3e450 |
|
MD5 | 0571629139c1c73e273615072de90acd |
|
BLAKE2b-256 | 4331fe7b4fc5d426c209c91e9d518909daba630e6c42682c96737be500c92584 |
Hashes for openstl-1.1.6-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d46a46a93319395611a4e4d2a9f7a01db1831b4325170d6079329fd414cf5b50 |
|
MD5 | 68cd3de694b570184d8517ead4b7f0ee |
|
BLAKE2b-256 | 055edda34a032593e28fe24500dae8e53e4af4ac43e677a13e03eed80dcb6335 |
Hashes for openstl-1.1.6-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af96cdb57b7a7dbcfd4e8dedb96da58cb4344c87d4580a7a5e9170b360ed2368 |
|
MD5 | fa15d79ffc901fc6d1b6b79eef2da32e |
|
BLAKE2b-256 | 2b7f29953e58673cfefdb1c5f82ca129bf4574e9a18bb5d9c489dfe720e1c333 |
Hashes for openstl-1.1.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bdb11408b6c737ece105d8d329d7fac6b7c2a69f4e8eb313e9ac761062e8d05a |
|
MD5 | 88a278f1277340a1d5016f00321ead4b |
|
BLAKE2b-256 | 82ed8cfcc61dd3744205e8d1e23a4da079b1f1f3868c8257334234833d81b73b |
Hashes for openstl-1.1.6-cp312-cp312-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66dc58c096dbe962cef6380af188289d8a9643cfeebf2e483bef1524908ba88b |
|
MD5 | 5d340427ed7ae8914b424c7d274cccec |
|
BLAKE2b-256 | e84acffba2130410f40a413f17f9c18d59a393c9761680c4d344c7c31250df0a |
Hashes for openstl-1.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fb8d52e4b7f7b70b278ac188a669d9ac01bfe369b56537b5e6ed5408b507a03 |
|
MD5 | 62f4a0c0be5eeda1ea3129c056c6a99d |
|
BLAKE2b-256 | c97f2f2cf3d02776877669492053cd278f91759e0d63e6091bf48770c07ac658 |
Hashes for openstl-1.1.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba847eea61ad9a69723712b862ac68ab9f1d7eba4fcb851ad042763c5f5c1583 |
|
MD5 | 94d5a532b1f5f7910e9e7a2b68bdc93b |
|
BLAKE2b-256 | f6594e0cb981f6f6edd9a480b7b3c830062d57d1d702480759a68d7dccd7d310 |
Hashes for openstl-1.1.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc5b324f15b6b5b1f4068adc5d6021ecf31f3c7c2268d2b0613d105ea3d58670 |
|
MD5 | ed64641fa26f7453a962f786d4fd7a1b |
|
BLAKE2b-256 | 5f4df4ed505a904c1f73375ba18f73f23588b512ed8f19bbdec0ad0833fddf73 |
Hashes for openstl-1.1.6-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1abc3aedf2001fd0bbcb50ad5f5f9d2e977f40c8c00e3f23f691ab4bf4a081e0 |
|
MD5 | ad18220623ad6cccc1870e14f76740de |
|
BLAKE2b-256 | db0ed008632748bab399503ef82380dd3e35de60c603c8f2cb9fde0890aa2a0e |
Hashes for openstl-1.1.6-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 745e78fb5dd16d1abf965ac40488beb1c1eebd18a251444cb9b1ad07259b08d2 |
|
MD5 | 8c81abfc2b576a8fb8005e09c62148c7 |
|
BLAKE2b-256 | 44ecdedd070bdf9167a4781846667fffb4dec591b807d4b89247847d6fd8583e |
Hashes for openstl-1.1.6-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d75b37c65da9a5b71218ef17c2dea20b584f6dd69c4d41c6fdc3797f8cab523e |
|
MD5 | 71f49715c1d2786b93be14ab277a91ef |
|
BLAKE2b-256 | 606f9689c10be94695fc36e64f1779843598ac67be74844b01fce2767c87fa35 |
Hashes for openstl-1.1.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c6fedf0c29aa372359f6a0206c7a4c4797b3a0d5fefd9fe7da85f2b65691d77 |
|
MD5 | 207ebf186e39512d8e429797167e2a40 |
|
BLAKE2b-256 | b84d26cd5f8c2e3640f245b9e8c093f71c46fe44edf0dfa5f3c03d4e12decfb7 |
Hashes for openstl-1.1.6-cp311-cp311-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbd485d0834bd931d753cc105c79971c875c4bfb2eef2f6b20629076d62829cf |
|
MD5 | c20277590a8e051e285838f1b8aaf843 |
|
BLAKE2b-256 | 9c90d3b09ddb13364f4565811daef0a4519dd659d2699e535b51f35b2a4bd7a2 |
Hashes for openstl-1.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44e05a71baebda783fb2f3714176d87afd20dfad954605b6ded0ee70842193ed |
|
MD5 | 836e91dad54a56f93142c2e3a73e0ef7 |
|
BLAKE2b-256 | 05acb470ecbf718f75b979d17ad2aff18b87dd8d8d7ea0c44a71101faa0c75fa |
Hashes for openstl-1.1.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d78a223be3d77b621f180b4fb5776fe6a958a968b95764dcc1d2c049503c2fe3 |
|
MD5 | b21c85dad6bb31036622e2dee6513a50 |
|
BLAKE2b-256 | 65e76aec2373f6646d71fc72eb83f647ab66604c90f1185fcd56b788ce2053cf |
Hashes for openstl-1.1.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3c226f68e4f16b89663f9ca8d9e692d1dfd089158d8a99172bf12ca9d91cd6f |
|
MD5 | b4917694de98143dcfd9dffd146b31e6 |
|
BLAKE2b-256 | b91681173de0b9d96db1ef936a4b1529ac84b238802861be26533b0870973e2e |
Hashes for openstl-1.1.6-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f124b3311253dd0f91546b3086cf9cd0d7e01da0265ddfbc97ab5aeb77e78a9b |
|
MD5 | 5eb32e2d7a427f8815f17393c89ac2fc |
|
BLAKE2b-256 | bba4bef78fce7e864ba11e0c56e21dec560d26245c878b5e4599d006ee799935 |
Hashes for openstl-1.1.6-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a85d9cd246323960afa0b08e5e460fdf6793a4189cd4b4db3d523f481f95da44 |
|
MD5 | 9e4cdf9b2f7cd2df86ae370843424ea6 |
|
BLAKE2b-256 | c378bab8ccb143505010c73cef737864d5ccead025de15b1a263c212790d653c |
Hashes for openstl-1.1.6-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0b324cd18479b6d3870a6d8e260ba52496ae50cb76aa97dedc95aa5836b12ff |
|
MD5 | bf3f5f18a21f6c1e4d6288661d2e4d4d |
|
BLAKE2b-256 | ec5088083b1e57b1eed6997eaeadbcdfb01fac63f1775c940168163da45d979d |
Hashes for openstl-1.1.6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6be2b92aa6fdd9cbc027672377c521b2a0c5e2fceb1067f1adf5776192eb43a8 |
|
MD5 | 909d499079ffee62ba40c7d7209db127 |
|
BLAKE2b-256 | ea958f2b3717da84042cd2c225866b49cbaa15429b2e7a24a2c50d57f274a216 |
Hashes for openstl-1.1.6-cp310-cp310-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24116c24ede31c50540c48e6ac08933b3e875e4f5461fc0f1a58d1dc5701deb5 |
|
MD5 | 5805502a57474021a67c48f5e082eccd |
|
BLAKE2b-256 | 92af7980e1ce78f9e85874bc167d8e55b8bd1c85dfc2d1497eca6fa467ef7f63 |
Hashes for openstl-1.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | def6be99547a4d100e4ae209e09dfe3c0388cfcb8419f890846db86a97cdd9f7 |
|
MD5 | 86ac669ce3d928be2252e97ccd8c3d09 |
|
BLAKE2b-256 | 70adc72546772e675f1e83142044c5637363409acb5a2ac186b9d7e1d4139216 |
Hashes for openstl-1.1.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c88565b2f5c5312ee2df7141e0c0e85fe726bc2f245ef378f3abda9ae3ac5a0 |
|
MD5 | 21e550424a4f7d60f339b64315e667fe |
|
BLAKE2b-256 | 59af31baa073cf46d6cdb617c432c9bb236dd525dbc27a7667490962584904c6 |
Hashes for openstl-1.1.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68fa1804a2df6004fe2d049f7351cb961caf0864c4def6fa3957b0ea8ecd4006 |
|
MD5 | 2cbf5a7e1a8e3d8b261650fcb852a664 |
|
BLAKE2b-256 | 3d8f47138876638874c9c2d25d3501b29ef75e2ff9f0d0ba0c085fec045cd67a |
Hashes for openstl-1.1.6-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa276cba6404047097f616ba3e2a7063bfa4ea6bcc9bd955e57002ddf3b092ab |
|
MD5 | 97edc2cfd671a115a0f5be5a7b8ddf87 |
|
BLAKE2b-256 | f54226c7e2d051200bbd3e87ee5d9815784e8295395efdd5449dbbd99e81e8ee |
Hashes for openstl-1.1.6-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1960ea9de3e74e7453e7a971b5a50cabc2bb400f32adad81a3354634d1305a33 |
|
MD5 | 908215c64379ecde882631744cc39776 |
|
BLAKE2b-256 | 349fe4de116929a82303ad2a9a9b279d5f4760623297bb426b68d56ad0c29dcc |
Hashes for openstl-1.1.6-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1be397eb27f8b3c2a260717018d808e7c21119441cc06d375aea9e96c6ffae04 |
|
MD5 | 95e8b4fb061c29a72788ab389a5b4946 |
|
BLAKE2b-256 | fd10dcb16dc963c8383c05f8b83bfa211992dd7024841db4b5fd11320538e09a |
Hashes for openstl-1.1.6-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1ec9a5dd2a3a50e73ff0c1adc9e6c463ed8b51540aca6d0aae99384bed0db01 |
|
MD5 | 93aa269f767b6f0224c65007ff9f6494 |
|
BLAKE2b-256 | 569f030526b696119b5ba17499289eea6787c93c1403f36d787001dcbd9989e9 |
Hashes for openstl-1.1.6-cp39-cp39-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8dd1e7a8ad6c30fc71ea57e593071f4b22c731fe44fc85f4b275e30c6b39638b |
|
MD5 | 91925f2c7f696b284dff8a4c5fdb02fa |
|
BLAKE2b-256 | 6248700054859bbd0dcfb2477bf12712a656101b7c46f072fed0dc173d209a23 |
Hashes for openstl-1.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 221f3033fb70fbdd458a83998db31ad9615e120c34062fc2a4d14ffae3b16058 |
|
MD5 | f3524905ce30032b69e3742e973d80df |
|
BLAKE2b-256 | 9ce21587ba733d8d0f1a78986636a04a1cc1d4cc258d8310455dd106d899487a |
Hashes for openstl-1.1.6-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c41f56cbb5aa9b3180949c5ee77c2d2bcb1067480752c0b5719d879ba1b6ede0 |
|
MD5 | 3806c2246fd72446912ce1bea5f3f9e7 |
|
BLAKE2b-256 | 8f7bd71fd9330b3afe2783dbe29ef3b13b74836b3ea6aef9d9754d33f1c715bc |
Hashes for openstl-1.1.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8982b64fa1aba2bcea620ce5777a0910b5394829507ad6e31999ff872098b32 |
|
MD5 | 759f3bea6fa0b4adff527682a925d1bf |
|
BLAKE2b-256 | 6f5e87b5b74ff58d02c57b06b088ffa48c1abc1b599f2567a43f61ba72ab2116 |
Hashes for openstl-1.1.6-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 557e7048d14b1d8044a37795980734346a255fcd39c7308736bac29e3caaed98 |
|
MD5 | 857784299eb5b3edeb4ff56ffba489aa |
|
BLAKE2b-256 | 5039e02cc5cb3efdf05e158853207d73d5b14eebe9ccb822914f223772713c65 |
Hashes for openstl-1.1.6-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76c6f5f8ab549d269ffe8613d2f5e1134912e7fcb294adf8f83a96735e7f1aa4 |
|
MD5 | ff07441308d3fca40812b326652ba7b8 |
|
BLAKE2b-256 | 30c2ba4ac8ad3b9fc18d2b45318ca523caa0fe9ffc20663043802394855305f0 |
Hashes for openstl-1.1.6-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 820cd8a2cbbb23ed8cf77ad47183aa9c855b22fde1212ebe02fff95218ffffcb |
|
MD5 | a6b7bd309f4337bc2eaf81dd044ccb6a |
|
BLAKE2b-256 | 467cdcc2dd74210e143198786d6577c69e09a252311b45b29ec206ef500ee2f6 |
Hashes for openstl-1.1.6-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d71a092477671c65b5682c2f866baacb9b5b4a1f06c485ee10af0ef04aac7ca |
|
MD5 | f2e765a436cbb8927c35b08886934cf9 |
|
BLAKE2b-256 | 9ed7c50d484ab767bbfa8b2b7aec716aa130ca5dfbad94e3a21bc768d5380542 |
Hashes for openstl-1.1.6-cp38-cp38-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66e78acd39e4e784374ff0cba5e840b79c735b2561275d061eb1d2579e45ba63 |
|
MD5 | 65918e569f8c2d4ba1087eaf5ecdcb39 |
|
BLAKE2b-256 | b79e14bec8a916f83e72e78d7b45fb5fd04d68241131246922a1c99b6554d79f |
Hashes for openstl-1.1.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 49e521d9fe172a2ac1be3ad4f5754c5573787a0a4130f12938f0620857e7ce26 |
|
MD5 | febcc0c35c93df8c7603b30824d11f86 |
|
BLAKE2b-256 | 1427b7618c8ae23c49220284dbe8fb9af5962d0e27aead3c4eba69fa83b6ef39 |
Hashes for openstl-1.1.6-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8eb4fbef73001e64eacdaf1b38c510182b1fec80962914351113724fd1e2b336 |
|
MD5 | 041f9dde47881ff77e7a91885cbc6413 |
|
BLAKE2b-256 | 2cea3d097c3525ac37b68b137ab32069a53e7ed4ddf8598d46c86272c0245f59 |
Hashes for openstl-1.1.6-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e0cd6b10e7d6ce66a370798aba7b7bae366ccaec6d26b5939f7e821052cdf2a |
|
MD5 | 67461a22bc4c54a21d527682f05642dc |
|
BLAKE2b-256 | 169eacb248c12d82f80711cabcf3de8dd636dd9cd961efc70321855333115006 |
Hashes for openstl-1.1.6-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f917c5cded0958a38c02e2d54a83633486829f868181da7a0d2865634ce790cc |
|
MD5 | ba90cae5d8eb6bda998c003b76ea6532 |
|
BLAKE2b-256 | 9f77210d7687ee80c0ed6266d46769fe121e9480a267b7195f405ddbcd89f83d |
Hashes for openstl-1.1.6-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 724ad03f5ad6cbe86d0938f683ac623f57d4e025853a0ad241d57e76d425a756 |
|
MD5 | 6412e5ce5b6bc56946fd50ec448d5fdc |
|
BLAKE2b-256 | 385fe243fb821190ae6644f179a276570f9d1872ff1e826471651a99f39abd07 |
Hashes for openstl-1.1.6-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07c52155a46f2be46fe0dc8dfd39a3d4bca8757e6e4797a2eb4a2fb83852e58f |
|
MD5 | e3900a7501d94e6ed36978471d93a848 |
|
BLAKE2b-256 | 019eefba0cfb071447d1a7adbfb4fb0358876fda35084099f7e01f35c872c925 |
Hashes for openstl-1.1.6-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26d87f09e82ccb64a07b3b6e62788df00a284c888d048667d0ac7c2d2964e747 |
|
MD5 | bf5a168bc19473bd105cc1f7ed6a7839 |
|
BLAKE2b-256 | 7e8cf560c2124b74a06d87d2c5e0295226af042d0370e0829cffe17a74a93e9e |
Hashes for openstl-1.1.6-cp37-cp37m-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96fefff3c737d7bdc46a3145a3404c4387d8bf5e110ffcabac08f5694900d9f4 |
|
MD5 | f58e0e84bdecda2c0a72b1d31a0c1ab0 |
|
BLAKE2b-256 | bae528b06b98cbf47d72f04184001548e7b19e3e6558f7296475d97674618d13 |
Hashes for openstl-1.1.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e099a332dbe46fbe2897f0f0ccc04b16821d769125fea05084769e54460fa2a |
|
MD5 | cf8ff95ed2f0ed5cf6c0ed36efa07760 |
|
BLAKE2b-256 | 0c30ecb27fd7238cc49d4cf4f92825b5481bb90c22a89cea705658c19efe3a74 |
Hashes for openstl-1.1.6-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1887844615902cd53efe4c9f26597546abe2d1a2626d894e6cfb23046c7f891e |
|
MD5 | f11ffeaccf03809e2fe3b11b9b7c227a |
|
BLAKE2b-256 | 3b620a2068c4628aa92ce27c2c9a377c72898237721b10a33d9fddd6b63aacd5 |
Hashes for openstl-1.1.6-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de0ca8a7fb21569b56ca89d66045614a73adbd5147583ebf178c5e277bf8850e |
|
MD5 | 3affbbd3bc55ad7905b69cf36910e517 |
|
BLAKE2b-256 | 49c90e66a5f576be35d86a171a632fcbaa892df7321b43d50ba48418ad46eba0 |
Hashes for openstl-1.1.6-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84e523cd646c217e86275485b21ec4def0e06260384b457a23d1ef92402cfec7 |
|
MD5 | 8d4c2d8e61a14b71066760db8b1fb193 |
|
BLAKE2b-256 | 2c73beeab393810d4f7337cce855d1b3b0811c2c98139b7fe5a001c72f9f3fd7 |
Hashes for openstl-1.1.6-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8fe52c1a694759f273507b569980a7bc7b5c76de13b560b26ae1f596ab2cfda |
|
MD5 | efa6ed1f786616a61ca6e9ed57ba9019 |
|
BLAKE2b-256 | 91c56f6a60bbb1abd6579d33a934accc5d817210e48ae8b3f10e993e477a70e8 |
Hashes for openstl-1.1.6-cp36-cp36m-musllinux_1_2_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86f25f4551d96b7f2597335712e161442f1904416b41ddc270818f769fbe7fbe |
|
MD5 | 714e4ad4ec3611bd4fcf98768e1a165b |
|
BLAKE2b-256 | 52647e8819858d2b03a36cbd658fae986cecc2319e0a6f0d7b4bd68c39599335 |
Hashes for openstl-1.1.6-cp36-cp36m-musllinux_1_2_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcc67444d88060ec3d29c140816fa61916673fe9be0985386555361b54d064b5 |
|
MD5 | b84a05137b98e5a0705d89529a0e8146 |
|
BLAKE2b-256 | 441f6d0e2a37839fc5eae2388a91d95ace7680d77af02299501f240933503ee3 |
Hashes for openstl-1.1.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60dfc91e260afbe7a0bce0613fe7c36656d45344a0b64929587904981eb0b75a |
|
MD5 | 3ab59d95709204f8e212977a8cc68187 |
|
BLAKE2b-256 | ec11173ebe4eb7ad1e777a1128c9cab24033dbfdfb6c5ca97754e2b697288611 |
Hashes for openstl-1.1.6-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b93615bf02a17ddf51c693e3b1a0a5e133bb745cbf6eef5e5ec010437089644c |
|
MD5 | 04c5b9ddec1d3f1318c21f9f35afa3e0 |
|
BLAKE2b-256 | e2657a16806386f15a91fe6eaf51d8090c4b265ef7aac21b905589e3c691ce90 |
Hashes for openstl-1.1.6-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0cad7c1c9ca0dbb047d8d75edf14e944a0f6fb7ebfd9575c3629a8c69d0f09e |
|
MD5 | fbcb15aa4395239d20b76ca2f8b9d629 |
|
BLAKE2b-256 | f674a6a2047d09f166a7a0fa238fd24dc62e00f53fffe6a4d62cac8a6138c6e4 |