# Evalica, your favourite evaluation toolkit
[![Evalica](https://raw.githubusercontent.com/dustalov/evalica/master/Evalica.svg)](https://github.com/dustalov/evalica)
[![Tests][github_tests_badge]][github_tests_link]
[![Read the Docs][rtfd_badge]][rtfd_link]
[![PyPI Version][pypi_badge]][pypi_link]
[![Anaconda.org][conda_badge]][conda_link]
[![Codecov][codecov_badge]][codecov_link]
[![CodSpeed Badge][codspeed_badge]][codspeed_link]
[github_tests_badge]: https://github.com/dustalov/evalica/actions/workflows/test.yml/badge.svg?branch=master
[github_tests_link]: https://github.com/dustalov/evalica/actions/workflows/test.yml
[rtfd_badge]: https://readthedocs.org/projects/evalica/badge/
[rtfd_link]: https://evalica.readthedocs.io/
[pypi_badge]: https://badge.fury.io/py/evalica.svg
[pypi_link]: https://pypi.python.org/pypi/evalica
[conda_badge]: https://anaconda.org/conda-forge/evalica/badges/version.svg
[conda_link]: https://anaconda.org/conda-forge/evalica
[codecov_badge]: https://codecov.io/gh/dustalov/evalica/branch/master/graph/badge.svg
[codecov_link]: https://codecov.io/gh/dustalov/evalica
[codspeed_badge]: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json
[codspeed_link]: https://codspeed.io/dustalov/evalica
**Evalica** is a Python library that transforms pairwise comparisons into ranked lists of items. It offers convenient high-performant Rust implementations of the corresponding methods via [PyO3](https://pyo3.rs/), and additionally provides naïve Python code for most of them. Evalica is fully compatible with [NumPy](https://numpy.org/) arrays and [pandas](https://pandas.pydata.org/) data frames.
- [Tutorial](https://dustalov.github.io/evalica/) (and [Tutorial.ipynb](Tutorial.ipynb))
- [Chatbot-Arena.ipynb](Chatbot-Arena.ipynb) [![Open in Colab][colab_badge]][colab_link] [![Binder][binder_badge]][binder_link]
- [Pair2Rank](https://huggingface.co/spaces/dustalov/pair2rank)
[colab_badge]: https://colab.research.google.com/assets/colab-badge.svg
[colab_link]: https://colab.research.google.com/github/dustalov/evalica/blob/master/Chatbot-Arena.ipynb
[binder_badge]: https://mybinder.org/badge_logo.svg
[binder_link]: https://mybinder.org/v2/gh/dustalov/evalica/HEAD?labpath=Chatbot-Arena.ipynb
The logo was created using [Recraft](https://www.recraft.ai/).
## Installation
- [pip](https://pip.pypa.io/): `pip install evalica`
- [Anaconda](https://docs.conda.io/en/latest/): `conda install conda-forge::evalica`
## Usage
Imagine that we would like to rank the different meals and have the following dataset of three comparisons produced by food experts.
| **Item X**| **Item Y** | **Winner** |
|:---:|:---:|:---:|
| `pizza` | `burger` | `x` |
| `burger` | `sushi` | `y` |
| `pizza` | `sushi` | `tie` |
Given this hypothetical example, Evalica takes these three columns and computes the outcome of the given pairwise comparison according to the chosen model. Note that the first argument is the column `Item X`, the second argument is the column `Item Y`, and the third argument corresponds to the column `Winner`.
```pycon
>>> from evalica import elo, Winner
>>> result = elo(
... ['pizza', 'burger', 'pizza'],
... ['burger', 'sushi', 'sushi'],
... [Winner.X, Winner.Y, Winner.Draw],
... )
>>> result.scores
pizza 1014.972058
burger 970.647200
sushi 1014.380742
Name: elo, dtype: float64
```
As a result, we obtain [Elo scores](https://en.wikipedia.org/wiki/Elo_rating_system) of our items. In this example, `pizza` was the most favoured item, `sushi` was the runner-up, and `burger` was the least preferred item.
| **Item**| **Score** |
|---|---:|
| `pizza` | 1014.97 |
| `burger` | 970.65 |
| `sushi` | 1014.38 |
## Command-Line Interface
Evalica also provides a simple command-line interface, allowing the use of these methods in shell scripts and for prototyping.
```
$ evalica -i food.csv bradley-terry
item,score,rank
Tacos,0.43428827947351706,1
Sushi,0.19060105855071743,2
Burger,0.14797720376982199,3
Pasta,0.12815347866987045,4
Pizza,0.0989799795360731,5
```
Refer to the [food.csv](food.csv) file as an input example.
## Implemented Methods
| **Method** | **In Python** | **In Rust** |
|---|:---:|:---:|
| Counting | ✅ | ✅ |
| Average Win Rate | ✅ | ✅ |
| [Bradley–Terry] | ✅ | ✅ |
| [Elo] | ✅ | ✅ |
| [Eigenvalue] | ✅ | ✅ |
| [PageRank] | ✅ | ✅ |
| [Newman] | ✅ | ✅ |
<!-- Present: ✅ / Absent: ❌ -->
[Bradley–Terry]: https://doi.org/10.2307/2334029
[Elo]: https://isbnsearch.org/isbn/9780923891275
[Eigenvalue]: https://doi.org/10.1086/228631
[PageRank]: https://doi.org/10.1016/S0169-7552(98)00110-X
[Newman]: https://jmlr.org/papers/v24/22-1086.html
## Copyright
Copyright (c) 2024 [Dmitry Ustalov](https://github.com/dustalov). See [LICENSE](LICENSE) for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "evalica",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.8",
"maintainer_email": null,
"keywords": "Bradley-Terry, Elo, PageRank, eigenvector, evaluation, leaderboard, pairwise comparisons, ranking, rating, statistics",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/f3/d2/2bdaf00df3eaf9fb0912f386c8ce793df900efba51d5cfe851af8eff32eb/evalica-0.2.0.tar.gz",
"platform": null,
"description": "# Evalica, your favourite evaluation toolkit\n\n[![Evalica](https://raw.githubusercontent.com/dustalov/evalica/master/Evalica.svg)](https://github.com/dustalov/evalica)\n\n[![Tests][github_tests_badge]][github_tests_link]\n[![Read the Docs][rtfd_badge]][rtfd_link]\n[![PyPI Version][pypi_badge]][pypi_link]\n[![Anaconda.org][conda_badge]][conda_link]\n[![Codecov][codecov_badge]][codecov_link]\n[![CodSpeed Badge][codspeed_badge]][codspeed_link]\n\n[github_tests_badge]: https://github.com/dustalov/evalica/actions/workflows/test.yml/badge.svg?branch=master\n[github_tests_link]: https://github.com/dustalov/evalica/actions/workflows/test.yml\n[rtfd_badge]: https://readthedocs.org/projects/evalica/badge/\n[rtfd_link]: https://evalica.readthedocs.io/\n[pypi_badge]: https://badge.fury.io/py/evalica.svg\n[pypi_link]: https://pypi.python.org/pypi/evalica\n[conda_badge]: https://anaconda.org/conda-forge/evalica/badges/version.svg\n[conda_link]: https://anaconda.org/conda-forge/evalica\n[codecov_badge]: https://codecov.io/gh/dustalov/evalica/branch/master/graph/badge.svg\n[codecov_link]: https://codecov.io/gh/dustalov/evalica\n[codspeed_badge]: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json\n[codspeed_link]: https://codspeed.io/dustalov/evalica\n\n**Evalica** is a Python library that transforms pairwise comparisons into ranked lists of items. It offers convenient high-performant Rust implementations of the corresponding methods via [PyO3](https://pyo3.rs/), and additionally provides na\u00efve Python code for most of them. Evalica is fully compatible with [NumPy](https://numpy.org/) arrays and [pandas](https://pandas.pydata.org/) data frames.\n\n- [Tutorial](https://dustalov.github.io/evalica/) (and [Tutorial.ipynb](Tutorial.ipynb))\n- [Chatbot-Arena.ipynb](Chatbot-Arena.ipynb) [![Open in Colab][colab_badge]][colab_link] [![Binder][binder_badge]][binder_link]\n- [Pair2Rank](https://huggingface.co/spaces/dustalov/pair2rank)\n\n[colab_badge]: https://colab.research.google.com/assets/colab-badge.svg\n[colab_link]: https://colab.research.google.com/github/dustalov/evalica/blob/master/Chatbot-Arena.ipynb\n[binder_badge]: https://mybinder.org/badge_logo.svg\n[binder_link]: https://mybinder.org/v2/gh/dustalov/evalica/HEAD?labpath=Chatbot-Arena.ipynb\n\nThe logo was created using [Recraft](https://www.recraft.ai/).\n\n## Installation\n\n- [pip](https://pip.pypa.io/): `pip install evalica`\n- [Anaconda](https://docs.conda.io/en/latest/): `conda install conda-forge::evalica`\n\n## Usage\n\nImagine that we would like to rank the different meals and have the following dataset of three comparisons produced by food experts.\n\n| **Item X**| **Item Y** | **Winner** |\n|:---:|:---:|:---:|\n| `pizza` | `burger` | `x` |\n| `burger` | `sushi` | `y` |\n| `pizza` | `sushi` | `tie` |\n\nGiven this hypothetical example, Evalica takes these three columns and computes the outcome of the given pairwise comparison according to the chosen model. Note that the first argument is the column `Item X`, the second argument is the column `Item Y`, and the third argument corresponds to the column `Winner`.\n\n```pycon\n>>> from evalica import elo, Winner\n>>> result = elo(\n... ['pizza', 'burger', 'pizza'],\n... ['burger', 'sushi', 'sushi'],\n... [Winner.X, Winner.Y, Winner.Draw],\n... )\n>>> result.scores\npizza 1014.972058\nburger 970.647200\nsushi 1014.380742\nName: elo, dtype: float64\n```\n\nAs a result, we obtain [Elo scores](https://en.wikipedia.org/wiki/Elo_rating_system) of our items. In this example, `pizza` was the most favoured item, `sushi` was the runner-up, and `burger` was the least preferred item.\n\n| **Item**| **Score** |\n|---|---:|\n| `pizza` | 1014.97 |\n| `burger` | 970.65 |\n| `sushi` | 1014.38 |\n\n## Command-Line Interface\n\nEvalica also provides a simple command-line interface, allowing the use of these methods in shell scripts and for prototyping.\n\n```\n$ evalica -i food.csv bradley-terry\nitem,score,rank\nTacos,0.43428827947351706,1\nSushi,0.19060105855071743,2\nBurger,0.14797720376982199,3\nPasta,0.12815347866987045,4\nPizza,0.0989799795360731,5\n```\n\nRefer to the [food.csv](food.csv) file as an input example.\n\n## Implemented Methods\n\n| **Method** | **In Python** | **In Rust** |\n|---|:---:|:---:|\n| Counting | ✅ | ✅ |\n| Average Win Rate | ✅ | ✅ |\n| [Bradley–Terry] | ✅ | ✅ |\n| [Elo] | ✅ | ✅ |\n| [Eigenvalue] | ✅ | ✅ |\n| [PageRank] | ✅ | ✅ |\n| [Newman] | ✅ | ✅ |\n\n<!-- Present: ✅ / Absent: ❌ -->\n\n[Bradley–Terry]: https://doi.org/10.2307/2334029\n[Elo]: https://isbnsearch.org/isbn/9780923891275\n[Eigenvalue]: https://doi.org/10.1086/228631\n[PageRank]: https://doi.org/10.1016/S0169-7552(98)00110-X\n[Newman]: https://jmlr.org/papers/v24/22-1086.html\n\n## Copyright\n\nCopyright (c) 2024 [Dmitry Ustalov](https://github.com/dustalov). See [LICENSE](LICENSE) for details.\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Evalica, your favourite evaluation toolkit.",
"version": "0.2.0",
"project_urls": {
"Changelog": "https://github.com/dustalov/evalica/releases",
"Documentation": "https://evalica.readthedocs.io/",
"Download": "https://pypi.org/project/evalica/#files",
"Homepage": "https://github.com/dustalov/evalica",
"Issues": "https://github.com/dustalov/evalica/issues",
"Repository": "https://github.com/dustalov/evalica"
},
"split_keywords": [
"bradley-terry",
" elo",
" pagerank",
" eigenvector",
" evaluation",
" leaderboard",
" pairwise comparisons",
" ranking",
" rating",
" statistics"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7edea1b195fded5ee899c2d44e3d9376b12b5ec2d6dfa6d854489f2c7d89b338",
"md5": "bea5d47f6fbe64aa07a2e901dcb87d3c",
"sha256": "9f2e60f1615348b2b3abf7a9ed10f8483eb620ad8439e0a5bfa94dc2b3b5897f"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "bea5d47f6fbe64aa07a2e901dcb87d3c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 324407,
"upload_time": "2024-08-29T22:34:10",
"upload_time_iso_8601": "2024-08-29T22:34:10.092814Z",
"url": "https://files.pythonhosted.org/packages/7e/de/a1b195fded5ee899c2d44e3d9376b12b5ec2d6dfa6d854489f2c7d89b338/evalica-0.2.0-cp38-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5e351143569d0e965f73c9e531f3ee9d83ba384969742f656f02f072a2fdb1a0",
"md5": "1d422f080c6b8445ff536888619167ee",
"sha256": "b39c6172fab66c8bb020c756f007536d8969c9f9cf577ba9a9a78e04dd48af22"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "1d422f080c6b8445ff536888619167ee",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 311035,
"upload_time": "2024-08-29T22:34:11",
"upload_time_iso_8601": "2024-08-29T22:34:11.914602Z",
"url": "https://files.pythonhosted.org/packages/5e/35/1143569d0e965f73c9e531f3ee9d83ba384969742f656f02f072a2fdb1a0/evalica-0.2.0-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "90cf5375b0407b3317e15502dc0426da6fe575847edb6e399bc22f4d12efe365",
"md5": "d8c502c9d34b8418a3ffbb9223f4ee29",
"sha256": "b4241f7e068cb853ee0f75f1246026653ff645ef8894c8298ef2a3c710417eaa"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "d8c502c9d34b8418a3ffbb9223f4ee29",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 355574,
"upload_time": "2024-08-29T22:34:13",
"upload_time_iso_8601": "2024-08-29T22:34:13.547435Z",
"url": "https://files.pythonhosted.org/packages/90/cf/5375b0407b3317e15502dc0426da6fe575847edb6e399bc22f4d12efe365/evalica-0.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "64c7754934ce275509257aacde08102f6a6e5f3a50fe451a298abca4be3d0aa6",
"md5": "22b8bed4a22ddd4e8afe06678dc50665",
"sha256": "1b4c6d5fc99c2419ace9c9690735be0554d7d9498d2f7119f9efa8a249b94830"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "22b8bed4a22ddd4e8afe06678dc50665",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 356887,
"upload_time": "2024-08-29T22:34:15",
"upload_time_iso_8601": "2024-08-29T22:34:15.294873Z",
"url": "https://files.pythonhosted.org/packages/64/c7/754934ce275509257aacde08102f6a6e5f3a50fe451a298abca4be3d0aa6/evalica-0.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b88258db778c71db1745bed38faad3a274fd0d272c6f459e31893aba995491fa",
"md5": "b8ecb9459877ffaad7c2dc4a6c957eec",
"sha256": "f806adff9a35f50be34f9a1bfe4048fe95643eace752c98efc54a8ae9db5f0bc"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "b8ecb9459877ffaad7c2dc4a6c957eec",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 372708,
"upload_time": "2024-08-29T22:34:17",
"upload_time_iso_8601": "2024-08-29T22:34:17.068993Z",
"url": "https://files.pythonhosted.org/packages/b8/82/58db778c71db1745bed38faad3a274fd0d272c6f459e31893aba995491fa/evalica-0.2.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dc5c7048bed40fd32608d92d7553dd5f53d8e33151b1e81bf5df3544fe18b059",
"md5": "7600a9514e142722d6446d51fffc7e98",
"sha256": "ad962515b5afdc1bbf8c4c351084c60e4181a3008c23405c0643952ebede1984"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-musllinux_1_1_aarch64.whl",
"has_sig": false,
"md5_digest": "7600a9514e142722d6446d51fffc7e98",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 534316,
"upload_time": "2024-08-29T22:34:19",
"upload_time_iso_8601": "2024-08-29T22:34:19.043888Z",
"url": "https://files.pythonhosted.org/packages/dc/5c/7048bed40fd32608d92d7553dd5f53d8e33151b1e81bf5df3544fe18b059/evalica-0.2.0-cp38-abi3-musllinux_1_1_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "339986d21dcaab29bf2ac5d078064d79788ac222e251a19e1acd67871b411698",
"md5": "5d044d94d0bbcb2f90c1781ee396de69",
"sha256": "752647446260eedc4afc22d41482c4434ef6c93812e61e11ee8173501cb9c25f"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "5d044d94d0bbcb2f90c1781ee396de69",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 527145,
"upload_time": "2024-08-29T22:34:20",
"upload_time_iso_8601": "2024-08-29T22:34:20.474155Z",
"url": "https://files.pythonhosted.org/packages/33/99/86d21dcaab29bf2ac5d078064d79788ac222e251a19e1acd67871b411698/evalica-0.2.0-cp38-abi3-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6a12b93063c1cd9015a33c1a8a7b44d3d49be9c898917391de3d487835bcb87f",
"md5": "f3280ae6a8118efd3a4c5746841fc805",
"sha256": "31c0b18896e21bb461d4266dd0c344b4568d01328afef12705653a071a0d11bf"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-win32.whl",
"has_sig": false,
"md5_digest": "f3280ae6a8118efd3a4c5746841fc805",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 207358,
"upload_time": "2024-08-29T22:34:21",
"upload_time_iso_8601": "2024-08-29T22:34:21.691930Z",
"url": "https://files.pythonhosted.org/packages/6a/12/b93063c1cd9015a33c1a8a7b44d3d49be9c898917391de3d487835bcb87f/evalica-0.2.0-cp38-abi3-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9a53454b6b97bbec64d79cbb5fd8dfdfdb88f700483eff0c60265869e0f5b652",
"md5": "dd9922e389b63d1a7d52889bab24dd84",
"sha256": "4b8c1c89af3b60b86cce872931c36f2474e1c94c4018e8d3371771b1f401ae30"
},
"downloads": -1,
"filename": "evalica-0.2.0-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "dd9922e389b63d1a7d52889bab24dd84",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "~=3.8",
"size": 226415,
"upload_time": "2024-08-29T22:34:23",
"upload_time_iso_8601": "2024-08-29T22:34:23.573994Z",
"url": "https://files.pythonhosted.org/packages/9a/53/454b6b97bbec64d79cbb5fd8dfdfdb88f700483eff0c60265869e0f5b652/evalica-0.2.0-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6c51246a241ced808b0a870bdb26e337b903641239d809b6b5664336fe81ad67",
"md5": "253c41fb02508ba2e4bb7de37326dcf9",
"sha256": "e9d717ebc54becbec47675e7d033186e4d74affccf888b15fd25fec6b5693add"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "253c41fb02508ba2e4bb7de37326dcf9",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "~=3.8",
"size": 321845,
"upload_time": "2024-08-29T22:34:25",
"upload_time_iso_8601": "2024-08-29T22:34:25.216071Z",
"url": "https://files.pythonhosted.org/packages/6c/51/246a241ced808b0a870bdb26e337b903641239d809b6b5664336fe81ad67/evalica-0.2.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a435ca711dead32d851d6b4679b9f79b4397945ec7a8ea7aa8c4e06efb79c26c",
"md5": "231b03697fa1d9638b459ca791d51921",
"sha256": "26bec72aaaada8309fca1b7478d1d3dfac3ba28b2ef5e1cc66fb221c897ccd42"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "231b03697fa1d9638b459ca791d51921",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "~=3.8",
"size": 307327,
"upload_time": "2024-08-29T22:34:26",
"upload_time_iso_8601": "2024-08-29T22:34:26.579958Z",
"url": "https://files.pythonhosted.org/packages/a4/35/ca711dead32d851d6b4679b9f79b4397945ec7a8ea7aa8c4e06efb79c26c/evalica-0.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b513200cb0f056188439f3ed880382a6aa5027de5ce1987d607496c9d38fe2bc",
"md5": "b9a58273147efd3ff62d8e6533ff890c",
"sha256": "1f57a8d741d40f12d9239907b80fd6fd78cea0da889aabaccfe4d6cca98fdc38"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "b9a58273147efd3ff62d8e6533ff890c",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "~=3.8",
"size": 353046,
"upload_time": "2024-08-29T22:34:28",
"upload_time_iso_8601": "2024-08-29T22:34:28.647456Z",
"url": "https://files.pythonhosted.org/packages/b5/13/200cb0f056188439f3ed880382a6aa5027de5ce1987d607496c9d38fe2bc/evalica-0.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c5829847bd3758e9e8e519aaabe059f35d1cb414299965b100512f84584cfe07",
"md5": "311518c85184117d655442915e018887",
"sha256": "08f50d871eea6184f8afe429631975b59c94349f55d4d25fc5443ff94578255e"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "311518c85184117d655442915e018887",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "~=3.8",
"size": 354183,
"upload_time": "2024-08-29T22:34:30",
"upload_time_iso_8601": "2024-08-29T22:34:30.610867Z",
"url": "https://files.pythonhosted.org/packages/c5/82/9847bd3758e9e8e519aaabe059f35d1cb414299965b100512f84584cfe07/evalica-0.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "114ffc4725515acd956537517fb65f3e7f220f4c8a3da04dcfc091f1db3b3c0f",
"md5": "4996044fb278696b63ba77327d0692c8",
"sha256": "c74e9ae3e0602d86c4e532d96b40d7fa68b05fc04f71f0f5d7bd8b67cf065eeb"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "4996044fb278696b63ba77327d0692c8",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "~=3.8",
"size": 367916,
"upload_time": "2024-08-29T22:34:32",
"upload_time_iso_8601": "2024-08-29T22:34:32.334210Z",
"url": "https://files.pythonhosted.org/packages/11/4f/fc4725515acd956537517fb65f3e7f220f4c8a3da04dcfc091f1db3b3c0f/evalica-0.2.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2175ad97b5837e0522ed1df712ca6ea8ac81cb61d63e0c961de8ddb185d5e455",
"md5": "caec8ae0fa156862b2f76cae07646f75",
"sha256": "b68da71812333e9153bebbfba8d3beace4d94245c2a84f727dc2226a3e8334ec"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl",
"has_sig": false,
"md5_digest": "caec8ae0fa156862b2f76cae07646f75",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "~=3.8",
"size": 531543,
"upload_time": "2024-08-29T22:34:33",
"upload_time_iso_8601": "2024-08-29T22:34:33.856633Z",
"url": "https://files.pythonhosted.org/packages/21/75/ad97b5837e0522ed1df712ca6ea8ac81cb61d63e0c961de8ddb185d5e455/evalica-0.2.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e6028f722d80105ad60196bd585a7044501ba9f55055111d9d1e2a680161fb95",
"md5": "5fd8183e58d19896ba3fc11a617bb8a0",
"sha256": "c4147a4171780e6807ef3dd6cba4cb19b379357faa9cb72c65f9c55b5bb6533b"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "5fd8183e58d19896ba3fc11a617bb8a0",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "~=3.8",
"size": 525650,
"upload_time": "2024-08-29T22:34:35",
"upload_time_iso_8601": "2024-08-29T22:34:35.404940Z",
"url": "https://files.pythonhosted.org/packages/e6/02/8f722d80105ad60196bd585a7044501ba9f55055111d9d1e2a680161fb95/evalica-0.2.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "632aaff3ff45be8056fa673a08d7c429016cee2ad3d8692dd1d43c22c0a2a41e",
"md5": "481cc27d0f4c7a8454e765c334890811",
"sha256": "cdd3067086ef92aa9878992cd63d3d7d695b905eca2b5cc3e238a49c7cd5e47a"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "481cc27d0f4c7a8454e765c334890811",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": "~=3.8",
"size": 322216,
"upload_time": "2024-08-29T22:34:36",
"upload_time_iso_8601": "2024-08-29T22:34:36.583057Z",
"url": "https://files.pythonhosted.org/packages/63/2a/aff3ff45be8056fa673a08d7c429016cee2ad3d8692dd1d43c22c0a2a41e/evalica-0.2.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "162fcbc770600e190513ecebd98a1efc94965f4a5c9f34392f1ac74cf7df2ca4",
"md5": "c7e2c7a7663da8ca675d8baeb25d7668",
"sha256": "4315a2a9be234a19282344d243021217f5f575705c0c25e628bf40bad157174c"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c7e2c7a7663da8ca675d8baeb25d7668",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": "~=3.8",
"size": 307436,
"upload_time": "2024-08-29T22:34:38",
"upload_time_iso_8601": "2024-08-29T22:34:38.065769Z",
"url": "https://files.pythonhosted.org/packages/16/2f/cbc770600e190513ecebd98a1efc94965f4a5c9f34392f1ac74cf7df2ca4/evalica-0.2.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "28798baa6f07976ebc7b83747f6c7d44d22d76d946ada0a034e83431981d8525",
"md5": "e9914ebd4bc582000841e963b77e6a55",
"sha256": "8946efedaa909e109be54ba2ca746bd6af42cceb0e2ed195998b78ff01aaf55d"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "e9914ebd4bc582000841e963b77e6a55",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": "~=3.8",
"size": 353144,
"upload_time": "2024-08-29T22:34:39",
"upload_time_iso_8601": "2024-08-29T22:34:39.265388Z",
"url": "https://files.pythonhosted.org/packages/28/79/8baa6f07976ebc7b83747f6c7d44d22d76d946ada0a034e83431981d8525/evalica-0.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ccc30e12f36d67244cf903490dd433609bccfe8c4989a04494821a850c37f110",
"md5": "44058b15a224b722c1c0590dbb11b902",
"sha256": "a553e6909dd11acdb9c9683b360c20559ee62e585c35211372a759334e0d0c24"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "44058b15a224b722c1c0590dbb11b902",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": "~=3.8",
"size": 354511,
"upload_time": "2024-08-29T22:34:40",
"upload_time_iso_8601": "2024-08-29T22:34:40.771331Z",
"url": "https://files.pythonhosted.org/packages/cc/c3/0e12f36d67244cf903490dd433609bccfe8c4989a04494821a850c37f110/evalica-0.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "665ccf53880846901e02baca97dddc4adcaf2d7474175a6c83a91a305a477a8c",
"md5": "c6358e2cf7b98cd73dc02e12b34ecc17",
"sha256": "30dac65b1db4f7ed47e64a9281f5c0d8998c28de8f50561798f682da5343d146"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "c6358e2cf7b98cd73dc02e12b34ecc17",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": "~=3.8",
"size": 369350,
"upload_time": "2024-08-29T22:34:42",
"upload_time_iso_8601": "2024-08-29T22:34:42.523132Z",
"url": "https://files.pythonhosted.org/packages/66/5c/cf53880846901e02baca97dddc4adcaf2d7474175a6c83a91a305a477a8c/evalica-0.2.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "23d97b03bf45434eada1042d77fe4905995670c1640c83264e4bdedd2d54b1b0",
"md5": "dbc659d410d1a199f8d94fbd8308072f",
"sha256": "3fdd572602af81e7f4d02492aa32698f940272f2268f290a66b06a3e0fda4bb8"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl",
"has_sig": false,
"md5_digest": "dbc659d410d1a199f8d94fbd8308072f",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": "~=3.8",
"size": 531556,
"upload_time": "2024-08-29T22:34:44",
"upload_time_iso_8601": "2024-08-29T22:34:44.445815Z",
"url": "https://files.pythonhosted.org/packages/23/d9/7b03bf45434eada1042d77fe4905995670c1640c83264e4bdedd2d54b1b0/evalica-0.2.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bb37ca726e12693d0485f0a6d5b16fd0386ff25b8362c47d29d680008f992318",
"md5": "4b67c21726a29abd0db0717a03805fdc",
"sha256": "d824bd2a0a01d5154b881d447fbde7054bc2095b919016f900bfec35ed125bc2"
},
"downloads": -1,
"filename": "evalica-0.2.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "4b67c21726a29abd0db0717a03805fdc",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": "~=3.8",
"size": 525867,
"upload_time": "2024-08-29T22:34:45",
"upload_time_iso_8601": "2024-08-29T22:34:45.908196Z",
"url": "https://files.pythonhosted.org/packages/bb/37/ca726e12693d0485f0a6d5b16fd0386ff25b8362c47d29d680008f992318/evalica-0.2.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f3d22bdaf00df3eaf9fb0912f386c8ce793df900efba51d5cfe851af8eff32eb",
"md5": "d8a4bf9aa71d2e2191bb7bad964b3890",
"sha256": "b3dc2a7114ca36e874236685025b7ec83e85749b9e09949f875f73c31594ecf6"
},
"downloads": -1,
"filename": "evalica-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "d8a4bf9aa71d2e2191bb7bad964b3890",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.8",
"size": 30531,
"upload_time": "2024-08-29T22:34:46",
"upload_time_iso_8601": "2024-08-29T22:34:46.965316Z",
"url": "https://files.pythonhosted.org/packages/f3/d2/2bdaf00df3eaf9fb0912f386c8ce793df900efba51d5cfe851af8eff32eb/evalica-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-29 22:34:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dustalov",
"github_project": "evalica",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "evalica"
}