# dtcc-pyspade-native
[](https://badge.fury.io/py/dtcc-pyspade-native)
[](LICENSE)
[](https://pypi.org/project/dtcc-pyspade-native/)
**Ship the Spade C++ triangulation library with your Python package** - no Python bindings, just pure C++ for your C++ extensions.
## What is this?
`dtcc-pyspade-native` packages the [Spade](https://github.com/Stoeoef/spade) C++ Delaunay triangulation library for distribution via PyPI. It's designed for Python projects that have C++ components and need fast, robust 2D triangulation.
**Key Point**: This package provides **C++ libraries only** - no Python API. Use it when your Python project already has C++ extensions (pybind11, Cython, etc.) and you want to use Spade in that C++ code.
## Quick Start
### Install
```bash
pip install dtcc-pyspade-native
```
### Use in Your Python Project
**pyproject.toml:**
```toml
[build-system]
requires = ["scikit-build-core", "pybind11", "dtcc-pyspade-native>=0.1.0"]
[project]
dependencies = ["dtcc-pyspade-native>=0.1.0"]
```
**CMakeLists.txt:**
```cmake
find_package(Python REQUIRED COMPONENTS Interpreter)
execute_process(
COMMAND ${Python_EXECUTABLE} -c "import pyspade_native; print(pyspade_native.get_cmake_dir())"
OUTPUT_VARIABLE PYSPADE_CMAKE_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
find_package(pyspade_native REQUIRED PATHS ${PYSPADE_CMAKE_DIR} NO_DEFAULT_PATH)
target_link_libraries(your_module PRIVATE pyspade_native::spade_wrapper)
```
**your_module.cpp:**
```cpp
#include <spade_wrapper.h>
void triangulate() {
std::vector<spade::Point> polygon = {{0,0,0}, {1,0,0}, {0.5,1,0}};
auto result = spade::triangulate(polygon, {}, {}, 0.5,
spade::Quality::Moderate, true);
// Use result.points, result.triangles...
}
```
## Features
- ✅ **Easy Distribution**: Install via pip, no manual C++ library management
- ✅ **Cross-Platform**: Pre-built wheels for Linux, macOS, Windows
- ✅ **CMake Integration**: Clean `find_package()` support
- ✅ **No Rust Required**: Ships pre-built Rust FFI library
- ✅ **C++17**: Modern C++ API with STL containers
- ✅ **Constrained Delaunay**: Full CDT support with mesh refinement
## Use Cases
Perfect for:
- Python packages with pybind11/Cython/cffi extensions
- GIS applications with C++ backends
- Scientific computing tools
- CAD/CAM software with Python interfaces
- Any Python project that needs C++ triangulation
## Documentation
- [Installation Guide](docs/installation.md)
- [CMake Integration](docs/cmake.md)
- [C++ API Reference](docs/api.md)
- [Example Projects](examples/)
- [Troubleshooting](docs/troubleshooting.md)
## Python Helper API
```python
import pyspade_native
# Get paths for your build system
include_dir = pyspade_native.get_include_dir()
library_dir = pyspade_native.get_library_dir()
cmake_dir = pyspade_native.get_cmake_dir()
# Get available libraries
libs = pyspade_native.get_libraries()
# {'spade_wrapper': '/path/to/libspade_wrapper.so',
# 'spade_ffi': '/path/to/libspade_ffi.so'}
# Print installation info
pyspade_native.print_info()
```
## C++ API
The Spade C++ wrapper provides a clean, modern interface:
```cpp
namespace spade {
// Triangulate a polygon with optional holes and interior constraints
TriangulationResult triangulate(
const std::vector<Point>& outer,
const std::vector<std::vector<Point>>& holes = {},
const std::vector<std::vector<Point>>& interior_loops = {},
double maxh = 1.0,
Quality quality = Quality::Default,
bool enforce_constraints = true
);
enum class Quality {
Default, // No angle constraints
Moderate // 25-degree minimum angle
};
struct TriangulationResult {
std::vector<Point> points;
std::vector<Triangle> triangles;
std::vector<Edge> edges;
size_t num_vertices() const;
size_t num_triangles() const;
size_t num_edges() const;
};
}
```
## Example Project
See [examples/complete-project](examples/complete-project) for a full working example of a Python package that uses dtcc-pyspade-native.
```bash
cd examples/complete-project
pip install .
python -c "from my_package import triangulate; print(triangulate([[0,0],[1,0],[0.5,1]]))"
```
## Building from Source
```bash
git clone https://github.com/dtcc-platform/dtcc-pyspade-native
cd dtcc-pyspade-native
pip install -e .
```
### Development
```bash
# Install in editable mode
pip install -e ".[dev]"
# Run tests
pytest tests/
# Build wheels
python -m build
# Run examples
cd examples/complete-project && pip install . && python test.py
```
## Requirements
### For Installation
- Python 3.8+
- C++ compiler with C++17 support
- CMake 3.15+
### For Building from Source
- All of the above
- Rust toolchain (automatically fetched if not present)
## Contributing
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
## License
Dual-licensed under MIT OR Apache-2.0, matching the Spade library.
## Acknowledgments
This project packages the [Spade](https://github.com/Stoeoef/spade) library by Stefan Löffler for easy Python distribution. Developed as part of the [DTCC Platform](https://github.com/dtcc-platform).
## Links
- [PyPI Package](https://pypi.org/project/dtcc-pyspade-native/)
- [GitHub Repository](https://github.com/dtcc-platform/dtcc-pyspade-native)
- [Issue Tracker](https://github.com/dtcc-platform/dtcc-pyspade-native/issues)
- [Spade Library](https://github.com/Stoeoef/spade)
- [Documentation](https://dtcc-platform.github.io/dtcc-pyspade-native/)
Raw data
{
"_id": null,
"home_page": null,
"name": "dtcc-pyspade-native",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "DTCC Dev Team <dtcc@chalmers.se>",
"keywords": "triangulation, delaunay, mesh, geometry, cdt, constrained-delaunay, cpp, native, spade",
"author": null,
"author_email": "Vasilis Naserentin <vasilis.naserentin@chalmers.se>",
"download_url": "https://files.pythonhosted.org/packages/dd/eb/fef9926c2a0c71186e4df9a64a7697ff0c17aca19b564f7d46be8784b4b2/dtcc_pyspade_native-0.1.1.tar.gz",
"platform": null,
"description": "# dtcc-pyspade-native\n\n[](https://badge.fury.io/py/dtcc-pyspade-native)\n[](LICENSE)\n[](https://pypi.org/project/dtcc-pyspade-native/)\n\n**Ship the Spade C++ triangulation library with your Python package** - no Python bindings, just pure C++ for your C++ extensions.\n\n## What is this?\n\n`dtcc-pyspade-native` packages the [Spade](https://github.com/Stoeoef/spade) C++ Delaunay triangulation library for distribution via PyPI. It's designed for Python projects that have C++ components and need fast, robust 2D triangulation.\n\n**Key Point**: This package provides **C++ libraries only** - no Python API. Use it when your Python project already has C++ extensions (pybind11, Cython, etc.) and you want to use Spade in that C++ code.\n\n## Quick Start\n\n### Install\n\n```bash\npip install dtcc-pyspade-native\n```\n\n### Use in Your Python Project\n\n**pyproject.toml:**\n```toml\n[build-system]\nrequires = [\"scikit-build-core\", \"pybind11\", \"dtcc-pyspade-native>=0.1.0\"]\n\n[project]\ndependencies = [\"dtcc-pyspade-native>=0.1.0\"]\n```\n\n**CMakeLists.txt:**\n```cmake\nfind_package(Python REQUIRED COMPONENTS Interpreter)\n\nexecute_process(\n COMMAND ${Python_EXECUTABLE} -c \"import pyspade_native; print(pyspade_native.get_cmake_dir())\"\n OUTPUT_VARIABLE PYSPADE_CMAKE_DIR\n OUTPUT_STRIP_TRAILING_WHITESPACE\n)\n\nfind_package(pyspade_native REQUIRED PATHS ${PYSPADE_CMAKE_DIR} NO_DEFAULT_PATH)\n\ntarget_link_libraries(your_module PRIVATE pyspade_native::spade_wrapper)\n```\n\n**your_module.cpp:**\n```cpp\n#include <spade_wrapper.h>\n\nvoid triangulate() {\n std::vector<spade::Point> polygon = {{0,0,0}, {1,0,0}, {0.5,1,0}};\n auto result = spade::triangulate(polygon, {}, {}, 0.5,\n spade::Quality::Moderate, true);\n // Use result.points, result.triangles...\n}\n```\n\n## Features\n\n- \u2705 **Easy Distribution**: Install via pip, no manual C++ library management\n- \u2705 **Cross-Platform**: Pre-built wheels for Linux, macOS, Windows\n- \u2705 **CMake Integration**: Clean `find_package()` support\n- \u2705 **No Rust Required**: Ships pre-built Rust FFI library\n- \u2705 **C++17**: Modern C++ API with STL containers\n- \u2705 **Constrained Delaunay**: Full CDT support with mesh refinement\n\n## Use Cases\n\nPerfect for:\n- Python packages with pybind11/Cython/cffi extensions\n- GIS applications with C++ backends\n- Scientific computing tools\n- CAD/CAM software with Python interfaces\n- Any Python project that needs C++ triangulation\n\n## Documentation\n\n- [Installation Guide](docs/installation.md)\n- [CMake Integration](docs/cmake.md)\n- [C++ API Reference](docs/api.md)\n- [Example Projects](examples/)\n- [Troubleshooting](docs/troubleshooting.md)\n\n## Python Helper API\n\n```python\nimport pyspade_native\n\n# Get paths for your build system\ninclude_dir = pyspade_native.get_include_dir()\nlibrary_dir = pyspade_native.get_library_dir()\ncmake_dir = pyspade_native.get_cmake_dir()\n\n# Get available libraries\nlibs = pyspade_native.get_libraries()\n# {'spade_wrapper': '/path/to/libspade_wrapper.so',\n# 'spade_ffi': '/path/to/libspade_ffi.so'}\n\n# Print installation info\npyspade_native.print_info()\n```\n\n## C++ API\n\nThe Spade C++ wrapper provides a clean, modern interface:\n\n```cpp\nnamespace spade {\n // Triangulate a polygon with optional holes and interior constraints\n TriangulationResult triangulate(\n const std::vector<Point>& outer,\n const std::vector<std::vector<Point>>& holes = {},\n const std::vector<std::vector<Point>>& interior_loops = {},\n double maxh = 1.0,\n Quality quality = Quality::Default,\n bool enforce_constraints = true\n );\n\n enum class Quality {\n Default, // No angle constraints\n Moderate // 25-degree minimum angle\n };\n\n struct TriangulationResult {\n std::vector<Point> points;\n std::vector<Triangle> triangles;\n std::vector<Edge> edges;\n size_t num_vertices() const;\n size_t num_triangles() const;\n size_t num_edges() const;\n };\n}\n```\n\n## Example Project\n\nSee [examples/complete-project](examples/complete-project) for a full working example of a Python package that uses dtcc-pyspade-native.\n\n```bash\ncd examples/complete-project\npip install .\npython -c \"from my_package import triangulate; print(triangulate([[0,0],[1,0],[0.5,1]]))\"\n```\n\n## Building from Source\n\n```bash\ngit clone https://github.com/dtcc-platform/dtcc-pyspade-native\ncd dtcc-pyspade-native\npip install -e .\n```\n\n### Development\n\n```bash\n# Install in editable mode\npip install -e \".[dev]\"\n\n# Run tests\npytest tests/\n\n# Build wheels\npython -m build\n\n# Run examples\ncd examples/complete-project && pip install . && python test.py\n```\n\n## Requirements\n\n### For Installation\n- Python 3.8+\n- C++ compiler with C++17 support\n- CMake 3.15+\n\n### For Building from Source\n- All of the above\n- Rust toolchain (automatically fetched if not present)\n\n## Contributing\n\nContributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nDual-licensed under MIT OR Apache-2.0, matching the Spade library.\n\n## Acknowledgments\n\nThis project packages the [Spade](https://github.com/Stoeoef/spade) library by Stefan L\u00f6ffler for easy Python distribution. Developed as part of the [DTCC Platform](https://github.com/dtcc-platform).\n\n## Links\n\n- [PyPI Package](https://pypi.org/project/dtcc-pyspade-native/)\n- [GitHub Repository](https://github.com/dtcc-platform/dtcc-pyspade-native)\n- [Issue Tracker](https://github.com/dtcc-platform/dtcc-pyspade-native/issues)\n- [Spade Library](https://github.com/Stoeoef/spade)\n- [Documentation](https://dtcc-platform.github.io/dtcc-pyspade-native/)",
"bugtrack_url": null,
"license": "MIT OR Apache-2.0",
"summary": "Spade C++ triangulation library packaged for Python projects (C++ only, no Python bindings)",
"version": "0.1.1",
"project_urls": {
"Changelog": "https://github.com/dtcc-platform/dtcc-pyspade-native/blob/main/CHANGELOG.md",
"Documentation": "https://dtcc-platform.github.io/dtcc-pyspade-native/",
"Homepage": "https://github.com/dtcc-platform/dtcc-pyspade-native",
"Issues": "https://github.com/dtcc-platform/dtcc-pyspade-native/issues",
"Repository": "https://github.com/dtcc-platform/dtcc-pyspade-native"
},
"split_keywords": [
"triangulation",
" delaunay",
" mesh",
" geometry",
" cdt",
" constrained-delaunay",
" cpp",
" native",
" spade"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b5d876d9adc5beac7c223d98a124f28bf4ae2d4c4692c87103823dff2a8e55c6",
"md5": "d47de632050462a94458c46e5a1859f9",
"sha256": "d76b6ac2d8e8b08bac3f32f0ed8e670ffac73f0d1c50d22a6a3f0ea873a2a907"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "d47de632050462a94458c46e5a1859f9",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 268727,
"upload_time": "2025-10-24T12:37:19",
"upload_time_iso_8601": "2025-10-24T12:37:19.709103Z",
"url": "https://files.pythonhosted.org/packages/b5/d8/76d9adc5beac7c223d98a124f28bf4ae2d4c4692c87103823dff2a8e55c6/dtcc_pyspade_native-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3fa94643a88ac3ee40e2f17e63e639d715e5dbb2303769ff16be1de77159772f",
"md5": "427daaf0238ba15a7458ef0f58d49bab",
"sha256": "a3a51e25617c8bfe12764da8af36b17a0129df8c68e820160cf0c2c05deb4cdb"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "427daaf0238ba15a7458ef0f58d49bab",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 248355,
"upload_time": "2025-10-24T12:37:21",
"upload_time_iso_8601": "2025-10-24T12:37:21.064331Z",
"url": "https://files.pythonhosted.org/packages/3f/a9/4643a88ac3ee40e2f17e63e639d715e5dbb2303769ff16be1de77159772f/dtcc_pyspade_native-0.1.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4cbbf9a335a77d4bc7c86201621a049ce8846868695fd491afeb3ee566d0cb2c",
"md5": "43434d6dd5640940d423969cc4b60cb7",
"sha256": "23e63f68c02b75664f7d072aeab668e53f71d01d70807acbdc837669a9604cd5"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "43434d6dd5640940d423969cc4b60cb7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 276344,
"upload_time": "2025-10-24T12:37:22",
"upload_time_iso_8601": "2025-10-24T12:37:22.530331Z",
"url": "https://files.pythonhosted.org/packages/4c/bb/f9a335a77d4bc7c86201621a049ce8846868695fd491afeb3ee566d0cb2c/dtcc_pyspade_native-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7ee7a2d09b571c4731ed30701e9816e33a6882894e20965f7aab5a9bf3d167dc",
"md5": "b5ca5f28b59dab0da771054dde101dcc",
"sha256": "10d2b0fa35197e75240b825abd8c2c5d13b136a0cc63b60ed3ce7e44fa4b567c"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "b5ca5f28b59dab0da771054dde101dcc",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 128398,
"upload_time": "2025-10-24T12:37:24",
"upload_time_iso_8601": "2025-10-24T12:37:24.064688Z",
"url": "https://files.pythonhosted.org/packages/7e/e7/a2d09b571c4731ed30701e9816e33a6882894e20965f7aab5a9bf3d167dc/dtcc_pyspade_native-0.1.1-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6680b230ba00bf87f06569b1c46542a605d327bcb132c3589d1a63b5bd1aee87",
"md5": "2361dd4e4451078f36d6b215a2b8b70f",
"sha256": "c8a02775acd33130284c7b7470b9dced36f73769005025d59c4d04da0435914c"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "2361dd4e4451078f36d6b215a2b8b70f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 135486,
"upload_time": "2025-10-24T12:37:25",
"upload_time_iso_8601": "2025-10-24T12:37:25.361162Z",
"url": "https://files.pythonhosted.org/packages/66/80/b230ba00bf87f06569b1c46542a605d327bcb132c3589d1a63b5bd1aee87/dtcc_pyspade_native-0.1.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7489c7d1022105226cfb1559df4c751ab6aa1039c20778742b0cc9d56e4774b3",
"md5": "3ed1a345a2e4a3a7968f41267d5b8757",
"sha256": "4514e670d9820b12c87d522be048ba5bf9a82614a44a70057c60fd31e976c31e"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "3ed1a345a2e4a3a7968f41267d5b8757",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 268728,
"upload_time": "2025-10-24T12:37:26",
"upload_time_iso_8601": "2025-10-24T12:37:26.820911Z",
"url": "https://files.pythonhosted.org/packages/74/89/c7d1022105226cfb1559df4c751ab6aa1039c20778742b0cc9d56e4774b3/dtcc_pyspade_native-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "23b4881a20d0cb0e267a839413ad2febfdb2813d47ea19e37f2c9772f90e6425",
"md5": "ce06831b5e837b72a00b4f3ebb306b19",
"sha256": "a8d781ab8538c7f99a57de79d4f61ff6643844aabb4f6f4ca2cdf4295e036892"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ce06831b5e837b72a00b4f3ebb306b19",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 248353,
"upload_time": "2025-10-24T12:37:28",
"upload_time_iso_8601": "2025-10-24T12:37:28.281530Z",
"url": "https://files.pythonhosted.org/packages/23/b4/881a20d0cb0e267a839413ad2febfdb2813d47ea19e37f2c9772f90e6425/dtcc_pyspade_native-0.1.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "05728cc0fb84c77371154a383d086c3a64e4c66291e6462785e6bc9ba6260a3a",
"md5": "c0270686b341f063fe79ee35044cb50c",
"sha256": "7ec1293e16bedc4e5558fc88c29e8894e24f6036fa8196b53a37a5dcb2c275c6"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "c0270686b341f063fe79ee35044cb50c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 276346,
"upload_time": "2025-10-24T12:37:29",
"upload_time_iso_8601": "2025-10-24T12:37:29.803929Z",
"url": "https://files.pythonhosted.org/packages/05/72/8cc0fb84c77371154a383d086c3a64e4c66291e6462785e6bc9ba6260a3a/dtcc_pyspade_native-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "94d4312868330b837aab7b044e27562c3eaa1dc6ca12ee7e4efd6941b94eb473",
"md5": "48c9d7874e66ccaa2bdebcf2b0052c54",
"sha256": "e5d03430c5a1f9960b98ac656c478f26f27e410a0d1f6f89dcb434ea98696f30"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "48c9d7874e66ccaa2bdebcf2b0052c54",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 128397,
"upload_time": "2025-10-24T12:37:31",
"upload_time_iso_8601": "2025-10-24T12:37:31.283711Z",
"url": "https://files.pythonhosted.org/packages/94/d4/312868330b837aab7b044e27562c3eaa1dc6ca12ee7e4efd6941b94eb473/dtcc_pyspade_native-0.1.1-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c2c8231991dff4bfed1004df31107db1a651775be8ceca8307f592331637827b",
"md5": "a80c98a20a18d9584dd460b0698c0a94",
"sha256": "0679d02c08b96523bbb41215e5d545eb240f7eb16fe2089cd5f878147974f7fd"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "a80c98a20a18d9584dd460b0698c0a94",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 135485,
"upload_time": "2025-10-24T12:37:32",
"upload_time_iso_8601": "2025-10-24T12:37:32.696659Z",
"url": "https://files.pythonhosted.org/packages/c2/c8/231991dff4bfed1004df31107db1a651775be8ceca8307f592331637827b/dtcc_pyspade_native-0.1.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dbbfa82343e4211c4350c83d257e0739b2694c3f95f5f3bce4f4a618f80680d2",
"md5": "234763a5d0519f2ed4b30290d197d735",
"sha256": "48ebbb15594bcd41f47aa0c265e016609e0f19989bbf06bf0b96c9db19ec1140"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "234763a5d0519f2ed4b30290d197d735",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 268729,
"upload_time": "2025-10-24T12:37:34",
"upload_time_iso_8601": "2025-10-24T12:37:34.089677Z",
"url": "https://files.pythonhosted.org/packages/db/bf/a82343e4211c4350c83d257e0739b2694c3f95f5f3bce4f4a618f80680d2/dtcc_pyspade_native-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7cba9e536d3157b0fc3008ee2cbb4d5e1f9d996d98cc6f1306fa5799a13758ab",
"md5": "3f37a74fab5729734c7f3cdaa99171ba",
"sha256": "7bfa1a3dac287abdf0038146671b43f5f59e8713f20ffa2497ce22dc5c304f3a"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3f37a74fab5729734c7f3cdaa99171ba",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 248353,
"upload_time": "2025-10-24T12:37:35",
"upload_time_iso_8601": "2025-10-24T12:37:35.192527Z",
"url": "https://files.pythonhosted.org/packages/7c/ba/9e536d3157b0fc3008ee2cbb4d5e1f9d996d98cc6f1306fa5799a13758ab/dtcc_pyspade_native-0.1.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "698e7f85e7d81906b24dafc9001b4360b505d4b88ceeec113bca55665bd6006e",
"md5": "51f5c5d458318534466dff3889f5440a",
"sha256": "b1a787bb6b4fdf082dd36864e352590718e5be0c4aaa67b330271794400ba99a"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "51f5c5d458318534466dff3889f5440a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 276344,
"upload_time": "2025-10-24T12:37:36",
"upload_time_iso_8601": "2025-10-24T12:37:36.295057Z",
"url": "https://files.pythonhosted.org/packages/69/8e/7f85e7d81906b24dafc9001b4360b505d4b88ceeec113bca55665bd6006e/dtcc_pyspade_native-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "709cb490c4f40e9cf679cb8a501712184602de9ea37206681158d7f322b237b9",
"md5": "ce854ce554124e900efd4c1cd2dbc61d",
"sha256": "a92f4c1207dbb655d256b271c108861e7af84ccedbaf37db15193fc969cf1ced"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "ce854ce554124e900efd4c1cd2dbc61d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 128397,
"upload_time": "2025-10-24T12:37:37",
"upload_time_iso_8601": "2025-10-24T12:37:37.414328Z",
"url": "https://files.pythonhosted.org/packages/70/9c/b490c4f40e9cf679cb8a501712184602de9ea37206681158d7f322b237b9/dtcc_pyspade_native-0.1.1-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2672e23503da5ab4c003aee4cb178a5cf00e5217e87a4b5d2d5319e2d1bea119",
"md5": "e5a50400fa3a1c412e95a028da101127",
"sha256": "48047b9fdd7cb4c202d6e4a3468a788d7456be77133336bfccc2a25d9332ed4b"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "e5a50400fa3a1c412e95a028da101127",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 135485,
"upload_time": "2025-10-24T12:37:38",
"upload_time_iso_8601": "2025-10-24T12:37:38.329234Z",
"url": "https://files.pythonhosted.org/packages/26/72/e23503da5ab4c003aee4cb178a5cf00e5217e87a4b5d2d5319e2d1bea119/dtcc_pyspade_native-0.1.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "15e8dd946da1be61b2f312cec6fa3eab040daf000e9b701bfe8869164c7406fc",
"md5": "f16664730b81ea2f4d2f2f10cae438d9",
"sha256": "f265e91c939409c9398135b477a4006905411cbf2b9e8bae3e33aaa66aa98ae0"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp38-cp38-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "f16664730b81ea2f4d2f2f10cae438d9",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 268715,
"upload_time": "2025-10-24T12:37:39",
"upload_time_iso_8601": "2025-10-24T12:37:39.319825Z",
"url": "https://files.pythonhosted.org/packages/15/e8/dd946da1be61b2f312cec6fa3eab040daf000e9b701bfe8869164c7406fc/dtcc_pyspade_native-0.1.1-cp38-cp38-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e938f1b2ada779fcaa062ae969c323b0546771fd886bc48e227bebbc09999abc",
"md5": "8be451146237d9f95a1dbf7344d461b4",
"sha256": "e0476937be7ae92600af76a892cf2022aa26dd77f936ec08a6f52a397956a1f3"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "8be451146237d9f95a1dbf7344d461b4",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 248347,
"upload_time": "2025-10-24T12:37:40",
"upload_time_iso_8601": "2025-10-24T12:37:40.379951Z",
"url": "https://files.pythonhosted.org/packages/e9/38/f1b2ada779fcaa062ae969c323b0546771fd886bc48e227bebbc09999abc/dtcc_pyspade_native-0.1.1-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5208e9704a982910c5c415231772678880160d84648fef0c3a37309066428bbd",
"md5": "daba39b337d9d7447f3268716ef32081",
"sha256": "ca1a14b32d03672a795ceeeecc0aeb56b3189182d28a6cdeb7b7ae0287e821cc"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp38-cp38-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "daba39b337d9d7447f3268716ef32081",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 276343,
"upload_time": "2025-10-24T12:37:41",
"upload_time_iso_8601": "2025-10-24T12:37:41.440313Z",
"url": "https://files.pythonhosted.org/packages/52/08/e9704a982910c5c415231772678880160d84648fef0c3a37309066428bbd/dtcc_pyspade_native-0.1.1-cp38-cp38-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "121d54f050f25c4713394d9a3a8ebf7dd680bf017ab7bbc369e1867b9a9970fd",
"md5": "943f1892875c48b7c066310e0c94c24a",
"sha256": "732938ba87a72e0faec07d214ed8899cc3223ec1cadf36bbe8680b505324b3b9"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "943f1892875c48b7c066310e0c94c24a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 128398,
"upload_time": "2025-10-24T12:37:42",
"upload_time_iso_8601": "2025-10-24T12:37:42.476968Z",
"url": "https://files.pythonhosted.org/packages/12/1d/54f050f25c4713394d9a3a8ebf7dd680bf017ab7bbc369e1867b9a9970fd/dtcc_pyspade_native-0.1.1-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "618abfabeec111267304e92258496c1cb1e3b0fbab6485a22f69ce4b380b619b",
"md5": "f888fc67e25586e1d76c763bbb5f18e9",
"sha256": "42c723b0d866d19e5637320604da995552cde1fd77f49df9e09486cb6a9ca812"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "f888fc67e25586e1d76c763bbb5f18e9",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 135483,
"upload_time": "2025-10-24T12:37:43",
"upload_time_iso_8601": "2025-10-24T12:37:43.418633Z",
"url": "https://files.pythonhosted.org/packages/61/8a/bfabeec111267304e92258496c1cb1e3b0fbab6485a22f69ce4b380b619b/dtcc_pyspade_native-0.1.1-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c33d54f06d40795e03f26b6e5aab8c9ca699d287df6a824bcdbe7004ae47e52c",
"md5": "f2e6cd133831a4d0342f13d57be10fcf",
"sha256": "6c79c70c1731aeb8f0160c1f2caaf9d499ef7981c723b1d3e58c9a31bf8a8b54"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "f2e6cd133831a4d0342f13d57be10fcf",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 268727,
"upload_time": "2025-10-24T12:37:44",
"upload_time_iso_8601": "2025-10-24T12:37:44.403485Z",
"url": "https://files.pythonhosted.org/packages/c3/3d/54f06d40795e03f26b6e5aab8c9ca699d287df6a824bcdbe7004ae47e52c/dtcc_pyspade_native-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "74d092ddc2537a39c121431e4b4aac7aba4ede58f71e3cc08a98243c3c95ba26",
"md5": "9945918e7a5673f50a12bb6c2d296ee3",
"sha256": "37f47d73e8e1c2e748ba68024ed99148a7d15c7ca201f353e4ae4b8a7b22f660"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "9945918e7a5673f50a12bb6c2d296ee3",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 248351,
"upload_time": "2025-10-24T12:37:45",
"upload_time_iso_8601": "2025-10-24T12:37:45.590358Z",
"url": "https://files.pythonhosted.org/packages/74/d0/92ddc2537a39c121431e4b4aac7aba4ede58f71e3cc08a98243c3c95ba26/dtcc_pyspade_native-0.1.1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a6f82fd51358ee45667acf2e36d1decf052c305f5d0d8888c629b7057faa34ef",
"md5": "4e615b0d23705405e4266746a2900a8c",
"sha256": "eb7dc7f498a9e70c19a24fc0658a7e967ea763c30b8cd3085f0d2f982c5d0b60"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "4e615b0d23705405e4266746a2900a8c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 276344,
"upload_time": "2025-10-24T12:37:48",
"upload_time_iso_8601": "2025-10-24T12:37:48.143574Z",
"url": "https://files.pythonhosted.org/packages/a6/f8/2fd51358ee45667acf2e36d1decf052c305f5d0d8888c629b7057faa34ef/dtcc_pyspade_native-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f89447d5bb1999e531b8cbfdefd07d48033159fdd84b7924840b707059fd38cc",
"md5": "9e6e37374b88c7816764c48e2c0db242",
"sha256": "e1e0a900740f27dcd84a293008a5d2540e3d78c75435ab3ad0aae5bef0e2d173"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "9e6e37374b88c7816764c48e2c0db242",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 128398,
"upload_time": "2025-10-24T12:37:49",
"upload_time_iso_8601": "2025-10-24T12:37:49.431476Z",
"url": "https://files.pythonhosted.org/packages/f8/94/47d5bb1999e531b8cbfdefd07d48033159fdd84b7924840b707059fd38cc/dtcc_pyspade_native-0.1.1-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a79ecaee94620a97d4a6ff002a2d3b7af59e23e6de37bc90b86baf3379f1d2ef",
"md5": "969557554937f9d3a075abcce677a763",
"sha256": "7a465e13cda7c3f96731291ae49e7438831d8ed471f5bb9ab8e85340bb96c5f2"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "969557554937f9d3a075abcce677a763",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 135484,
"upload_time": "2025-10-24T12:37:50",
"upload_time_iso_8601": "2025-10-24T12:37:50.812968Z",
"url": "https://files.pythonhosted.org/packages/a7/9e/caee94620a97d4a6ff002a2d3b7af59e23e6de37bc90b86baf3379f1d2ef/dtcc_pyspade_native-0.1.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ddebfef9926c2a0c71186e4df9a64a7697ff0c17aca19b564f7d46be8784b4b2",
"md5": "59d75d97ca90d3f17d93be9310beedd3",
"sha256": "635348050c6eb153e769fe858655e67679c86e7d41dc137752e504a67034b9d7"
},
"downloads": -1,
"filename": "dtcc_pyspade_native-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "59d75d97ca90d3f17d93be9310beedd3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 34934,
"upload_time": "2025-10-24T12:37:52",
"upload_time_iso_8601": "2025-10-24T12:37:52.127870Z",
"url": "https://files.pythonhosted.org/packages/dd/eb/fef9926c2a0c71186e4df9a64a7697ff0c17aca19b564f7d46be8784b4b2/dtcc_pyspade_native-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-24 12:37:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dtcc-platform",
"github_project": "dtcc-pyspade-native",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "dtcc-pyspade-native"
}