# Similarity-Hierarchical-Partitioning (SHiP) Clustering Framework
[](https://pypi.org/project/SHiP-framework/)
[](https://github.com/pasiweber/SHiP-framework/actions/workflows/publish_to_pypi.yml)
[](https://SHiP-framework.readthedocs.io/en/)
This repository is the official implementation of the Similarity-Hierarchical-Partitioning (SHiP) clustering framework proposed in [Ultrametric Cluster Hierarchies: I Want `em All!](https://github.com/pasiweber/SHiP-framework/) This framework provides a comprehensive approach to clustering by leveraging similarity trees, $(k,z)$-hierarchies, and various partitioning objective functions.
The whole project is implemented in C++ and Python bindings enable the usage within Python.
## Overview
The SHiP framework operates in three main stages:
[](https://github.com/pasiweber/SHiP-framework/)
1. **Similarity Tree Construction:** A similarity tree is built for the given dataset. This tree represents the relationships and proximities between data points. Note that the default constructed tree corresponds to the $k$-center hierarchy (Section 3 in the paper).
2. **$(k,z)$-Hierarchy Construction:** Using the similarity tree, a $(k,z)$-hierarchy can be constructed. These hierarchies correlate to common center based clustering methods, as e.g., $k$-median or $k$-means (Section 4).
3. **Partitioning:** Finally, the data is partitioned based on the constructed hierarchy and a user-selected partitioning objective function (Section 5).
## Features
- **Similarity Trees:** The package provides a set of similarity/ultrametric tree implementations:
- `DCTree` [[1]](#references)
- `HST` [[2]](#references)
- `CoverTree` [[3]](#references)
- `KDTree` [[3]](#references)
- `MeanSplitKDTree` [[3]](#references)
- `BallTree` [[3]](#references)
- `MeanSplitBallTree` [[3]](#references)
- `RPTree` [[3]](#references)
- `MaxRPTree` [[3]](#references)
- `UBTree` [[3]](#references)
- `RTree` [[3]](#references)
- `RStarTree` [[3]](#references)
- `XTree` [[3]](#references)
- `HilbertRTree` [[3]](#references)
- `RPlusTree` [[3]](#references)
- `RPlusPlusTree` [[3]](#references)
- Or use `LoadTree` to load a precomputed tree
- **$(k,z)$-Hierarchies:** It supports all possible $(k,z)$-hierarchies, allowing flexibility in choosing the most suitable hierarchy for a given dataset.
- $z = 0$ → $k$-center (actually in theory: $z = ∞$, but in this implementation we use 0 for $∞$)
- $z = 1$ → $k$-median
- $z = 2$ → $k$-means
- ...
- **Partitioning Functions:** A wide range of partitioning functions are available, enabling users to select the most appropriate function based on their specific needs:
- `K`
- `Elbow`
- `Threshold`
- `ThresholdElbow`
- `QCoverage`
- `QCoverageElbow`
- `QStem`
- `QStemElbow`
- `LcaNoiseElbow`
- `LcaNoiseElbowNoTriangle`
- `MedianOfElbows`
- `MeanOfElbows`
- `Stability`
- `NormalizedStability`
- **Customization:** Users can customize the framework by selecting from the available similarity trees, $(k,z)$-
hierarchies, and partitioning functions.
- E.g., `DCTree` with $k$-means ($z=2$)-hierarchy and the `Elbow` partitioning method.
```python
from SHiP import SHiP
# Build the `DCTree`
ship = SHiP(data=data_points, treeType="DCTree")
# Extract the clustering from the $k$-median hierarchy and the `Elbow` partitioning method
labels = ship.fit_predict(hierarchy=2, partitioningMethod="Elbow")
```
## Installation
### Stable Version
The current stable version can be installed by the following command:<br/>
`pip install SHiP-framework` (coming soon)
Note that a gcc compiler is required for installation.
Therefore, in case of an installation error, make sure that:
- Windows: [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/de/visual-cpp-build-tools/) is installed
- Linux/Mac: Python dev is installed (e.g., by running `apt-get install python-dev` - the exact command may differ depending on the linux distribution)
The error messages may look like this:
```
error: command 'gcc' failed: No such file or directory
Could not build wheels for SHiP-framework, which is required to install pyproject.toml-based projects
Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools
```
### Development Version
The current development version can be installed directly from git by executing:<br/>
`sudo pip install git+https://github.com/pasiweber/SHiP-framework.git`
Alternatively, clone the repository, go to the root directory and execute:<br/>
`pip install .`
## Code Example
```python
from SHiP import SHiP
ship = SHiP(data=data, treeType="DCTree")
# or to load a saved tree
ship = SHiP(data=data, treeType="LoadTree", config={"json_tree_filepath": "<file_path>"})
# or additionally specify the tree_type of the loaded tree by adding {"tree_type": "DCTree"}
ship.hierarchy = 0
ship.partitioningMethod = "K"
labels = ship.fit_predict()
# or in one line
labels = ship.fit_predict(hierarchy = 1, partitioningMethod = "Elbow")
# optional: save the current computed tree
json = ship.get_tree().to_json()
```
## Results
Our framework achieves the following performance:
Dataset | DC-0-Stab. | DC-1-MoE | DC-2-Elb. | CT-0-Stab. | CT-1-MoE | CT-2-Elb. | $k$-means | SCAR | Ward | AMD-DBSCAN | DPC |
|-|-|-|-|-|-|-|-|-|-|-|-|
| Boxes | 90.1 | **99.3** | _97.9_ | 2.6 | 42.1 ± 4.7 | 24.2 ± 1.6 | 93.5 ± 4.3 | 0.1 ± 0.1 | 95.8 | 63.9 | 25.9 |
| D31 | 79.7 | 42.7 | 82.9 | 46.5 ± 1.8 | 62.0 ± 5.4 | 67.7 ± 3.2 | **92.0 ± 2.7** | 41.7 ± 5.4 | **92.0** | _86.4_ | 18.5 |
| airway | 38.0 | **65.9** | 58.8 | 0.8 | 18.2 ± 2.4 | 12.0 ± 1.4 | 39.9 ± 2.0 | -0.9 ± 0.5 | 43.7 | 31.7 | _65.1_ |
| lactate | 41.0 | 41.0 | _67.5_ | 0.1 | 4.1 ± 0.6 | 1.7 ± 0.2 | 28.6 ± 1.1 | 1.5 ± 1.0 | 27.7 | **71.5** | 0.0 |
| HAR | 30.0 | 46.9 | **52.8** | 14.7 ± 8.8 | 14.2 ± 4.7 | 9.6 ± 2.2 | 46.0 ± 4.5 | 5.5 ± 3.2 | _49.1_ | 0.0 | 33.2 |
| letterrec. | 12.1 | _16.6_ | **17.9** | 5.8 ± 0.2 | 7.2 ± 0.6 | 6.2 ± 0.3 | 12.9 ± 0.6 | 0.4 ± 0.1 | 14.7 ± 0.9 | 7.9 | 0.0 |
| PenDigits | 66.4 | _73.1_ | **75.4** | 8.0 ± 0.8 | 12.0 ± 0.6 | 8.9 ± 0.5 | 55.3 ± 3.2 | 0.9 ± 0.3 | 55.2 | 55.6 | 28.8 ± 1.1 |
| COIL20 | **81.2** | _72.8_ | 72.6 | 46.4 ± 4.4 | 46.6 ± 2.1 | 47.7 ± 2.0 | 58.2 ± 2.8 | 33.5 ± 2.0 | 68.6 | 39.2 | 35.9 ± 0.1 |
| COIL100 | **80.1** | 66.8 | _70.0_ | 44.6 ± 4.2 | 46.6 ± 1.5 | 50.1 ± 1.2 | 56.1 ± 1.4 | 16.7 ± 0.8 | 61.4 | 14.2 | 0.2 |
| cmu_faces | 60.2 | 56.6 | **66.5** | 8.6 ± 3.1 | 37.1 ± 4.1 | 34.2 ± 2.1 | 53.2 ± 4.7 | 38.5 ± 2.9 | _61.6_ | 0.7 | 0.6 |
| OptDigits | 55.3 | **77.0** | **77.0** | 40.9 ± 3.5 | 20.9 ± 2.3 | 18.1 ± 2.4 | 61.3 ± 6.6 | 14.4 ± 4.1 | _74.6 ± 2.4_ | 63.2 | 0.0 |
| USPS | 33.7 | 29.3 | 29.3 | 12.0 ± 1.7 | 8.7 ± 1.0 | 11.2 ± 1.5 | _52.3 ± 1.7_ | 2.9 ± 0.9 | **63.9** | 0.0 | 21.0 |
| MNIST | 19.7 | 41.7 | _46.0_ | 11.1 ± 1.7 | 5.4 ± 0.6 | 5.4 ± 0.6 | 36.9 ± 1.0 | 1.3 ± 0.4 | **52.7** | 0.0 | - |
- `DC = DCTree`, `CT = CoverTree`
- `Stab. = Stability`, `MoE = MedianOfElbows`, `Elb. = Elbow`
- Competitors: [k-means](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html), [SCAR](https://github.com/SpectralClusteringAcceleratedRobust/SCAR), [Ward](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html), [AMD-DBSCAN](https://github.com/AlexandreWANG915/AMD-DBSCAN), [DPC](https://github.com/colinwke/dpca)
## License
The project is licensed under the BSD 3-Clause License (see [LICENSE.txt](https://github.com/pasiweber/SHiP-framework/blob/main/LICENSE.txt)).
## References
[1] [Connecting the Dots -- Density-Connectivity Distance unifies DBSCAN, k-Center and Spectral Clustering](https://epub.ub.uni-muenchen.de/123737/)
<br>
[2] [HST+: An Efficient Index for Embedding Arbitrary Metric Spaces](https://ieeexplore.ieee.org/document/9458703/)
([Github](https://github.com/yzengal/ICDE21-HST))
<br>
[3] [mlpack 4: a fast, header-only C++ machine learning library](https://joss.theoj.org/papers/10.21105/joss.05026)
([Github](https://github.com/mlpack/mlpack))
Raw data
{
"_id": null,
"home_page": null,
"name": "SHiP-framework",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "clustering, hierarchical clustering, hierarchical clustering framework, agglomerative clustering, similarity, hierarchy, partitioning, SHiP framework, SHiP, Python, C++, pybind11",
"author": "Pascal Weber",
"author_email": "Pascal Weber <pasi.weber@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/c6/67/4d6002a8c7306ccf28f952093752f066ff293e1100d746baf254a28ee5f0/ship_framework-0.1.2.tar.gz",
"platform": null,
"description": "# Similarity-Hierarchical-Partitioning (SHiP) Clustering Framework\n[](https://pypi.org/project/SHiP-framework/)\n[](https://github.com/pasiweber/SHiP-framework/actions/workflows/publish_to_pypi.yml)\n[](https://SHiP-framework.readthedocs.io/en/)\n\nThis repository is the official implementation of the Similarity-Hierarchical-Partitioning (SHiP) clustering framework proposed in [Ultrametric Cluster Hierarchies: I Want `em All!](https://github.com/pasiweber/SHiP-framework/) This framework provides a comprehensive approach to clustering by leveraging similarity trees, $(k,z)$-hierarchies, and various partitioning objective functions. \n\nThe whole project is implemented in C++ and Python bindings enable the usage within Python.\n\n\n## Overview\nThe SHiP framework operates in three main stages:\n[](https://github.com/pasiweber/SHiP-framework/)\n\n1. **Similarity Tree Construction:** A similarity tree is built for the given dataset. This tree represents the relationships and proximities between data points. Note that the default constructed tree corresponds to the $k$-center hierarchy (Section 3 in the paper).\n2. **$(k,z)$-Hierarchy Construction:** Using the similarity tree, a $(k,z)$-hierarchy can be constructed. These hierarchies correlate to common center based clustering methods, as e.g., $k$-median or $k$-means (Section 4).\n3. **Partitioning:** Finally, the data is partitioned based on the constructed hierarchy and a user-selected partitioning objective function (Section 5).\n\n\n## Features\n- **Similarity Trees:** The package provides a set of similarity/ultrametric tree implementations:\n - `DCTree` [[1]](#references)\n - `HST` [[2]](#references)\n - `CoverTree` [[3]](#references)\n - `KDTree` [[3]](#references)\n - `MeanSplitKDTree` [[3]](#references)\n - `BallTree` [[3]](#references)\n - `MeanSplitBallTree` [[3]](#references)\n - `RPTree` [[3]](#references)\n - `MaxRPTree` [[3]](#references)\n - `UBTree` [[3]](#references)\n - `RTree` [[3]](#references)\n - `RStarTree` [[3]](#references)\n - `XTree` [[3]](#references)\n - `HilbertRTree` [[3]](#references)\n - `RPlusTree` [[3]](#references)\n - `RPlusPlusTree` [[3]](#references)\n - Or use `LoadTree` to load a precomputed tree\n\n\n- **$(k,z)$-Hierarchies:** It supports all possible $(k,z)$-hierarchies, allowing flexibility in choosing the most suitable hierarchy for a given dataset.\n - $z = 0$ → $k$-center (actually in theory: $z = \u221e$, but in this implementation we use 0 for $\u221e$)\n - $z = 1$ → $k$-median\n - $z = 2$ → $k$-means\n - ...\n\n- **Partitioning Functions:** A wide range of partitioning functions are available, enabling users to select the most appropriate function based on their specific needs:\n - `K`\n - `Elbow`\n - `Threshold`\n - `ThresholdElbow`\n - `QCoverage`\n - `QCoverageElbow`\n - `QStem`\n - `QStemElbow`\n - `LcaNoiseElbow`\n - `LcaNoiseElbowNoTriangle`\n - `MedianOfElbows`\n - `MeanOfElbows`\n - `Stability`\n - `NormalizedStability`\n\n- **Customization:** Users can customize the framework by selecting from the available similarity trees, $(k,z)$-\nhierarchies, and partitioning functions.\n - E.g., `DCTree` with $k$-means ($z=2$)-hierarchy and the `Elbow` partitioning method.\n ```python\n from SHiP import SHiP\n\n # Build the `DCTree`\n ship = SHiP(data=data_points, treeType=\"DCTree\")\n # Extract the clustering from the $k$-median hierarchy and the `Elbow` partitioning method\n labels = ship.fit_predict(hierarchy=2, partitioningMethod=\"Elbow\")\n ```\n\n\n## Installation\n### Stable Version\nThe current stable version can be installed by the following command:<br/>\n`pip install SHiP-framework` (coming soon)\n\nNote that a gcc compiler is required for installation.\nTherefore, in case of an installation error, make sure that:\n- Windows: [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/de/visual-cpp-build-tools/) is installed\n- Linux/Mac: Python dev is installed (e.g., by running `apt-get install python-dev` - the exact command may differ depending on the linux distribution)\n\nThe error messages may look like this:\n```\nerror: command 'gcc' failed: No such file or directory\nCould not build wheels for SHiP-framework, which is required to install pyproject.toml-based projects\nMicrosoft Visual C++ 14.0 or greater is required. Get it with \"Microsoft C++ Build Tools\n```\n\n\n### Development Version\nThe current development version can be installed directly from git by executing:<br/>\n`sudo pip install git+https://github.com/pasiweber/SHiP-framework.git`\n\nAlternatively, clone the repository, go to the root directory and execute:<br/>\n`pip install .`\n\n\n## Code Example\n```python\nfrom SHiP import SHiP\n\nship = SHiP(data=data, treeType=\"DCTree\")\n\n# or to load a saved tree\nship = SHiP(data=data, treeType=\"LoadTree\", config={\"json_tree_filepath\": \"<file_path>\"}) \n# or additionally specify the tree_type of the loaded tree by adding {\"tree_type\": \"DCTree\"}\n\nship.hierarchy = 0\nship.partitioningMethod = \"K\"\nlabels = ship.fit_predict()\n\n# or in one line\nlabels = ship.fit_predict(hierarchy = 1, partitioningMethod = \"Elbow\")\n\n# optional: save the current computed tree\njson = ship.get_tree().to_json()\n```\n\n\n## Results\nOur framework achieves the following performance:\n\nDataset | DC-0-Stab. | DC-1-MoE | DC-2-Elb. | CT-0-Stab. | CT-1-MoE | CT-2-Elb. | $k$-means | SCAR | Ward | AMD-DBSCAN | DPC |\n|-|-|-|-|-|-|-|-|-|-|-|-|\n| Boxes | 90.1 | **99.3** | _97.9_ | 2.6 | 42.1 \u00b1 4.7 | 24.2 \u00b1 1.6 | 93.5 \u00b1 4.3 | 0.1 \u00b1 0.1 | 95.8 | 63.9 | 25.9 |\n| D31 | 79.7 | 42.7 | 82.9 | 46.5 \u00b1 1.8 | 62.0 \u00b1 5.4 | 67.7 \u00b1 3.2 | **92.0 \u00b1 2.7** | 41.7 \u00b1 5.4 | **92.0** | _86.4_ | 18.5 |\n| airway | 38.0 | **65.9** | 58.8 | 0.8 | 18.2 \u00b1 2.4 | 12.0 \u00b1 1.4 | 39.9 \u00b1 2.0 | -0.9 \u00b1 0.5 | 43.7 | 31.7 | _65.1_ |\n| lactate | 41.0 | 41.0 | _67.5_ | 0.1 | 4.1 \u00b1 0.6 | 1.7 \u00b1 0.2 | 28.6 \u00b1 1.1 | 1.5 \u00b1 1.0 | 27.7 | **71.5** | 0.0 |\n| HAR | 30.0 | 46.9 | **52.8** | 14.7 \u00b1 8.8 | 14.2 \u00b1 4.7 | 9.6 \u00b1 2.2 | 46.0 \u00b1 4.5 | 5.5 \u00b1 3.2 | _49.1_ | 0.0 | 33.2 |\n| letterrec. | 12.1 | _16.6_ | **17.9** | 5.8 \u00b1 0.2 | 7.2 \u00b1 0.6 | 6.2 \u00b1 0.3 | 12.9 \u00b1 0.6 | 0.4 \u00b1 0.1 | 14.7 \u00b1 0.9 | 7.9 | 0.0 |\n| PenDigits | 66.4 | _73.1_ | **75.4** | 8.0 \u00b1 0.8 | 12.0 \u00b1 0.6 | 8.9 \u00b1 0.5 | 55.3 \u00b1 3.2 | 0.9 \u00b1 0.3 | 55.2 | 55.6 | 28.8 \u00b1 1.1 |\n| COIL20 | **81.2** | _72.8_ | 72.6 | 46.4 \u00b1 4.4 | 46.6 \u00b1 2.1 | 47.7 \u00b1 2.0 | 58.2 \u00b1 2.8 | 33.5 \u00b1 2.0 | 68.6 | 39.2 | 35.9 \u00b1 0.1 |\n| COIL100 | **80.1** | 66.8 | _70.0_ | 44.6 \u00b1 4.2 | 46.6 \u00b1 1.5 | 50.1 \u00b1 1.2 | 56.1 \u00b1 1.4 | 16.7 \u00b1 0.8 | 61.4 | 14.2 | 0.2 |\n| cmu_faces | 60.2 | 56.6 | **66.5** | 8.6 \u00b1 3.1 | 37.1 \u00b1 4.1 | 34.2 \u00b1 2.1 | 53.2 \u00b1 4.7 | 38.5 \u00b1 2.9 | _61.6_ | 0.7 | 0.6 |\n| OptDigits | 55.3 | **77.0** | **77.0** | 40.9 \u00b1 3.5 | 20.9 \u00b1 2.3 | 18.1 \u00b1 2.4 | 61.3 \u00b1 6.6 | 14.4 \u00b1 4.1 | _74.6 \u00b1 2.4_ | 63.2 | 0.0 |\n| USPS | 33.7 | 29.3 | 29.3 | 12.0 \u00b1 1.7 | 8.7 \u00b1 1.0 | 11.2 \u00b1 1.5 | _52.3 \u00b1 1.7_ | 2.9 \u00b1 0.9 | **63.9** | 0.0 | 21.0 |\n| MNIST | 19.7 | 41.7 | _46.0_ | 11.1 \u00b1 1.7 | 5.4 \u00b1 0.6 | 5.4 \u00b1 0.6 | 36.9 \u00b1 1.0 | 1.3 \u00b1 0.4 | **52.7** | 0.0 | - |\n\n- `DC = DCTree`, `CT = CoverTree`\n- `Stab. = Stability`, `MoE = MedianOfElbows`, `Elb. = Elbow`\n- Competitors: [k-means](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html), [SCAR](https://github.com/SpectralClusteringAcceleratedRobust/SCAR), [Ward](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html), [AMD-DBSCAN](https://github.com/AlexandreWANG915/AMD-DBSCAN), [DPC](https://github.com/colinwke/dpca)\n\n\n## License\nThe project is licensed under the BSD 3-Clause License (see [LICENSE.txt](https://github.com/pasiweber/SHiP-framework/blob/main/LICENSE.txt)).\n\n\n## References\n[1] [Connecting the Dots -- Density-Connectivity Distance unifies DBSCAN, k-Center and Spectral Clustering](https://epub.ub.uni-muenchen.de/123737/)\n<br>\n[2] [HST+: An Efficient Index for Embedding Arbitrary Metric Spaces](https://ieeexplore.ieee.org/document/9458703/)\n([Github](https://github.com/yzengal/ICDE21-HST))\n<br>\n[3] [mlpack 4: a fast, header-only C++ machine learning library](https://joss.theoj.org/papers/10.21105/joss.05026) \n([Github](https://github.com/mlpack/mlpack))\n",
"bugtrack_url": null,
"license": "BSD-3-Clause License",
"summary": "Center-based hierarchical clustering framework using 3 steps: compute a Similarity, build an Hierarchy, and lastly extract a clustering using a Partitioning method.",
"version": "0.1.2",
"project_urls": {
"Documentation": "https://SHiP-framework.readthedocs.io/en/",
"Homepage": "https://github.com/pasiweber/SHiP-framework",
"Issues": "https://github.com/pasiweber/SHiP-framework/issues",
"Repository": "https://github.com/pasiweber/SHiP-framework"
},
"split_keywords": [
"clustering",
" hierarchical clustering",
" hierarchical clustering framework",
" agglomerative clustering",
" similarity",
" hierarchy",
" partitioning",
" ship framework",
" ship",
" python",
" c++",
" pybind11"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "334bc3171736067113abfaaeebf651c4de7374097d8c1b57408651ff5fb0160a",
"md5": "800aaa324d1c253c9002a3df11c3b48c",
"sha256": "cce99da094d1012a9280bcf91c99bd1cfc468bc66833e0182c87dd5f4d887a50"
},
"downloads": -1,
"filename": "ship_framework-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "800aaa324d1c253c9002a3df11c3b48c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 962835,
"upload_time": "2025-10-23T16:23:29",
"upload_time_iso_8601": "2025-10-23T16:23:29.635804Z",
"url": "https://files.pythonhosted.org/packages/33/4b/c3171736067113abfaaeebf651c4de7374097d8c1b57408651ff5fb0160a/ship_framework-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "edd385bc3d4e87d40e7c48978bdc67351e07f832aa722d4b52b844476a19e775",
"md5": "e3ce7b18c1e3cc1bae363368f7ea3cb7",
"sha256": "022d173cabbeffb147cd687dd96129152e56229d636b15e53f3f10ef86f95377"
},
"downloads": -1,
"filename": "ship_framework-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "e3ce7b18c1e3cc1bae363368f7ea3cb7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 963229,
"upload_time": "2025-10-23T16:23:31",
"upload_time_iso_8601": "2025-10-23T16:23:31.226996Z",
"url": "https://files.pythonhosted.org/packages/ed/d3/85bc3d4e87d40e7c48978bdc67351e07f832aa722d4b52b844476a19e775/ship_framework-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b41fa5ce3e3748cec4413f97c1b11b439fc4703ab1bf892fbc81d87514f00aa7",
"md5": "0969cb13c1982e0838479311084f142a",
"sha256": "42ceb2929f87b67791a9758841a988762ddc0d659c2a7c840ce0456c193b05f6"
},
"downloads": -1,
"filename": "ship_framework-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "0969cb13c1982e0838479311084f142a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 967455,
"upload_time": "2025-10-23T16:23:32",
"upload_time_iso_8601": "2025-10-23T16:23:32.694224Z",
"url": "https://files.pythonhosted.org/packages/b4/1f/a5ce3e3748cec4413f97c1b11b439fc4703ab1bf892fbc81d87514f00aa7/ship_framework-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "11108aac587f1dfa9cec0adf33c49418d16ffdfcb7c98770df63ea49c4886fd4",
"md5": "154c497672b430003cb36337bfad9581",
"sha256": "4b62ae8d8ffcc92d06ac21dce68c1ce70401849f2a265d548d6b746175fc757c"
},
"downloads": -1,
"filename": "ship_framework-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "154c497672b430003cb36337bfad9581",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 967673,
"upload_time": "2025-10-23T16:23:34",
"upload_time_iso_8601": "2025-10-23T16:23:34.953830Z",
"url": "https://files.pythonhosted.org/packages/11/10/8aac587f1dfa9cec0adf33c49418d16ffdfcb7c98770df63ea49c4886fd4/ship_framework-0.1.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9b4e3fcff1f6043a0130ea82e2dc6db2f017f694974867f89e0db31e8052b5e5",
"md5": "e87d3ae68591c5af171e8bb93296e661",
"sha256": "2509d2775316621dccf2d68e5c4ac394b07931f90ef2d43bbdcea15f28993542"
},
"downloads": -1,
"filename": "ship_framework-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "e87d3ae68591c5af171e8bb93296e661",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.9",
"size": 968357,
"upload_time": "2025-10-23T16:23:36",
"upload_time_iso_8601": "2025-10-23T16:23:36.677013Z",
"url": "https://files.pythonhosted.org/packages/9b/4e/3fcff1f6043a0130ea82e2dc6db2f017f694974867f89e0db31e8052b5e5/ship_framework-0.1.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d761c942980710ac8ee72c0aae4460dbf53d63cfe28de380a3fe86a7a77fa266",
"md5": "23c84495acaca0b4b66764034e0a0455",
"sha256": "22775cb2c4dcdc8634e62afac774b2a5a6a54c3a8470aa550a5f2f9f61b100bc"
},
"downloads": -1,
"filename": "ship_framework-0.1.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "23c84495acaca0b4b66764034e0a0455",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.9",
"size": 973668,
"upload_time": "2025-10-23T16:23:38",
"upload_time_iso_8601": "2025-10-23T16:23:38.085718Z",
"url": "https://files.pythonhosted.org/packages/d7/61/c942980710ac8ee72c0aae4460dbf53d63cfe28de380a3fe86a7a77fa266/ship_framework-0.1.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d8e65c16be2802e1869d6ce30515df8305bb848f6f92ccc5156ffef55e0ff80a",
"md5": "4d9a051f2dbba8f8a847c6e77ae171dd",
"sha256": "f47c2115e0201485776487a10cb8bb95469b0842216e4f1676d8be8676e4f2c4"
},
"downloads": -1,
"filename": "ship_framework-0.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "4d9a051f2dbba8f8a847c6e77ae171dd",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 963001,
"upload_time": "2025-10-23T16:23:39",
"upload_time_iso_8601": "2025-10-23T16:23:39.353306Z",
"url": "https://files.pythonhosted.org/packages/d8/e6/5c16be2802e1869d6ce30515df8305bb848f6f92ccc5156ffef55e0ff80a/ship_framework-0.1.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c6674d6002a8c7306ccf28f952093752f066ff293e1100d746baf254a28ee5f0",
"md5": "d10a675c6b40d5711c5c12aa182c5ed0",
"sha256": "3f5d7e870ebb010376a08202b82bfea203d869deda597ba594d0f171b79f80dc"
},
"downloads": -1,
"filename": "ship_framework-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "d10a675c6b40d5711c5c12aa182c5ed0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 23589789,
"upload_time": "2025-10-23T16:23:41",
"upload_time_iso_8601": "2025-10-23T16:23:41.129055Z",
"url": "https://files.pythonhosted.org/packages/c6/67/4d6002a8c7306ccf28f952093752f066ff293e1100d746baf254a28ee5f0/ship_framework-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-23 16:23:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pasiweber",
"github_project": "SHiP-framework",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ship-framework"
}