# πβοΈ PytrimAl [![Stars](https://img.shields.io/github/stars/althonos/pytrimal.svg?style=social&maxAge=3600&label=Star)](https://github.com/althonos/pytrimal/stargazers)
*[Cython](https://cython.org/) bindings and Python interface to [trimAl](http://trimal.cgenomics.org/), a tool for automated alignment trimming. **Now with SIMD!***
[![Actions](https://img.shields.io/github/actions/workflow/status/althonos/pytrimal/test.yml?branch=main&logo=github&style=flat-square&maxAge=300)](https://github.com/althonos/pytrimal/actions)
[![Coverage](https://img.shields.io/codecov/c/gh/althonos/pytrimal?style=flat-square&maxAge=3600&logo=codecov)](https://codecov.io/gh/althonos/pytrimal/)
[![License](https://img.shields.io/badge/license-GPLv3-blue.svg?style=flat-square&maxAge=2678400)](https://choosealicense.com/licenses/gpl-3.0/)
[![PyPI](https://img.shields.io/pypi/v/pytrimal.svg?style=flat-square&maxAge=3600&logo=PyPI)](https://pypi.org/project/pytrimal)
[![Bioconda](https://img.shields.io/conda/vn/bioconda/pytrimal?style=flat-square&maxAge=3600&logo=anaconda)](https://anaconda.org/bioconda/pytrimal)
[![AUR](https://img.shields.io/aur/version/python-pytrimal?logo=archlinux&style=flat-square&maxAge=3600)](https://aur.archlinux.org/packages/python-pytrimal)
[![Wheel](https://img.shields.io/pypi/wheel/pytrimal.svg?style=flat-square&maxAge=3600)](https://pypi.org/project/pytrimal/#files)
[![Python Versions](https://img.shields.io/pypi/pyversions/pytrimal.svg?style=flat-square&maxAge=600&logo=python)](https://pypi.org/project/pytrimal/#files)
[![Python Implementations](https://img.shields.io/pypi/implementation/pytrimal.svg?style=flat-square&maxAge=600&label=impl)](https://pypi.org/project/pytrimal/#files)
[![Source](https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=2678400&style=flat-square)](https://github.com/althonos/pytrimal/)
[![Mirror](https://img.shields.io/badge/mirror-EMBL-009f4d?style=flat-square&maxAge=2678400)](https://git.embl.de/larralde/pytrimal/)
[![Issues](https://img.shields.io/github/issues/althonos/pytrimal.svg?style=flat-square&maxAge=600)](https://github.com/althonos/pytrimal/issues)
[![Docs](https://img.shields.io/readthedocs/pytrimal/latest?style=flat-square&maxAge=600)](https://pytrimal.readthedocs.io)
[![Changelog](https://img.shields.io/badge/keep%20a-changelog-8A0707.svg?maxAge=2678400&style=flat-square)](https://github.com/althonos/pytrimal/blob/main/CHANGELOG.md)
[![Downloads](https://img.shields.io/pypi/dm/pytrimal?style=flat-square&color=303f9f&maxAge=86400&label=downloads)](https://pepy.tech/project/pytrimal)
***β οΈ This package is based on the release candidate of trimAl 2.0, and results
may not be consistent across versions or with the trimAl 1.4 results.***
## πΊοΈ Overview
PytrimAl is a Python module that provides bindings to [trimAl](http://trimal.cgenomics.org/)
using [Cython](https://cython.org/). It implements a user-friendly, Pythonic
interface to use one of the different trimming methods from trimAl and
access results directly. It interacts with the trimAl internals, which has
the following advantages:
- **single dependency**: PytrimAl is distributed as a Python package, so you
can add it as a dependency to your project, and stop worrying about the
trimAl binary being present on the end-user machine.
- **no intermediate files**: Everything happens in memory, in a Python object
you control, so you don't have to invoke the trimAl CLI using a
sub-process and temporary files.
[`Alignment`](https://pytrimal.readthedocs.io/en/latest/api/alignment.html#pytrimal.Alignment)
objects can be created directly from Python code.
- **friendly interface**: The different trimming methods are implement as
Python classes that can be configured independently.
- **error management**: Errors occuring in trimAl are converted
transparently into Python exceptions, including an informative
error message.
- **better performance**: PytrimAl uses *SIMD* instructions to compute
statistics like pairwise sequence similarity. This makes the whole
trimming process much faster for alignment with a large number of
sequences, at the expense of slightly higher memory consumption.
## π Roadmap
The following features are available or considered for implementation:
- [x] **automatic trimming**: Support for trimming alignments using one of the
automatic heuristics implemented in trimAl.
- [x] **manual trimming**: Support for trimming alignments using manually
defined conservation and gap thresholds for each residue position.
- [x] **overlap trimming**: Trimming sequences using residue and sequence
overlaps to exclude regions with minimal conservation.
- [x] **representative trimming**: Select only representative sequences
from the alignment, either using a fixed number, or a maximum identity
threshold.
- [x] **alignment loading from disk**: Load an alignment from disk given
a filename.
- [x] **alignment loading from a file-like object**: Load an alignment from
a Python [file object](https://docs.python.org/3/glossary.html#term-file-object)
instead of a file on the local filesystem.
- [x] **aligment creation from Python**: Create an alignment from a collection
of sequences stored in Python strings.
- [x] **alignment formatting to disk**: Write an alignment to a file given
a filename in one of the supported file formats.
- [x] **alignment formatting to a file-like object**: Write an alignment to
a file-like object in one of the supported file formats.
- [ ] **reverse-translation**: Back-translate a protein alignment to align
the sequences in genomic space.
- [x] **alternative similarity matrix**: Specify an alternative similarity
matrix for the alignment (instead of BLOSUM62).
- [x] **similarity matrix creation**: Create a similarity matrix from scratch
from Python code.
- [x] **windows for manual methods**: Use a sliding window for computing
statistics in manual methods.
## π§ Installing
PytrimAl is available for all modern versions (3.6+), with no external dependencies.
It can be installed directly from [PyPI](https://pypi.org/project/pytrimal/),
which hosts some pre-built wheels for the x86-64 architecture (Linux/OSX)
and the Aarch64 architecture (Linux only), as well as the code required to compile
from source with Cython:
```console
$ pip install pytrimal
```
Otherwise, pytrimal is also available as a [Bioconda](https://bioconda.github.io/)
package:
```console
$ conda install -c bioconda pytrimal
```
## π‘ Example
Let's load an `Alignment` from a file on the disk, and use the *strictplus*
method to trim it, before printing the `TrimmedAlignment` as a Clustal block:
```python
from pytrimal import Alignment, AutomaticTrimmer
ali = Alignment.load("pytrimal/tests/data/example.001.AA.clw")
trimmer = AutomaticTrimmer(method="strictplus")
trimmed = trimmer.trim(ali)
for name, seq in zip(trimmed.names, trimmed.sequences):
print(name.decode().rjust(6), seq)
```
This should output the following:
```
Sp8 GIVLVWLFPWNGLQIHMMGII
Sp10 VIMLEWFFAWLGLEINMMVII
Sp26 GLFLAAANAWLGLEINMMAQI
Sp6 GIYLSWYLAWLGLEINMMAII
Sp17 GFLLTWFQLWQGLDLNKMPVF
Sp33 GLHMAWFQAWGGLEINKQAIL
```
You can then use the
[`dump`](https://pytrimal.readthedocs.io/en/latest/api/alignment.html#pytrimal.Alignment.dump)
method to write the trimmed alignment to a file or file-like
object. For instance, save the results in
[PIR format](https://www.bioinformatics.nl/tools/crab_pir.html)
to a file named `example.trimmed.pir`:
```python
trimmed.dump("example.trimmed.pir", format="pir")
```
## π§Ά Thread-safety
Trimmer objects are thread-safe, and the `trim` method is re-entrant.
This means you can batch-process alignments in parallel using a
[`ThreadPool`](https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.ThreadPool)
with a single trimmer object:
```python
import glob
import multiprocessing.pool
from pytrimal import Alignment, AutomaticTrimmer
trimmer = AutomaticTrimmer()
alignments = map(Alignment.load, glob.iglob("pytrimal/tests/data/*.fasta"))
with multiprocessing.pool.ThreadPool() as pool:
trimmed_alignments = pool.map(trimmer.trim, alignments)
```
## β±οΈ Benchmarks
Benchmarks were run on a [i7-10710U CPU](https://ark.intel.com/content/www/us/en/ark/products/196448/intel-core-i710710u-processor-12m-cache-up-to-4-70-ghz.html)
@ 1.10GHz, using a single core to time the computation of several statistics,
on a variable number of sequences from
[`example.014.AA.EggNOG.COG0591.fasta`](https://github.com/inab/trimal/blob/trimAl/dataset/example.014.AA.EggNOG.COG0591.fasta),
an alignment of 3583 sequences and 7287 columns.
![Benchmarks](https://raw.githubusercontent.com/althonos/pytrimal/main/bench/v0.5.4.svg)
Each graph measures the computation time of a single trimAl statistic
(see the [Statistics page](https://pytrimal.readthedocs.io/en/stable/statistics.html)
of the [online documentation](https://pytrimal.readthedocs.io/) for more
information.)
The `None` curve shows the time using the internal trimAl 2.0 code,
the `Generic` curve shows a generic C implementation with some more
optimizations, and the `SSE` curve shows the time spent using a dedicated
class with [SIMD](https://en.wikipedia.org/wiki/Single_instruction,_multiple_data)
implementations of the statistic computation.
## π Feedback
### β οΈ Issue Tracker
Found a bug ? Have an enhancement request ? Head over to the [GitHub issue tracker](https://github.com/althonos/pytrimal/issues)
if you need to report or ask something. If you are filing in on a bug,
please include as much information as you can about the issue, and try to
recreate the same bug in a simple, easily reproducible situation.
### ποΈ Contributing
Contributions are more than welcome! See
[`CONTRIBUTING.md`](https://github.com/althonos/pytrimal/blob/main/CONTRIBUTING.md)
for more details.
## π Changelog
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html)
and provides a [changelog](https://github.com/althonos/pytrimal/blob/main/CHANGELOG.md)
in the [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) format.
## βοΈ License
This library is provided under the [GNU General Public License v3.0](https://choosealicense.com/licenses/gpl-3.0/).
trimAl is developed by the [trimAl team](http://trimal.cgenomics.org/trimal_team) and is distributed under the
terms of the GPLv3 as well. See `vendor/trimal/LICENSE` for more information.
*This project is in no way not affiliated, sponsored, or otherwise endorsed
by the [trimAl authors](http://trimal.cgenomics.org/trimal_team). It was developed
by [Martin Larralde](https://github.com/althonos/) during his PhD project
at the [European Molecular Biology Laboratory](https://www.embl.de/) in
the [Zeller team](https://github.com/zellerlab).*
Raw data
{
"_id": null,
"home_page": "https://github.com/althonos/pytrimal",
"name": "pytrimal",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.5",
"maintainer_email": null,
"keywords": "bioinformatics, sequence, alignment, trimming, genomics",
"author": "Martin Larralde",
"author_email": "martin.larralde@embl.de",
"download_url": "https://files.pythonhosted.org/packages/6d/43/03610c9d80da55531f99e30cde2113eeb9da9d8a3967afcdceb1fda6bd54/pytrimal-0.8.0.tar.gz",
"platform": "any",
"description": "# \ud83d\udc0d\u2702\ufe0f PytrimAl [![Stars](https://img.shields.io/github/stars/althonos/pytrimal.svg?style=social&maxAge=3600&label=Star)](https://github.com/althonos/pytrimal/stargazers)\n\n*[Cython](https://cython.org/) bindings and Python interface to [trimAl](http://trimal.cgenomics.org/), a tool for automated alignment trimming. **Now with SIMD!***\n\n[![Actions](https://img.shields.io/github/actions/workflow/status/althonos/pytrimal/test.yml?branch=main&logo=github&style=flat-square&maxAge=300)](https://github.com/althonos/pytrimal/actions)\n[![Coverage](https://img.shields.io/codecov/c/gh/althonos/pytrimal?style=flat-square&maxAge=3600&logo=codecov)](https://codecov.io/gh/althonos/pytrimal/)\n[![License](https://img.shields.io/badge/license-GPLv3-blue.svg?style=flat-square&maxAge=2678400)](https://choosealicense.com/licenses/gpl-3.0/)\n[![PyPI](https://img.shields.io/pypi/v/pytrimal.svg?style=flat-square&maxAge=3600&logo=PyPI)](https://pypi.org/project/pytrimal)\n[![Bioconda](https://img.shields.io/conda/vn/bioconda/pytrimal?style=flat-square&maxAge=3600&logo=anaconda)](https://anaconda.org/bioconda/pytrimal)\n[![AUR](https://img.shields.io/aur/version/python-pytrimal?logo=archlinux&style=flat-square&maxAge=3600)](https://aur.archlinux.org/packages/python-pytrimal)\n[![Wheel](https://img.shields.io/pypi/wheel/pytrimal.svg?style=flat-square&maxAge=3600)](https://pypi.org/project/pytrimal/#files)\n[![Python Versions](https://img.shields.io/pypi/pyversions/pytrimal.svg?style=flat-square&maxAge=600&logo=python)](https://pypi.org/project/pytrimal/#files)\n[![Python Implementations](https://img.shields.io/pypi/implementation/pytrimal.svg?style=flat-square&maxAge=600&label=impl)](https://pypi.org/project/pytrimal/#files)\n[![Source](https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=2678400&style=flat-square)](https://github.com/althonos/pytrimal/)\n[![Mirror](https://img.shields.io/badge/mirror-EMBL-009f4d?style=flat-square&maxAge=2678400)](https://git.embl.de/larralde/pytrimal/)\n[![Issues](https://img.shields.io/github/issues/althonos/pytrimal.svg?style=flat-square&maxAge=600)](https://github.com/althonos/pytrimal/issues)\n[![Docs](https://img.shields.io/readthedocs/pytrimal/latest?style=flat-square&maxAge=600)](https://pytrimal.readthedocs.io)\n[![Changelog](https://img.shields.io/badge/keep%20a-changelog-8A0707.svg?maxAge=2678400&style=flat-square)](https://github.com/althonos/pytrimal/blob/main/CHANGELOG.md)\n[![Downloads](https://img.shields.io/pypi/dm/pytrimal?style=flat-square&color=303f9f&maxAge=86400&label=downloads)](https://pepy.tech/project/pytrimal)\n\n***\u26a0\ufe0f This package is based on the release candidate of trimAl 2.0, and results\nmay not be consistent across versions or with the trimAl 1.4 results.***\n\n## \ud83d\uddfa\ufe0f Overview\n\nPytrimAl is a Python module that provides bindings to [trimAl](http://trimal.cgenomics.org/)\nusing [Cython](https://cython.org/). It implements a user-friendly, Pythonic\ninterface to use one of the different trimming methods from trimAl and\naccess results directly. It interacts with the trimAl internals, which has\nthe following advantages:\n\n- **single dependency**: PytrimAl is distributed as a Python package, so you\n can add it as a dependency to your project, and stop worrying about the\n trimAl binary being present on the end-user machine.\n- **no intermediate files**: Everything happens in memory, in a Python object\n you control, so you don't have to invoke the trimAl CLI using a\n sub-process and temporary files.\n [`Alignment`](https://pytrimal.readthedocs.io/en/latest/api/alignment.html#pytrimal.Alignment)\n objects can be created directly from Python code.\n- **friendly interface**: The different trimming methods are implement as\n Python classes that can be configured independently.\n- **error management**: Errors occuring in trimAl are converted\n transparently into Python exceptions, including an informative\n error message.\n- **better performance**: PytrimAl uses *SIMD* instructions to compute\n statistics like pairwise sequence similarity. This makes the whole\n trimming process much faster for alignment with a large number of\n sequences, at the expense of slightly higher memory consumption.\n\n## \ud83d\udccb Roadmap\n\nThe following features are available or considered for implementation:\n\n- [x] **automatic trimming**: Support for trimming alignments using one of the\n automatic heuristics implemented in trimAl.\n- [x] **manual trimming**: Support for trimming alignments using manually\n defined conservation and gap thresholds for each residue position.\n- [x] **overlap trimming**: Trimming sequences using residue and sequence\n overlaps to exclude regions with minimal conservation.\n- [x] **representative trimming**: Select only representative sequences\n from the alignment, either using a fixed number, or a maximum identity\n threshold.\n- [x] **alignment loading from disk**: Load an alignment from disk given\n a filename.\n- [x] **alignment loading from a file-like object**: Load an alignment from\n a Python [file object](https://docs.python.org/3/glossary.html#term-file-object)\n instead of a file on the local filesystem.\n- [x] **aligment creation from Python**: Create an alignment from a collection\n of sequences stored in Python strings.\n- [x] **alignment formatting to disk**: Write an alignment to a file given\n a filename in one of the supported file formats.\n- [x] **alignment formatting to a file-like object**: Write an alignment to\n a file-like object in one of the supported file formats.\n- [ ] **reverse-translation**: Back-translate a protein alignment to align\n the sequences in genomic space.\n- [x] **alternative similarity matrix**: Specify an alternative similarity\n matrix for the alignment (instead of BLOSUM62).\n- [x] **similarity matrix creation**: Create a similarity matrix from scratch\n from Python code.\n- [x] **windows for manual methods**: Use a sliding window for computing\n statistics in manual methods.\n\n## \ud83d\udd27 Installing\n\nPytrimAl is available for all modern versions (3.6+), with no external dependencies.\n\nIt can be installed directly from [PyPI](https://pypi.org/project/pytrimal/),\nwhich hosts some pre-built wheels for the x86-64 architecture (Linux/OSX)\nand the Aarch64 architecture (Linux only), as well as the code required to compile\nfrom source with Cython:\n```console\n$ pip install pytrimal\n```\n\nOtherwise, pytrimal is also available as a [Bioconda](https://bioconda.github.io/)\npackage:\n```console\n$ conda install -c bioconda pytrimal\n```\n\n## \ud83d\udca1 Example\n\nLet's load an `Alignment` from a file on the disk, and use the *strictplus*\nmethod to trim it, before printing the `TrimmedAlignment` as a Clustal block:\n```python\nfrom pytrimal import Alignment, AutomaticTrimmer\n\nali = Alignment.load(\"pytrimal/tests/data/example.001.AA.clw\")\ntrimmer = AutomaticTrimmer(method=\"strictplus\")\n\ntrimmed = trimmer.trim(ali)\nfor name, seq in zip(trimmed.names, trimmed.sequences):\n print(name.decode().rjust(6), seq)\n```\n\nThis should output the following:\n```\nSp8 GIVLVWLFPWNGLQIHMMGII\nSp10 VIMLEWFFAWLGLEINMMVII\nSp26 GLFLAAANAWLGLEINMMAQI\nSp6 GIYLSWYLAWLGLEINMMAII\nSp17 GFLLTWFQLWQGLDLNKMPVF\nSp33 GLHMAWFQAWGGLEINKQAIL\n```\n\nYou can then use the\n[`dump`](https://pytrimal.readthedocs.io/en/latest/api/alignment.html#pytrimal.Alignment.dump)\nmethod to write the trimmed alignment to a file or file-like\nobject. For instance, save the results in\n[PIR format](https://www.bioinformatics.nl/tools/crab_pir.html)\nto a file named `example.trimmed.pir`:\n```python\ntrimmed.dump(\"example.trimmed.pir\", format=\"pir\")\n```\n\n## \ud83e\uddf6 Thread-safety\n\nTrimmer objects are thread-safe, and the `trim` method is re-entrant.\nThis means you can batch-process alignments in parallel using a\n[`ThreadPool`](https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.ThreadPool)\nwith a single trimmer object:\n```python\nimport glob\nimport multiprocessing.pool\nfrom pytrimal import Alignment, AutomaticTrimmer\n\ntrimmer = AutomaticTrimmer()\nalignments = map(Alignment.load, glob.iglob(\"pytrimal/tests/data/*.fasta\"))\n\nwith multiprocessing.pool.ThreadPool() as pool:\n trimmed_alignments = pool.map(trimmer.trim, alignments)\n```\n\n## \u23f1\ufe0f Benchmarks\n\nBenchmarks were run on a [i7-10710U CPU](https://ark.intel.com/content/www/us/en/ark/products/196448/intel-core-i710710u-processor-12m-cache-up-to-4-70-ghz.html)\n@ 1.10GHz, using a single core to time the computation of several statistics,\non a variable number of sequences from\n[`example.014.AA.EggNOG.COG0591.fasta`](https://github.com/inab/trimal/blob/trimAl/dataset/example.014.AA.EggNOG.COG0591.fasta),\nan alignment of 3583 sequences and 7287 columns.\n\n![Benchmarks](https://raw.githubusercontent.com/althonos/pytrimal/main/bench/v0.5.4.svg)\n\nEach graph measures the computation time of a single trimAl statistic\n(see the [Statistics page](https://pytrimal.readthedocs.io/en/stable/statistics.html)\nof the [online documentation](https://pytrimal.readthedocs.io/) for more\ninformation.)\n\nThe `None` curve shows the time using the internal trimAl 2.0 code,\nthe `Generic` curve shows a generic C implementation with some more\noptimizations, and the `SSE` curve shows the time spent using a dedicated\nclass with [SIMD](https://en.wikipedia.org/wiki/Single_instruction,_multiple_data)\nimplementations of the statistic computation.\n\n## \ud83d\udcad Feedback\n\n### \u26a0\ufe0f Issue Tracker\n\nFound a bug ? Have an enhancement request ? Head over to the [GitHub issue tracker](https://github.com/althonos/pytrimal/issues)\nif you need to report or ask something. If you are filing in on a bug,\nplease include as much information as you can about the issue, and try to\nrecreate the same bug in a simple, easily reproducible situation.\n\n\n### \ud83c\udfd7\ufe0f Contributing\n\nContributions are more than welcome! See\n[`CONTRIBUTING.md`](https://github.com/althonos/pytrimal/blob/main/CONTRIBUTING.md)\nfor more details.\n\n\n## \ud83d\udccb Changelog\n\nThis project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html)\nand provides a [changelog](https://github.com/althonos/pytrimal/blob/main/CHANGELOG.md)\nin the [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) format.\n\n\n## \u2696\ufe0f License\n\nThis library is provided under the [GNU General Public License v3.0](https://choosealicense.com/licenses/gpl-3.0/).\ntrimAl is developed by the [trimAl team](http://trimal.cgenomics.org/trimal_team) and is distributed under the\nterms of the GPLv3 as well. See `vendor/trimal/LICENSE` for more information.\n\n*This project is in no way not affiliated, sponsored, or otherwise endorsed\nby the [trimAl authors](http://trimal.cgenomics.org/trimal_team). It was developed\nby [Martin Larralde](https://github.com/althonos/) during his PhD project\nat the [European Molecular Biology Laboratory](https://www.embl.de/) in\nthe [Zeller team](https://github.com/zellerlab).*\n",
"bugtrack_url": null,
"license": "GPL-3.0-only",
"summary": "Cython bindings and Python interface to trimAl, a tool for automated alignment trimming.",
"version": "0.8.0",
"project_urls": {
"Bug Tracker": "https://github.com/althonos/pytrimal/issues",
"Builds": "https://github.com/althonos/pytrimal/actions",
"Changelog": "https://github.com/althonos/pytrimal/blob/main/CHANGELOG.md",
"Coverage": "https://codecov.io/gh/althonos/pytrimal/",
"Documentation": "https://pytrimal.readthedocs.io/en/stable/",
"Homepage": "https://github.com/althonos/pytrimal",
"PyPI": "https://pypi.org/project/pytrimal"
},
"split_keywords": [
"bioinformatics",
" sequence",
" alignment",
" trimming",
" genomics"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "614815920fa6770b3e7910185e102f2c9bd6445bf89a293097f619e5fa51ecbf",
"md5": "cf44209afcdf1566b23aadf23d8ba672",
"sha256": "6763e2f1cc1e65dfbd0f5a22afd6e36d71042dd9543340550e10897e95810e53"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "cf44209afcdf1566b23aadf23d8ba672",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.5",
"size": 690790,
"upload_time": "2024-08-28T14:25:53",
"upload_time_iso_8601": "2024-08-28T14:25:53.597913Z",
"url": "https://files.pythonhosted.org/packages/61/48/15920fa6770b3e7910185e102f2c9bd6445bf89a293097f619e5fa51ecbf/pytrimal-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f33fab3636f7c57da86669567c449ccc0d87fec01adb67f8bc53e2fa0617e993",
"md5": "721d70b854f58a90e05e6d6a0b89ec32",
"sha256": "449eaca03cea469af817e8f018251b397ac1ab147169d8fa4f45eb23726cbfd2"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "721d70b854f58a90e05e6d6a0b89ec32",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.5",
"size": 648986,
"upload_time": "2024-08-28T14:25:55",
"upload_time_iso_8601": "2024-08-28T14:25:55.567161Z",
"url": "https://files.pythonhosted.org/packages/f3/3f/ab3636f7c57da86669567c449ccc0d87fec01adb67f8bc53e2fa0617e993/pytrimal-0.8.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e346253679914b65849c58ee0f68ca4cadcc9d73dec622431702e9daa99859f7",
"md5": "f674dc406fce8e64400f6ebc38b69c9a",
"sha256": "91e0d846d6abbf222f352cb3dcb2cbeed80d307be715d8a2b4a7b7e0aed66cc2"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "f674dc406fce8e64400f6ebc38b69c9a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.5",
"size": 3613211,
"upload_time": "2024-08-28T14:25:57",
"upload_time_iso_8601": "2024-08-28T14:25:57.230624Z",
"url": "https://files.pythonhosted.org/packages/e3/46/253679914b65849c58ee0f68ca4cadcc9d73dec622431702e9daa99859f7/pytrimal-0.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "af8c454ea5ddcc2b68e0ea542835351fb7d234ffa9500a224a0124a615f409da",
"md5": "119f0d741dc5b276f05d24e2f7624f66",
"sha256": "f1c667b323e244e14e6ffc3eabf7662f4aac2de52bdecb4ddd76b54ee9fe37b1"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "119f0d741dc5b276f05d24e2f7624f66",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.5",
"size": 3751226,
"upload_time": "2024-08-28T14:25:58",
"upload_time_iso_8601": "2024-08-28T14:25:58.679769Z",
"url": "https://files.pythonhosted.org/packages/af/8c/454ea5ddcc2b68e0ea542835351fb7d234ffa9500a224a0124a615f409da/pytrimal-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4a6e8b838a151e343b51388ae096f88d6c94f50e500943e7c56e86e5921b6f52",
"md5": "a64ee31d0e9b49a05818157acfc9a8eb",
"sha256": "d00dfdfa359c1fbb28839c9c0b40f0fc34da9ed0a15984947bc8fdfca9b36753"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "a64ee31d0e9b49a05818157acfc9a8eb",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.5",
"size": 690018,
"upload_time": "2024-08-28T14:26:00",
"upload_time_iso_8601": "2024-08-28T14:26:00.778267Z",
"url": "https://files.pythonhosted.org/packages/4a/6e/8b838a151e343b51388ae096f88d6c94f50e500943e7c56e86e5921b6f52/pytrimal-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f04bb1265f957c5eb29d334c2b8769e77a27949a6deb3dab3cca7a6d663374d6",
"md5": "f0870ecb7d68f442a525c6b225c50904",
"sha256": "d96c52b4b06649ae2b967a2192b5d6bce71e38fa6daba76fd85aaa23150517d6"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "f0870ecb7d68f442a525c6b225c50904",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.5",
"size": 648459,
"upload_time": "2024-08-28T14:26:02",
"upload_time_iso_8601": "2024-08-28T14:26:02.152493Z",
"url": "https://files.pythonhosted.org/packages/f0/4b/b1265f957c5eb29d334c2b8769e77a27949a6deb3dab3cca7a6d663374d6/pytrimal-0.8.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1e26f38bd31149cd98b37e059f702430aa8776f4e80da442d42828c56bbaf224",
"md5": "358e6594c299ec1bd655c3fc0513b430",
"sha256": "87a2502f8109da4652e77e7069862641dd8bea2281d1142ba2640e0726a67d6e"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "358e6594c299ec1bd655c3fc0513b430",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.5",
"size": 3695118,
"upload_time": "2024-08-28T14:26:03",
"upload_time_iso_8601": "2024-08-28T14:26:03.982204Z",
"url": "https://files.pythonhosted.org/packages/1e/26/f38bd31149cd98b37e059f702430aa8776f4e80da442d42828c56bbaf224/pytrimal-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7188ba4bb31508e4ffba4837b628a9243150df76716312543b58118181cab070",
"md5": "014a124570c4d7899531208318bb5a39",
"sha256": "5b48a2acd40b7e50070c2e8ec9f5937db6987200850bfbfe6820f26380589944"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "014a124570c4d7899531208318bb5a39",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.5",
"size": 3839342,
"upload_time": "2024-08-28T14:26:05",
"upload_time_iso_8601": "2024-08-28T14:26:05.415067Z",
"url": "https://files.pythonhosted.org/packages/71/88/ba4bb31508e4ffba4837b628a9243150df76716312543b58118181cab070/pytrimal-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5bf5a8472b90ce8a428bf302788725097823e0bc2fa392e5d927ccc84c0e17c9",
"md5": "b5f2874c877d7f3c825aaca39a65a2fb",
"sha256": "c11c9702fc839ce1470e31ce4125304513d2231dfebd47564b7a93c45b38f4dc"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "b5f2874c877d7f3c825aaca39a65a2fb",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.5",
"size": 688887,
"upload_time": "2024-08-28T14:26:06",
"upload_time_iso_8601": "2024-08-28T14:26:06.935613Z",
"url": "https://files.pythonhosted.org/packages/5b/f5/a8472b90ce8a428bf302788725097823e0bc2fa392e5d927ccc84c0e17c9/pytrimal-0.8.0-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f26752ea67034f98e21a5bfa04c0da74fc2fe822efb66b0ead612204ab0f402c",
"md5": "5cef91a9c101ae7ccba25c219e62c200",
"sha256": "f58a8241f36a4243d2e7f2eaccd9bc8b0385eecbba0fd92add0b90dc96a682a3"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "5cef91a9c101ae7ccba25c219e62c200",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.5",
"size": 647253,
"upload_time": "2024-08-28T14:26:08",
"upload_time_iso_8601": "2024-08-28T14:26:08.206285Z",
"url": "https://files.pythonhosted.org/packages/f2/67/52ea67034f98e21a5bfa04c0da74fc2fe822efb66b0ead612204ab0f402c/pytrimal-0.8.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "18e6381a58f1d0523d2f487fe1c44e3002765c787fcd751d29a3cc627eae65ad",
"md5": "286c0867748d9ff4d9351a58698599fd",
"sha256": "5119e81a2747564b46542df7aedf02675efbe018af7cf8703164c17f08b96a31"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "286c0867748d9ff4d9351a58698599fd",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.5",
"size": 3663262,
"upload_time": "2024-08-28T14:26:10",
"upload_time_iso_8601": "2024-08-28T14:26:10.135856Z",
"url": "https://files.pythonhosted.org/packages/18/e6/381a58f1d0523d2f487fe1c44e3002765c787fcd751d29a3cc627eae65ad/pytrimal-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "efff2d009901d38582338d8e5b0d08f5b62c6af0708b87a5a813b3a3fd35d782",
"md5": "138e7c70f1d53ad9ad884555cb753de9",
"sha256": "3a40d2172cd111e01e6639d2db9ba79aaf2e2069fd71e9c76a256b2c6ea8f63f"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "138e7c70f1d53ad9ad884555cb753de9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.5",
"size": 3816302,
"upload_time": "2024-08-28T14:26:12",
"upload_time_iso_8601": "2024-08-28T14:26:12.146514Z",
"url": "https://files.pythonhosted.org/packages/ef/ff/2d009901d38582338d8e5b0d08f5b62c6af0708b87a5a813b3a3fd35d782/pytrimal-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "de3cab9bc42f829e85965218f81aee5515bd1032969508fc8ea3b17855829dcb",
"md5": "b4747f01873c72eee6a2ea8b72867363",
"sha256": "6926f2880c9be5ac7e9ee2d71df3f0d79f5f4194ccd9a01d28f73ab3cde067a4"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp36-cp36m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "b4747f01873c72eee6a2ea8b72867363",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.5",
"size": 687086,
"upload_time": "2024-08-28T14:26:14",
"upload_time_iso_8601": "2024-08-28T14:26:14.001475Z",
"url": "https://files.pythonhosted.org/packages/de/3c/ab9bc42f829e85965218f81aee5515bd1032969508fc8ea3b17855829dcb/pytrimal-0.8.0-cp36-cp36m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "30f7c17b6543046ce18f78485ad685f25f84980c0ba987735c5ac179cb311dc5",
"md5": "5746b448a2ebcd4d7dcf67f6774cf897",
"sha256": "c127aa8ed111c5e5287ce2764bec39772579c65a850647980f9bd2e996cb02c4"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "5746b448a2ebcd4d7dcf67f6774cf897",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.5",
"size": 3552232,
"upload_time": "2024-08-28T14:26:15",
"upload_time_iso_8601": "2024-08-28T14:26:15.359661Z",
"url": "https://files.pythonhosted.org/packages/30/f7/c17b6543046ce18f78485ad685f25f84980c0ba987735c5ac179cb311dc5/pytrimal-0.8.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b4d05bedaef479a74e21240ce532f1f2989f4dd27a677878983d3d60f9829ff8",
"md5": "2060a9b79e5aff56587db4b116e5db01",
"sha256": "87a202d727e1642a76224f04f0c9ba71264c8371ca68ac3fdb175e8d08c56729"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "2060a9b79e5aff56587db4b116e5db01",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.5",
"size": 3687884,
"upload_time": "2024-08-28T14:26:17",
"upload_time_iso_8601": "2024-08-28T14:26:17.748667Z",
"url": "https://files.pythonhosted.org/packages/b4/d0/5bedaef479a74e21240ce532f1f2989f4dd27a677878983d3d60f9829ff8/pytrimal-0.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "31f828bb058f9936114671e509af3848f8cdefbde6710341f337b402391b1c7f",
"md5": "15935cd79cb1d4b84d45ccf1fd8aced3",
"sha256": "a0b61597a424495dd9fa78eedf0beeb80b254d72c6b9a51f7efb28e29a0be0ad"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp37-cp37m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "15935cd79cb1d4b84d45ccf1fd8aced3",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.5",
"size": 689063,
"upload_time": "2024-08-28T14:26:19",
"upload_time_iso_8601": "2024-08-28T14:26:19.568289Z",
"url": "https://files.pythonhosted.org/packages/31/f8/28bb058f9936114671e509af3848f8cdefbde6710341f337b402391b1c7f/pytrimal-0.8.0-cp37-cp37m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4c0402ebc8cdf300e8f25b32fa7a04a59a99e467bc88865a096965e74ece605c",
"md5": "af7e97226ea0b8ff0f3aa74a518a6d79",
"sha256": "713e7d01ef1a3667f5644b1835b52518dd92421d0f6b035812910457e0e37e23"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "af7e97226ea0b8ff0f3aa74a518a6d79",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.5",
"size": 3566531,
"upload_time": "2024-08-28T14:26:23",
"upload_time_iso_8601": "2024-08-28T14:26:23.415561Z",
"url": "https://files.pythonhosted.org/packages/4c/04/02ebc8cdf300e8f25b32fa7a04a59a99e467bc88865a096965e74ece605c/pytrimal-0.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "038ad82241da563d3e09188286776a19946ca57fff19923feb858ffa1d6f4caa",
"md5": "122736f94ace9bf76785d58f44b924e7",
"sha256": "5aaab829b7f3bea31438d8b0625ece088eb95095c27a467a540630c2e3823626"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "122736f94ace9bf76785d58f44b924e7",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.5",
"size": 3699727,
"upload_time": "2024-08-28T14:26:24",
"upload_time_iso_8601": "2024-08-28T14:26:24.791096Z",
"url": "https://files.pythonhosted.org/packages/03/8a/d82241da563d3e09188286776a19946ca57fff19923feb858ffa1d6f4caa/pytrimal-0.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "346bb76e79a42d9ef8d63e6b6fe2156b8214d3860231f9706c7ea94e4fb74368",
"md5": "f7ba06d1dc461dd5ed44d075fd2ff13e",
"sha256": "d4183584aa33751536cd6ef1afed70e2d3d9ac12cea3d84d5bb7a2519ba41ad6"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "f7ba06d1dc461dd5ed44d075fd2ff13e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.5",
"size": 690561,
"upload_time": "2024-08-28T14:26:26",
"upload_time_iso_8601": "2024-08-28T14:26:26.100551Z",
"url": "https://files.pythonhosted.org/packages/34/6b/b76e79a42d9ef8d63e6b6fe2156b8214d3860231f9706c7ea94e4fb74368/pytrimal-0.8.0-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a16f83e3bb5a09e3ab874684c3d6d7751151aee47793a65d8d353cdc5873129e",
"md5": "72a1b0f7669b29958f07f28e8a652597",
"sha256": "2e801533408a1d8db1ea94efb5c607de3207a610a315283fe340549283d3f161"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "72a1b0f7669b29958f07f28e8a652597",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.5",
"size": 649629,
"upload_time": "2024-08-28T14:26:28",
"upload_time_iso_8601": "2024-08-28T14:26:28.635348Z",
"url": "https://files.pythonhosted.org/packages/a1/6f/83e3bb5a09e3ab874684c3d6d7751151aee47793a65d8d353cdc5873129e/pytrimal-0.8.0-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "962dc2bd6066fa72444911c70b1d7a6c213a9029bf3e43d117efba0069b0d4c4",
"md5": "cdf84dd04275ef0afbe4f9a52b79560c",
"sha256": "5bbdd6d39c9b0d0ae652097f08255e89238dcd733969af7d475f1e76594c31dd"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "cdf84dd04275ef0afbe4f9a52b79560c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.5",
"size": 3627047,
"upload_time": "2024-08-28T14:26:30",
"upload_time_iso_8601": "2024-08-28T14:26:30.097225Z",
"url": "https://files.pythonhosted.org/packages/96/2d/c2bd6066fa72444911c70b1d7a6c213a9029bf3e43d117efba0069b0d4c4/pytrimal-0.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "093d3b3eb2cd09ee97e5ef9fd29e5a414e3961a6e9b568e9785f4f61d0fcb660",
"md5": "11f1784f3c82c7d759aaab7ac398cc17",
"sha256": "45b449cdf20a6fef48752abdefa1fffb4ce53fbe7a2283937264336b4718c66e"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "11f1784f3c82c7d759aaab7ac398cc17",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.5",
"size": 3770017,
"upload_time": "2024-08-28T14:26:32",
"upload_time_iso_8601": "2024-08-28T14:26:32.651108Z",
"url": "https://files.pythonhosted.org/packages/09/3d/3b3eb2cd09ee97e5ef9fd29e5a414e3961a6e9b568e9785f4f61d0fcb660/pytrimal-0.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9764ff9ebde7301808437103cdea7c56c9bb53a28ad04de694d76abdb6bc3407",
"md5": "a78403edd3b4fb7720e3b62031b746e2",
"sha256": "1dd759b5f4e476e2fc4f0c246a6b609b2e52b3ff67a3183dbc4bb3ae642af04f"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "a78403edd3b4fb7720e3b62031b746e2",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.5",
"size": 691465,
"upload_time": "2024-08-28T14:26:34",
"upload_time_iso_8601": "2024-08-28T14:26:34.106265Z",
"url": "https://files.pythonhosted.org/packages/97/64/ff9ebde7301808437103cdea7c56c9bb53a28ad04de694d76abdb6bc3407/pytrimal-0.8.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "54b26a448d00e48b1e89ee21e6157cd8fc515076e8a05fd4bccc1e84a3bd1b96",
"md5": "99d704504e2d34cb42e27527a3653a6d",
"sha256": "180035766f197d209b9e6ea7bf9b4ffc8aed447b30699525355cd9cc33a5cec4"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "99d704504e2d34cb42e27527a3653a6d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.5",
"size": 649526,
"upload_time": "2024-08-28T14:26:35",
"upload_time_iso_8601": "2024-08-28T14:26:35.280431Z",
"url": "https://files.pythonhosted.org/packages/54/b2/6a448d00e48b1e89ee21e6157cd8fc515076e8a05fd4bccc1e84a3bd1b96/pytrimal-0.8.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1606a87a3f9fb405592d374834e14c736225a4a24b433ba5f254ec2d9a972494",
"md5": "4ba3edc34303b95103a55c0ef5196cce",
"sha256": "e512e334be6d95bba6837552bbaacde78cfd34e2ef6a81da73b0c3640d7c6ab3"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "4ba3edc34303b95103a55c0ef5196cce",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.5",
"size": 3612402,
"upload_time": "2024-08-28T14:26:36",
"upload_time_iso_8601": "2024-08-28T14:26:36.751583Z",
"url": "https://files.pythonhosted.org/packages/16/06/a87a3f9fb405592d374834e14c736225a4a24b433ba5f254ec2d9a972494/pytrimal-0.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "522d1832de102ba08aa29ca6c01aff0cb0b4d787f44aaf3ff5456184b58731e1",
"md5": "434d79cb4420c3066363f4440d138877",
"sha256": "ac466986243564895ca0761d5ce7a060fa34b11291bc8cc49c08bde22546189b"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "434d79cb4420c3066363f4440d138877",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.5",
"size": 3750201,
"upload_time": "2024-08-28T14:26:38",
"upload_time_iso_8601": "2024-08-28T14:26:38.929565Z",
"url": "https://files.pythonhosted.org/packages/52/2d/1832de102ba08aa29ca6c01aff0cb0b4d787f44aaf3ff5456184b58731e1/pytrimal-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b6c8b2fd3e5e0bedef460c396b46b52b86b0f91a9a30ee402ec3cd2d9a134891",
"md5": "18ec98249e2a7b2a40644d02b1114d30",
"sha256": "6a0b073a72a7f87ba72ca14ab24ecc38de98578db4e27df3615aed471ce78232"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "18ec98249e2a7b2a40644d02b1114d30",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.5",
"size": 620501,
"upload_time": "2024-08-28T14:26:40",
"upload_time_iso_8601": "2024-08-28T14:26:40.659289Z",
"url": "https://files.pythonhosted.org/packages/b6/c8/b2fd3e5e0bedef460c396b46b52b86b0f91a9a30ee402ec3cd2d9a134891/pytrimal-0.8.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8cfc4515f2e4481caaba3db4711036c21f28de54dbffe2517dca26de7c915bba",
"md5": "01592be3c96e1df32a40d55ae1edd97b",
"sha256": "4a670eeabc930812a9290e891f53d408664875814edbb9f7469467860e031e62"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "01592be3c96e1df32a40d55ae1edd97b",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.5",
"size": 674823,
"upload_time": "2024-08-28T14:26:41",
"upload_time_iso_8601": "2024-08-28T14:26:41.840526Z",
"url": "https://files.pythonhosted.org/packages/8c/fc/4515f2e4481caaba3db4711036c21f28de54dbffe2517dca26de7c915bba/pytrimal-0.8.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5a08883ff55c128ec76a98f616c696f79fa39920bea4f3ae1d798fc643624aaf",
"md5": "74d382f54fcc5e9e0f3785e7abdb577c",
"sha256": "2c8faa9a5572712fbfb988c37ac06257263cc82dd8c6df3c55def4b747ea0e31"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "74d382f54fcc5e9e0f3785e7abdb577c",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.5",
"size": 700853,
"upload_time": "2024-08-28T14:26:43",
"upload_time_iso_8601": "2024-08-28T14:26:43.767042Z",
"url": "https://files.pythonhosted.org/packages/5a/08/883ff55c128ec76a98f616c696f79fa39920bea4f3ae1d798fc643624aaf/pytrimal-0.8.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2803f09d81ca9b7b2129b478da199ed6cf928ab8b4bbf20ba91cb24fe2a45ebe",
"md5": "7b3461ba73c6fad1d8623512cbd6b10c",
"sha256": "6e2057cf974f13f9d1ad91e4f6daa5e1e306966d18cf3c403a7c4b32f2c2c8c6"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "7b3461ba73c6fad1d8623512cbd6b10c",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": ">=3.5",
"size": 622182,
"upload_time": "2024-08-28T14:26:44",
"upload_time_iso_8601": "2024-08-28T14:26:44.988191Z",
"url": "https://files.pythonhosted.org/packages/28/03/f09d81ca9b7b2129b478da199ed6cf928ab8b4bbf20ba91cb24fe2a45ebe/pytrimal-0.8.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "364747f2e8e7f6309aafc7b9352d9df42cdcf15dc9014d56a426e8b7141e94b2",
"md5": "271fe5e9d3f3699a02ad49b3d0e853c4",
"sha256": "fa5e95afd1889a362ea8aa90fdb02068da5512472395fd0365c1ce2f37d09b10"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "271fe5e9d3f3699a02ad49b3d0e853c4",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": ">=3.5",
"size": 680071,
"upload_time": "2024-08-28T14:26:46",
"upload_time_iso_8601": "2024-08-28T14:26:46.607364Z",
"url": "https://files.pythonhosted.org/packages/36/47/47f2e8e7f6309aafc7b9352d9df42cdcf15dc9014d56a426e8b7141e94b2/pytrimal-0.8.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4660669522573dace3d3dc4b276f3834c1abf7846b776e5886e6961416ed067b",
"md5": "c7b188153ab5890f349955fd74d3c60a",
"sha256": "0643c1593639f1ce8c95fb1ffce63e8427418c6208792aa958ad145bec4f886b"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "c7b188153ab5890f349955fd74d3c60a",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": ">=3.5",
"size": 706784,
"upload_time": "2024-08-28T14:26:48",
"upload_time_iso_8601": "2024-08-28T14:26:48.584873Z",
"url": "https://files.pythonhosted.org/packages/46/60/669522573dace3d3dc4b276f3834c1abf7846b776e5886e6961416ed067b/pytrimal-0.8.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3214cfc60d89abc5b19f3ef37e0e6e867fc7542546bdd4dcf4855a3e89d8b278",
"md5": "c282b7f952b8a6a38814f0960d18f8ec",
"sha256": "d570b46dff05b7205753594e0ffe2eec0c3f96333edb0054cf5c48a7596cbca4"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "c282b7f952b8a6a38814f0960d18f8ec",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.5",
"size": 622238,
"upload_time": "2024-08-28T14:26:49",
"upload_time_iso_8601": "2024-08-28T14:26:49.722766Z",
"url": "https://files.pythonhosted.org/packages/32/14/cfc60d89abc5b19f3ef37e0e6e867fc7542546bdd4dcf4855a3e89d8b278/pytrimal-0.8.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d1f2dcab644e6b5b50f633cc4550a7deac8939f5efefd90e09e58d0cb43cb858",
"md5": "7b1362baac30bcb31d933dc982baf08b",
"sha256": "37cc2c6c1a3711ad6891c5a423264d8ac6b522f01e54929bfca81fb16740e000"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "7b1362baac30bcb31d933dc982baf08b",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.5",
"size": 677489,
"upload_time": "2024-08-28T14:26:50",
"upload_time_iso_8601": "2024-08-28T14:26:50.966745Z",
"url": "https://files.pythonhosted.org/packages/d1/f2/dcab644e6b5b50f633cc4550a7deac8939f5efefd90e09e58d0cb43cb858/pytrimal-0.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1a0ad4f79134c43471b164dfaf79cd1f76c72d11e32094f5d67e2be69c4f7eab",
"md5": "a956dd1003c18bff1db8e133da990436",
"sha256": "fa5c9190a9a674e13cd1403014c198a42d32eb1ebb5a7c845829d953099a3987"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a956dd1003c18bff1db8e133da990436",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.5",
"size": 702694,
"upload_time": "2024-08-28T14:26:52",
"upload_time_iso_8601": "2024-08-28T14:26:52.409599Z",
"url": "https://files.pythonhosted.org/packages/1a/0a/d4f79134c43471b164dfaf79cd1f76c72d11e32094f5d67e2be69c4f7eab/pytrimal-0.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c28db34840bb910e5fc57d6c69417e4563fd41c2a573d446507dabbbe06a3fd0",
"md5": "f39bd4fa052dc5ad0a5acf7c3ef4ff8f",
"sha256": "5de6c2355d25cf089278ce6b9cae11e061ca80721c2e568b682623a8ed556680"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "f39bd4fa052dc5ad0a5acf7c3ef4ff8f",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.5",
"size": 620233,
"upload_time": "2024-08-28T14:26:53",
"upload_time_iso_8601": "2024-08-28T14:26:53.684422Z",
"url": "https://files.pythonhosted.org/packages/c2/8d/b34840bb910e5fc57d6c69417e4563fd41c2a573d446507dabbbe06a3fd0/pytrimal-0.8.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "de2432b0f06db7a84a6087dd15215b584b1dda5023578b9a3a5ab12003e37b43",
"md5": "dd1eb21aa146e7aa1210d5e7ff91205e",
"sha256": "0b385115fa3dca7a9b20e259c1b0d3738c2f2806e87155f504f083b1ca907b2f"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "dd1eb21aa146e7aa1210d5e7ff91205e",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.5",
"size": 674628,
"upload_time": "2024-08-28T14:26:55",
"upload_time_iso_8601": "2024-08-28T14:26:55.350654Z",
"url": "https://files.pythonhosted.org/packages/de/24/32b0f06db7a84a6087dd15215b584b1dda5023578b9a3a5ab12003e37b43/pytrimal-0.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5019af1e0c55e5e3ddcef161dce3d4eb1a027e8f6fcc3ea7d83fe8a2203140c6",
"md5": "fad725fdf595255270bbc13638562675",
"sha256": "ae5ba21ef8f5bd2a0af4d30738eec65cd25c5cf80ffe3e7a66161be92b13bfc2"
},
"downloads": -1,
"filename": "pytrimal-0.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "fad725fdf595255270bbc13638562675",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.5",
"size": 700647,
"upload_time": "2024-08-28T14:26:56",
"upload_time_iso_8601": "2024-08-28T14:26:56.539727Z",
"url": "https://files.pythonhosted.org/packages/50/19/af1e0c55e5e3ddcef161dce3d4eb1a027e8f6fcc3ea7d83fe8a2203140c6/pytrimal-0.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6d4303610c9d80da55531f99e30cde2113eeb9da9d8a3967afcdceb1fda6bd54",
"md5": "3c877ad3841a4bf8ee93c027c44c38fe",
"sha256": "2331e67a74f3144d82373b6a79f42198f6632bd1b5025ab01cdd3eb527ef88cf"
},
"downloads": -1,
"filename": "pytrimal-0.8.0.tar.gz",
"has_sig": false,
"md5_digest": "3c877ad3841a4bf8ee93c027c44c38fe",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 739558,
"upload_time": "2024-08-28T14:26:57",
"upload_time_iso_8601": "2024-08-28T14:26:57.745590Z",
"url": "https://files.pythonhosted.org/packages/6d/43/03610c9d80da55531f99e30cde2113eeb9da9d8a3967afcdceb1fda6bd54/pytrimal-0.8.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-28 14:26:57",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "althonos",
"github_project": "pytrimal",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pytrimal"
}