Name | multipers JSON |
Version |
2.2.1
JSON |
| download |
home_page | None |
Summary | Multiparameter Topological Persistence for Machine Learning |
upload_time | 2024-11-05 20:08:43 |
maintainer | None |
docs_url | None |
author | Hannah Schreiber |
requires_python | >=3.10 |
license | MIT License Copyright (c) 2023 David Loiseaux Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
keywords |
tda
persistence
multiparameter
sklearn
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# multipers : Multiparameter Persistence for Machine Learning
[![Build, test](https://github.com/DavidLapous/multipers/actions/workflows/python_PR.yml/badge.svg)](https://github.com/DavidLapous/multipers/actions/workflows/python_PR.yml)
[![PyPI](https://img.shields.io/pypi/v/multipers?color=green)](https://pypi.org/project/multipers)
[![Downloads](https://static.pepy.tech/badge/multipers)](https://pepy.tech/project/multipers)
[Documentation](https://davidlapous.github.io/multipers/index.html)
<br>
Scikit-style PyTorch-autodiff multiparameter persistent homology python library.
This library aims to provide easy to use and performant strategies for applied multiparameter topology.
<br> Meant to be integrated in [the Gudhi library](https://gudhi.inria.fr/).
## Multiparameter Persistence
This library allows computing several representations from "geometrical datasets", e.g., point clouds, images, graphs, that have multiple scales. A well known example is the following one.
<br>
Pick a point cloud that has diffuse noise, or on which the sampling measure has some interesting properties, e.g., in the following example the measure has three modes.
<br>
Now define a two parameter grid (filtration) of topological spaces (on the left) from a point cloud $P$ on which we will compute the persistence of some topological structures (homological cycles).
This filtration $X$, indexed over a radius parameter $r$ and a codensity parameter $s$ is defined as follows
$$ X_{r,s} = \bigcup_{x \in P, \, \mathrm{density}(x) \ge s} B(x,r) = \lbrace x\in \mathbb R^2 \mid \exists p \in P, \, \mathrm{density}(p) \ge s \text{ and } d(x,p) \le r \rbrace$$
The green shape on the left represents the lifetime of the biggest annulus. On the right, each cycle appearing on the left gets a colored shape (the color is only a label) and the shape of this colored shape represents the lifetime of this cycle.
<br>
In our case, the big green shape on the left corresponds to the largest green shape appearing on the right, recovering the structure of the annulus here.
![Alt text](docs/1.png)
The **magic** part is that we never had to choose any parameter to remove the noise in this construction, but the annulus still naturally appears!
<br>A more striking example is the following one.
Using the same constructions, we can identify topological structure, and their size, in a parameter free approach, even though the majority of the sampling measure's mass is noise.
<br> In this example, the lifetime shape associated to each cycle can be identified from
- Their radius : the smaller cycle will naturally live more this shape will appear on the "left" (smaller radius)
- Their concentration : Cycles having more concentration will appear lower than others (smaller co-density)
Notice that this construction is also very stable w.r.t. the noise. The more noise is added the smaller the "rainbow strip" is, and the more the "large shape" are visible.
![alt text](docs/2.png)
We also provide several other descriptors, as well as associated Machine Learning technics and pipelines. In the following example from the same dataset, the *Hilbert decomposition signed measure*, the *Euler decomposition signed measure* and the *rank decomposition signed measure*.
![alt text](docs/3.png)
A non-exhaustive list of features can be found in the **Features** section, and in the [documentation](https://davidlapous.github.io/multipers/index.html).
## Quick start
This library is available [on PyPI](https://pypi.org/project/multipers/) for Linux and macOS, via
```sh
pip install multipers
```
We recommend Windows user to use [WSL](https://learn.microsoft.com/en-us/windows/wsl/).
<br>
A documentation and building instructions are available [here](https://davidlapous.github.io/multipers/contributions.html).
## Features, and linked projects
This library features a bunch of different functions and helpers. See below for a non-exhaustive list.
<br>Filled box refers to implemented or interfaced code.
- [x] [[Multiparameter Module Approximation]](https://arxiv.org/abs/2206.02026) provides the multiparameter simplicial structure, as well as technics for approximating modules, via interval-decomposable modules. It is also very useful for visualization.
- [x] [[Stable Vectorization of Multiparameter Persistent Homology using Signed Barcodes as Measures, NeurIPS2023]](https://proceedings.neurips.cc/paper_files/paper/2023/hash/d75c474bc01735929a1fab5d0de3b189-Abstract-Conference.html) provides fast representations of multiparameter persistence modules, by using their signed barcodes decompositions encoded into signed measures. Implemented decompositions : Euler surfaces, Hilbert function, rank invariant (i.e. rectangles). It also provides representation technics for Machine Learning, i.e., Sliced Wasserstein kernels, and Vectorizations.
- [x] [[A Framework for Fast and Stable Representations of Multiparameter Persistent Homology Decompositions, NeurIPS2023]](https://proceedings.neurips.cc/paper_files/paper/2023/hash/702b67152ec4435795f681865b67999c-Abstract-Conference.html) Provides a vectorization framework for interval decomposable modules, for Machine Learning. Currently implemented as an extension of MMA.
- [x] [[Differentiability and Optimization of Multiparameter Persistent Homology, ICML2024]](https://proceedings.mlr.press/v235/scoccola24a.html) An approach to compute a (clarke) gradient for any reasonable multiparameter persistent invariant. Currently, any `multipers` computation is auto-differentiable using this strategy, provided that the input are pytorch gradient capable tensor.
- [x] [[Multiparameter Persistence Landscapes, JMLR]](https://jmlr.org/papers/v21/19-054.html) A vectorization technic for multiparameter persistence modules.
- [x] [[Filtration-Domination in Bifiltered Graphs, ALENEX2023]](https://doi.org/10.1137/1.9781611977561.ch3) Allows for 2-parameter edge collapses for 1-critical clique complexes. Very useful to speed up, e.g., Rips-Codensity bifiltrations.
- [x] [[Chunk Reduction for Multi-Parameter Persistent Homology, SOCG2019]](https://doi.org/10.4230/LIPIcs.SoCG.2019.37) Multi-filtration preprocessing algorithm for homology computations.
- [x] [[Computing Minimal Presentations and Bigraded Betti Numbers of 2-Parameter Persistent Homology, JAAG]](https://doi.org/10.1137/20M1388425) Minimal presentation of multiparameter persistence modules, using [mpfree](https://bitbucket.org/mkerber/mpfree/src/master/). Hilbert, Rank Decomposition Signed Measures, and MMA decompositions can be computed using the mpfree backend.
- [x] [[Delaunay Bifiltrations of Functions on Point Clouds, SODA2024]](https://epubs.siam.org/doi/10.1137/1.9781611977912.173) Provides an alternative to function rips bifiltrations, using Delaunay complexes. Very good alternative to Rips-Density like bifiltrations.
- [x] [[Rivet]](https://github.com/rivetTDA/rivet) Interactive two parameter persistence
- [x] [[Kernel Operations on the GPU, with Autodiff, without Memory Overflows, JMLR]](http://jmlr.org/papers/v22/20-275.html) Although not linked, at first glance, to persistence in any way, this library allows computing blazingly fast signed measures convolutions (and more!) with custom kernels.
- [ ] [Backend only] [[Projected distances for multi-parameter persistence modules]](https://arxiv.org/abs/2206.08818) Provides a strategy to estimate the convolution distance between multiparameter persistence module using projected barcodes. Implementation is a WIP.
- [ ] [Partial, and experimental] [[Efficient Two-Parameter Persistence Computation via Cohomology, SoCG2023]](https://doi.org/10.4230/LIPIcs.SoCG.2023.15) Minimal presentations for 2-parameter persistence algorithm.
If I missed something, or you want to add something, feel free to open an issue.
## Authors
[David Loiseaux](https://www-sop.inria.fr/members/David.Loiseaux/index.html),<br>
[Hannah Schreiber](https://github.com/hschreiber) (Persistence backend code),<br>
[Luis Scoccola](https://luisscoccola.com/)
(Möbius inversion in python, degree-rips using [persistable](https://github.com/LuisScoccola/persistable) and [RIVET](https://github.com/rivetTDA/rivet/)),<br>
[Mathieu Carrière](https://www-sop.inria.fr/members/Mathieu.Carriere/) (Sliced Wasserstein)<br>
## Contributions
Feel free to contribute, report a bug on a pipeline, or ask for documentation by opening an issue.<br>
In particular, if you have a nice example or application that is not taken care in the documentation (see the ./docs/notebooks/ folder), please contact me to add it there.
Raw data
{
"_id": null,
"home_page": null,
"name": "multipers",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "David Loiseaux <david.lapous@proton.me>",
"keywords": "TDA, Persistence, Multiparameter, sklearn",
"author": "Hannah Schreiber",
"author_email": "David Loiseaux <david.lapous@proton.me>",
"download_url": "https://files.pythonhosted.org/packages/61/f1/845c7385604b9097454f6956c5ba2ce21da40d1265dc0e32c2e9eca95300/multipers-2.2.1.tar.gz",
"platform": null,
"description": "# multipers : Multiparameter Persistence for Machine Learning\n[![Build, test](https://github.com/DavidLapous/multipers/actions/workflows/python_PR.yml/badge.svg)](https://github.com/DavidLapous/multipers/actions/workflows/python_PR.yml)\n[![PyPI](https://img.shields.io/pypi/v/multipers?color=green)](https://pypi.org/project/multipers)\n[![Downloads](https://static.pepy.tech/badge/multipers)](https://pepy.tech/project/multipers)\n[Documentation](https://davidlapous.github.io/multipers/index.html)\n<br>\nScikit-style PyTorch-autodiff multiparameter persistent homology python library. \nThis library aims to provide easy to use and performant strategies for applied multiparameter topology.\n<br> Meant to be integrated in [the Gudhi library](https://gudhi.inria.fr/).\n\n## Multiparameter Persistence\nThis library allows computing several representations from \"geometrical datasets\", e.g., point clouds, images, graphs, that have multiple scales. A well known example is the following one. \n<br>\nPick a point cloud that has diffuse noise, or on which the sampling measure has some interesting properties, e.g., in the following example the measure has three modes.\n<br>\nNow define a two parameter grid (filtration) of topological spaces (on the left) from a point cloud $P$ on which we will compute the persistence of some topological structures (homological cycles).\nThis filtration $X$, indexed over a radius parameter $r$ and a codensity parameter $s$ is defined as follows\n\n$$ X_{r,s} = \\bigcup_{x \\in P, \\, \\mathrm{density}(x) \\ge s} B(x,r) = \\lbrace x\\in \\mathbb R^2 \\mid \\exists p \\in P, \\, \\mathrm{density}(p) \\ge s \\text{ and } d(x,p) \\le r \\rbrace$$\n\nThe green shape on the left represents the lifetime of the biggest annulus. On the right, each cycle appearing on the left gets a colored shape (the color is only a label) and the shape of this colored shape represents the lifetime of this cycle.\n<br>\nIn our case, the big green shape on the left corresponds to the largest green shape appearing on the right, recovering the structure of the annulus here.\n![Alt text](docs/1.png)\n\nThe **magic** part is that we never had to choose any parameter to remove the noise in this construction, but the annulus still naturally appears!\n<br>A more striking example is the following one.\nUsing the same constructions, we can identify topological structure, and their size, in a parameter free approach, even though the majority of the sampling measure's mass is noise.\n<br> In this example, the lifetime shape associated to each cycle can be identified from \n - Their radius : the smaller cycle will naturally live more this shape will appear on the \"left\" (smaller radius)\n - Their concentration : Cycles having more concentration will appear lower than others (smaller co-density)\n\nNotice that this construction is also very stable w.r.t. the noise. The more noise is added the smaller the \"rainbow strip\" is, and the more the \"large shape\" are visible.\n![alt text](docs/2.png)\nWe also provide several other descriptors, as well as associated Machine Learning technics and pipelines. In the following example from the same dataset, the *Hilbert decomposition signed measure*, the *Euler decomposition signed measure* and the *rank decomposition signed measure*.\n![alt text](docs/3.png)\n\n\nA non-exhaustive list of features can be found in the **Features** section, and in the [documentation](https://davidlapous.github.io/multipers/index.html).\n## Quick start\n\n\nThis library is available [on PyPI](https://pypi.org/project/multipers/) for Linux and macOS, via\n```sh\npip install multipers\n```\nWe recommend Windows user to use [WSL](https://learn.microsoft.com/en-us/windows/wsl/). \n<br>\nA documentation and building instructions are available [here](https://davidlapous.github.io/multipers/contributions.html).\n\n## Features, and linked projects\nThis library features a bunch of different functions and helpers. See below for a non-exhaustive list.\n<br>Filled box refers to implemented or interfaced code.\n - [x] [[Multiparameter Module Approximation]](https://arxiv.org/abs/2206.02026) provides the multiparameter simplicial structure, as well as technics for approximating modules, via interval-decomposable modules. It is also very useful for visualization.\n - [x] [[Stable Vectorization of Multiparameter Persistent Homology using Signed Barcodes as Measures, NeurIPS2023]](https://proceedings.neurips.cc/paper_files/paper/2023/hash/d75c474bc01735929a1fab5d0de3b189-Abstract-Conference.html) provides fast representations of multiparameter persistence modules, by using their signed barcodes decompositions encoded into signed measures. Implemented decompositions : Euler surfaces, Hilbert function, rank invariant (i.e. rectangles). It also provides representation technics for Machine Learning, i.e., Sliced Wasserstein kernels, and Vectorizations.\n - [x] [[A Framework for Fast and Stable Representations of Multiparameter Persistent Homology Decompositions, NeurIPS2023]](https://proceedings.neurips.cc/paper_files/paper/2023/hash/702b67152ec4435795f681865b67999c-Abstract-Conference.html) Provides a vectorization framework for interval decomposable modules, for Machine Learning. Currently implemented as an extension of MMA.\n - [x] [[Differentiability and Optimization of Multiparameter Persistent Homology, ICML2024]](https://proceedings.mlr.press/v235/scoccola24a.html) An approach to compute a (clarke) gradient for any reasonable multiparameter persistent invariant. Currently, any `multipers` computation is auto-differentiable using this strategy, provided that the input are pytorch gradient capable tensor.\n - [x] [[Multiparameter Persistence Landscapes, JMLR]](https://jmlr.org/papers/v21/19-054.html) A vectorization technic for multiparameter persistence modules.\n - [x] [[Filtration-Domination in Bifiltered Graphs, ALENEX2023]](https://doi.org/10.1137/1.9781611977561.ch3) Allows for 2-parameter edge collapses for 1-critical clique complexes. Very useful to speed up, e.g., Rips-Codensity bifiltrations.\n - [x] [[Chunk Reduction for Multi-Parameter Persistent Homology, SOCG2019]](https://doi.org/10.4230/LIPIcs.SoCG.2019.37) Multi-filtration preprocessing algorithm for homology computations.\n - [x] [[Computing Minimal Presentations and Bigraded Betti Numbers of 2-Parameter Persistent Homology, JAAG]](https://doi.org/10.1137/20M1388425) Minimal presentation of multiparameter persistence modules, using [mpfree](https://bitbucket.org/mkerber/mpfree/src/master/). Hilbert, Rank Decomposition Signed Measures, and MMA decompositions can be computed using the mpfree backend.\n - [x] [[Delaunay Bifiltrations of Functions on Point Clouds, SODA2024]](https://epubs.siam.org/doi/10.1137/1.9781611977912.173) Provides an alternative to function rips bifiltrations, using Delaunay complexes. Very good alternative to Rips-Density like bifiltrations.\n - [x] [[Rivet]](https://github.com/rivetTDA/rivet) Interactive two parameter persistence\n - [x] [[Kernel Operations on the GPU, with Autodiff, without Memory Overflows, JMLR]](http://jmlr.org/papers/v22/20-275.html) Although not linked, at first glance, to persistence in any way, this library allows computing blazingly fast signed measures convolutions (and more!) with custom kernels. \n - [ ] [Backend only] [[Projected distances for multi-parameter persistence modules]](https://arxiv.org/abs/2206.08818) Provides a strategy to estimate the convolution distance between multiparameter persistence module using projected barcodes. Implementation is a WIP.\n - [ ] [Partial, and experimental] [[Efficient Two-Parameter Persistence Computation via Cohomology, SoCG2023]](https://doi.org/10.4230/LIPIcs.SoCG.2023.15) Minimal presentations for 2-parameter persistence algorithm.\n\nIf I missed something, or you want to add something, feel free to open an issue.\n\n## Authors\n[David Loiseaux](https://www-sop.inria.fr/members/David.Loiseaux/index.html),<br>\n[Hannah Schreiber](https://github.com/hschreiber) (Persistence backend code),<br>\n[Luis Scoccola](https://luisscoccola.com/) \n(M\u00f6bius inversion in python, degree-rips using [persistable](https://github.com/LuisScoccola/persistable) and [RIVET](https://github.com/rivetTDA/rivet/)),<br>\n[Mathieu Carri\u00e8re](https://www-sop.inria.fr/members/Mathieu.Carriere/) (Sliced Wasserstein)<br>\n\n## Contributions\nFeel free to contribute, report a bug on a pipeline, or ask for documentation by opening an issue.<br>\nIn particular, if you have a nice example or application that is not taken care in the documentation (see the ./docs/notebooks/ folder), please contact me to add it there.\n\n",
"bugtrack_url": null,
"license": "MIT License Copyright (c) 2023 David Loiseaux Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
"summary": "Multiparameter Topological Persistence for Machine Learning",
"version": "2.2.1",
"project_urls": {
"download": "https://pypi.org/project/multipers/#files",
"release notes": "https://github.com/DavidLapous/multipers/releases",
"source": "https://github.com/DavidLapous/multipers",
"tracker": "https://github.com/DavidLapous/multipers/issues"
},
"split_keywords": [
"tda",
" persistence",
" multiparameter",
" sklearn"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b79d0e81bac556f1fa1f539b465cad31fc736562538f3a1b3d8c0662c10afe21",
"md5": "2f72946ac2130aeae428bf56e8119faa",
"sha256": "0a66ac5a01c9eacf7b227e7fa19b390c3ff9316bca50024ed22cb506fb221cc0"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp310-cp310-macosx_13_0_arm64.whl",
"has_sig": false,
"md5_digest": "2f72946ac2130aeae428bf56e8119faa",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 14752564,
"upload_time": "2024-11-05T20:08:47",
"upload_time_iso_8601": "2024-11-05T20:08:47.273686Z",
"url": "https://files.pythonhosted.org/packages/b7/9d/0e81bac556f1fa1f539b465cad31fc736562538f3a1b3d8c0662c10afe21/multipers-2.2.1-cp310-cp310-macosx_13_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6ca8a1efbdd686f51f90ed1640f454a3550c98959f6a752eb67ebd1f600d0d44",
"md5": "ae7f45c87383e089452b41474e2add13",
"sha256": "e4d7961a9f08f00fb975e1f8ed2022a811969d1f3b3d720773da9c411c3c78b3"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp310-cp310-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "ae7f45c87383e089452b41474e2add13",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 15953226,
"upload_time": "2024-11-05T20:08:51",
"upload_time_iso_8601": "2024-11-05T20:08:51.309740Z",
"url": "https://files.pythonhosted.org/packages/6c/a8/a1efbdd686f51f90ed1640f454a3550c98959f6a752eb67ebd1f600d0d44/multipers-2.2.1-cp310-cp310-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "96a8b4d8a7717944f9ee82f25272bf7ba7e3fd518b13c8b8771bc534bb6ce806",
"md5": "cedb3bddb1b20af8e6a43f82b0f1a66a",
"sha256": "3cdc99d0a1dd9658a65dd2416c216dc74b282003414507dab7930be293127387"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp310-cp310-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "cedb3bddb1b20af8e6a43f82b0f1a66a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 14143780,
"upload_time": "2024-11-05T20:08:54",
"upload_time_iso_8601": "2024-11-05T20:08:54.541743Z",
"url": "https://files.pythonhosted.org/packages/96/a8/b4d8a7717944f9ee82f25272bf7ba7e3fd518b13c8b8771bc534bb6ce806/multipers-2.2.1-cp310-cp310-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "61610083a0f879ae2adb6f1956d392263f4cf1aa6e2d778d7de7287494b6b157",
"md5": "15bdaacbbe5e20415f4bcf932a901806",
"sha256": "3a8ff389e3967317f152699f67894d75ff5f7735e74b0ac2616e781eadfd94fd"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp311-cp311-macosx_13_0_arm64.whl",
"has_sig": false,
"md5_digest": "15bdaacbbe5e20415f4bcf932a901806",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 14646213,
"upload_time": "2024-11-05T20:08:57",
"upload_time_iso_8601": "2024-11-05T20:08:57.717358Z",
"url": "https://files.pythonhosted.org/packages/61/61/0083a0f879ae2adb6f1956d392263f4cf1aa6e2d778d7de7287494b6b157/multipers-2.2.1-cp311-cp311-macosx_13_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "874df1ff1265dd53d1f490bd98bcc9a3f36e58410fe6098888da307f73fdfb7a",
"md5": "4c801fd0dbb8caa2ee377c3867dd8354",
"sha256": "b58dd3acddcff26e6f9de254b6b3b493323121f849458eb5e9f06808946c6417"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp311-cp311-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "4c801fd0dbb8caa2ee377c3867dd8354",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 15837329,
"upload_time": "2024-11-05T20:09:00",
"upload_time_iso_8601": "2024-11-05T20:09:00.241218Z",
"url": "https://files.pythonhosted.org/packages/87/4d/f1ff1265dd53d1f490bd98bcc9a3f36e58410fe6098888da307f73fdfb7a/multipers-2.2.1-cp311-cp311-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e0451a77b16002c37383dfdc4c210fb5c1c9a6e0ca7844a9f6794af0a03e583c",
"md5": "598873844ed757c63cf98a19586f13d1",
"sha256": "1d651f2d5f2a9ca36338b55b18483130b5ce3b1fa48463c86d03e9fcdb4bafa0"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp311-cp311-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "598873844ed757c63cf98a19586f13d1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 14141571,
"upload_time": "2024-11-05T20:09:03",
"upload_time_iso_8601": "2024-11-05T20:09:03.119136Z",
"url": "https://files.pythonhosted.org/packages/e0/45/1a77b16002c37383dfdc4c210fb5c1c9a6e0ca7844a9f6794af0a03e583c/multipers-2.2.1-cp311-cp311-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5ad80d292355a171e48eba69e20587aa2b0ceb3c5a6dd2722f6b014c24e0fc31",
"md5": "b0d1456c7647ddcad9d3d88af74a8875",
"sha256": "dc176b07a551649892c1d42420d0354dc55fa37118ef03a98cd511cd1a0d3151"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp312-cp312-macosx_13_0_arm64.whl",
"has_sig": false,
"md5_digest": "b0d1456c7647ddcad9d3d88af74a8875",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 14572647,
"upload_time": "2024-11-05T20:09:06",
"upload_time_iso_8601": "2024-11-05T20:09:06.431994Z",
"url": "https://files.pythonhosted.org/packages/5a/d8/0d292355a171e48eba69e20587aa2b0ceb3c5a6dd2722f6b014c24e0fc31/multipers-2.2.1-cp312-cp312-macosx_13_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a1ddd9758286c4deec7256cde45f8592a5a952fbadd56091705cd0b737dda328",
"md5": "748adbe04c492df390908acf1b559232",
"sha256": "b2ff434162ea803d547d494b1fd3e4e69528cd55d5cde723627a5ef507c86711"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp312-cp312-macosx_13_0_x86_64.whl",
"has_sig": false,
"md5_digest": "748adbe04c492df390908acf1b559232",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 15686075,
"upload_time": "2024-11-05T20:09:09",
"upload_time_iso_8601": "2024-11-05T20:09:09.549990Z",
"url": "https://files.pythonhosted.org/packages/a1/dd/d9758286c4deec7256cde45f8592a5a952fbadd56091705cd0b737dda328/multipers-2.2.1-cp312-cp312-macosx_13_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e3f7aedeb8af031692e6abf08238e625bd9a34ef119c5a22260d47d11d8aa2da",
"md5": "fd73b1f5fb5c4cb0efd00d24e4633f83",
"sha256": "0b4e53863ea1064816494d82e18c4c3d477eabe63095c0cd45093273ffb8d6ed"
},
"downloads": -1,
"filename": "multipers-2.2.1-cp312-cp312-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "fd73b1f5fb5c4cb0efd00d24e4633f83",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 13749085,
"upload_time": "2024-11-05T20:09:12",
"upload_time_iso_8601": "2024-11-05T20:09:12.432458Z",
"url": "https://files.pythonhosted.org/packages/e3/f7/aedeb8af031692e6abf08238e625bd9a34ef119c5a22260d47d11d8aa2da/multipers-2.2.1-cp312-cp312-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "61f1845c7385604b9097454f6956c5ba2ce21da40d1265dc0e32c2e9eca95300",
"md5": "ace8564d38dadb035ed20cfe90313432",
"sha256": "315eef3449f23069314fd58546951ca4a8294e12b5a11644c61934f12e29388f"
},
"downloads": -1,
"filename": "multipers-2.2.1.tar.gz",
"has_sig": false,
"md5_digest": "ace8564d38dadb035ed20cfe90313432",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 6138465,
"upload_time": "2024-11-05T20:08:43",
"upload_time_iso_8601": "2024-11-05T20:08:43.743080Z",
"url": "https://files.pythonhosted.org/packages/61/f1/845c7385604b9097454f6956c5ba2ce21da40d1265dc0e32c2e9eca95300/multipers-2.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-05 20:08:43",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "DavidLapous",
"github_project": "multipers",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "multipers"
}