<p align="center">
<div style="text-align:center">
<img src="https://drive.google.com/uc?export=download&id=1R8PuTqnwQwZracP39JYmz91KnINiwt6e" />
</div>
</p>
# PyXAI - Python eXplainable AI
- Documentation: [http://www.cril.univ-artois.fr/pyxai/](http://www.cril.univ-artois.fr/pyxai/)
- Git: [https://github.com/crillab/pyxai](https://github.com/crillab/pyxai)
- Installation: [http://www.cril.univ-artois.fr/pyxai/documentation/installation/](http://www.cril.univ-artois.fr/pyxai/documentation/installation/)
<h3>What is PyXAI ?</h3>
<p align="justify">
<b>PyXAI (Python eXplainable AI)</b> is a <a href="https://www.python.org/">Python</a> library (version 3.6 or later) allowing to bring explanations of various forms suited to <b>(regression or classification) tree-based ML models</b> (Decision Trees, Random Forests, Boosted Trees, ...). In contrast to many approaches to XAI (SHAP, Lime, ...), PyXAI algorithms are <b>model-specific</b>. Furthermore, PyXAI algorithms <b>guarantee certain properties</b> about the explanations generated, that can be of several types:
</p>
<ul>
<li><b>Abductive explanations</b> for an instance $X$ are intended to explain why $X$ has been classified in the way it has been classified by the ML model (thus, addressing the “Why?” question). For the regression tasks, abductive explanations for $X$ are intended to explain why the regression value on $X$ is in a given interval.</li>
<li><b>Contrastive explanations</b> for $X$ is to explain why $X$ has not been classified by the ML model as the user expected it (thus, addressing the “Why not?” question).</li>
</ul>
> <b> New features in version 1.0.0:</b>
> <ul>
> <li>Regression for Boosted Trees with XGBoost or LightGBM</li>
> <li>Adding Theories (knowledge about the dataset)</li>
> <li>Easier model import (automatic detection of model types)</li>
> <li>PyXAI's Graphical User Interface (GUI): displaying, loading and saving explanations. </li>
> <li>Supports multiple image formats for imaging datasets</li>
> <li>Supports data pre-processing (tool for preparing and cleansing a dataset)</li>
> <li>Unit Tests with the unittest module</li>
> </ul>
<figure>
<img src="http://www.cril.univ-artois.fr/pyxai/assets/figures/pyxai2.png" alt="pyxai" />
<figcaption>PyXAI's main steps for producing explanations.</figcaption>
</figure>
<figure>
<img src="http://www.cril.univ-artois.fr/pyxai/assets/figures/GUI.png" alt="pyxai" />
<img src="http://www.cril.univ-artois.fr/pyxai/assets/figures/GUI2.png" alt="pyxai" />
<figcaption>PyXAI's Graphical User Interface (GUI) for visualizing explanations.</figcaption>
</figure>
<h3>What is the difference between PyXAI and other methods ?</h3>
<p align="justify">
The most popular approaches (SHAP, Lime, ...) to XAI <b>are model-agnostic, but do not offer any guarantees</b> of rigor. A number of <a href="https://arxiv.org/pdf/2307.07514.pdf">works</a> have highlighted several misconceptions about informal approaches to XAI (see the <a href="https://www.cril.univ-artois.fr/pyxai/papers/">related papers</a>). Contrastingly, <b>PyXAI algorithms rely on logic-based, model-precise</b> approaches for computing explanations. Although formal explainability has a number of drawbacks, particularly in terms of the computational complexity of logical reasoning needed to derive explanations, <b>steady progress has been made since its inception</b>.
</p>
<h3>Which models can be explained with PyXAI ?</h3>
<p align="justify">
Models are the resulting objects of an experimental ML protocol through a chosen <b>cross-validation method</b> (for example, the result of a training phase on a classifier). Importantly, in PyXAI, there is a complete separation between the learning phase and the explaining phase: <b>you produce/load/save models, and you find explanations for some instances given such models</b>. Currently, with PyXAI, you can use methods to find explanations suited to different <b>ML models for classification or regression tasks</b>:
</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Decision_tree_learning">Decision Tree</a> (DT)</li>
<li><a href="https://en.wikipedia.org/wiki/Random_forest">Random Forest</a> (RF)</li>
<li><a href="https://en.wikipedia.org/wiki/Gradient_boosting">Boosted Tree (Gradient boosting)</a> (BT)</li>
</ul>
<p align="justify">
In addition to finding explanations, PyXAI also provides methods that perform operations (production, saving, loading) on models and instances. Currently, these methods are available for three <b>ML libraries</b>:
</p>
<ul>
<li><a href="https://scikit-learn.org/stable/">Scikit-learn</a>: a software machine learning library</li>
<li><a href="https://xgboost.readthedocs.io/en/stable/">XGBoost</a>: an optimized distributed gradient boosting library</li>
<li><a href="https://lightgbm.readthedocs.io/en/stable/">LightGBM</a>: a gradient boosting framework that uses tree based learning algorithms</li>
</ul>
<p align="justify">
It is possible to also leverage PyXAI to find explanations suited to models learned using other libraries.
</p>
<h3>What does this website offer ?</h3>
<p align="justify">
In this website, you can find all what you need to know about PyXAI, with more than 10 <a href="https://jupyter.org/">Jupyter</a> Notebooks, including:
</p>
<ul>
<li>The <a href="https://www.cril.univ-artois.fr/pyxai/documentation/installation/">installation guide</a> and the <a href="https://www.cril.univ-artois.fr/pyxai/documentation/quickstart/">quick start</a></li>
<li>About obtaining models:</li>
<ul>
<li>How to <b>prepare and clean a dataset</b> using the PyXAI <a href="https://www.cril.univ-artois.fr/pyxai/documentation/preprocessor/">preprocessor</a> object?</li>
<li>How to <b>import a model</b>, whatever its format? <a href="https://www.cril.univ-artois.fr/pyxai/documentation/importing/"> Importing Models</a> </li>
<li>How to <b>generate a model using a ML cross-validation method</b>? <a href="https://www.cril.univ-artois.fr/pyxai/documentation/learning/generating/">Generating Models</a> </li>
<li>How to <b>build a model from trees directly built by the user</b>? <a href="https://www.cril.univ-artois.fr/pyxai/documentation/learning/builder/">Building Models</a></li>
<li>How to <b>save and load models</b> with the PyXAI learning module? <a href="https://www.cril.univ-artois.fr/pyxai/documentation/saving/">Saving/Loading Models</a></li>
</ul>
<li>About obtaining explanations:</li>
<ul>
<li>The <b>concepts of the PyXAI explainer module</b>: <a href="https://www.cril.univ-artois.fr/pyxai/documentation/explainer/concepts/">Concepts</a> </li>
<li>How to use a <b>time limit</b>? <a href="https://www.cril.univ-artois.fr/pyxai/documentation/explainer/time_limit/">Time Limit</a> </li>
<li>The PyXAI library offers the possibility to process user preferences (<b>prefer some explanations to others or exclude some features</b>): <a href="https://www.cril.univ-artois.fr/pyxai/documentation/explainer/preferences/">Preferences</a> </li>
<li><b>Theories are knowledge about the dataset.</b> PyXAI offers the possibility of encoding a theory when calculating explanations in order to avoid calculating impossible explanations: <a href="https://www.cril.univ-artois.fr/pyxai/documentation/explainer/theories/">Theories</a> </li>
<li>How to <b>compute explanations for classification tasks</b>? <a href="https://www.cril.univ-artois.fr/pyxai/documentation/classification/">Explaining Classification</a> </li>
<li>How to <b>compute explanations for regression tasks</b>? <a href="https://www.cril.univ-artois.fr/pyxai/documentation/regression/">Explaining Regression</a> </li>
</ul>
<li>How to use the <b>PyXAI's Graphical User Interface (GUI)</b> for <a href="https://www.cril.univ-artois.fr/pyxai/documentation/visualization/">visualizing explanations</a>?</li>
</ul>
<h3>How to use PyXAI ?</h3>
<p align="justify">
Here is an example (it comes from the <a href="https://www.cril.univ-artois.fr/pyxai/documentation/quickstart">Quick Start page</a>):
</p>
<h4 class="example">PyXAI in action</h4>
```python
from pyxai import Learning, Explainer
learner = Learning.Scikitlearn("tests/iris.csv", learner_type=Learning.CLASSIFICATION)
model = learner.evaluate(method=Learning.HOLD_OUT, output=Learning.DT)
instance, prediction = learner.get_instances(model, n=1, correct=True, predictions=[0])
explainer = Explainer.initialize(model, instance)
print("instance:", instance)
print("binary representation:", explainer.binary_representation)
sufficient_reason = explainer.sufficient_reason(n=1)
print("sufficient_reason:", sufficient_reason)
print("to_features:", explainer.to_features(sufficient_reason))
instance, prediction = learner.get_instances(model, n=1, correct=False)
explainer.set_instance(instance)
contrastive_reason = explainer.contrastive_reason()
print("contrastive reason", contrastive_reason)
print("to_features:", explainer.to_features(contrastive_reason, contrastive=True))
explainer.open_GUI()
```
<img src="https://www.cril.univ-artois.fr/pyxai/assets/figures/pyxaiGUI.png" alt="pyxai" />
<p>As illustrated by this example, with a few lines of code, PyXAI allows you to train a model, extract instances, and get explanations about the classifications made.</p>
<br /><br />
<p align="center">
<a href="http://www.cril.univ-artois.fr"><img width="140px" src="https://www.cril.univ-artois.fr/pyxai/assets/figures/cril.png" /></a>
<a href="https://www.cnrs.fr/"><img width="80px" style="width: 80px;" src="https://www.cril.univ-artois.fr/pyxai/assets/figures/cnrs.png" /></a>
<a href="https://www.confiance.ai/"><img width="140px" style="width: 120px;" src="https://www.cril.univ-artois.fr/pyxai/assets/figures/confianceai.jpg" /></a>
<a href="https://www.hautsdefrance.fr/"><img width="120px" style="width: 80px;" src="https://www.cril.univ-artois.fr/pyxai/assets/figures/logo_HDF.svg" /></a>
<a href="http://univ-artois.fr"><img width="120px" src="https://www.cril.univ-artois.fr/pyxai/assets/figures/artois.png" /></a>
</p>
Raw data
{
"_id": null,
"home_page": "",
"name": "pyxai",
"maintainer": "Gilles Audemard, Nicolas Szczepanski",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "audemard@cril.fr, szczepanski@cril.fr",
"keywords": "XAI AI ML explainable learning",
"author": "Gilles Audemard, Steve Bellart, Louenas Bounia, Jean-Marie Lagniez, Pierre Marquis, Nicolas Szczepanski:",
"author_email": "audemard@cril.fr, bellart@cril.fr, bounia@cril.fr, lagniez@cril.fr, marquis@cril.fr, szczepanski@cril.fr",
"download_url": "",
"platform": "LINUX",
"description": "\n<p align=\"center\">\n <div style=\"text-align:center\">\n <img src=\"https://drive.google.com/uc?export=download&id=1R8PuTqnwQwZracP39JYmz91KnINiwt6e\" />\n </div>\n</p>\n\n# PyXAI - Python eXplainable AI\n\n- Documentation: [http://www.cril.univ-artois.fr/pyxai/](http://www.cril.univ-artois.fr/pyxai/)\n- Git: [https://github.com/crillab/pyxai](https://github.com/crillab/pyxai)\n- Installation: [http://www.cril.univ-artois.fr/pyxai/documentation/installation/](http://www.cril.univ-artois.fr/pyxai/documentation/installation/)\n\n<h3>What is PyXAI ?</h3>\n<p align=\"justify\">\n<b>PyXAI (Python eXplainable AI)</b> is a <a href=\"https://www.python.org/\">Python</a> library (version 3.6 or later) allowing to bring explanations of various forms suited to <b>(regression or classification) tree-based ML models</b> (Decision Trees, Random Forests, Boosted Trees, ...). In contrast to many approaches to XAI (SHAP, Lime, ...), PyXAI algorithms are <b>model-specific</b>. Furthermore, PyXAI algorithms <b>guarantee certain properties</b> about the explanations generated, that can be of several types:\n</p>\n<ul>\n <li><b>Abductive explanations</b> for an instance $X$ are intended to explain why $X$ has been classified in the way it has been classified by the ML model (thus, addressing the \u201cWhy?\u201d question). For the regression tasks, abductive explanations for $X$ are intended to explain why the regression value on $X$ is in a given interval.</li>\n <li><b>Contrastive explanations</b> for $X$ is to explain why $X$ has not been classified by the ML model as the user expected it (thus, addressing the \u201cWhy not?\u201d question).</li>\n</ul>\n\n> <b> New features in version 1.0.0:</b>\n> <ul>\n> <li>Regression for Boosted Trees with XGBoost or LightGBM</li>\n> <li>Adding Theories (knowledge about the dataset)</li>\n> <li>Easier model import (automatic detection of model types)</li>\n> <li>PyXAI's Graphical User Interface (GUI): displaying, loading and saving explanations. </li>\n> <li>Supports multiple image formats for imaging datasets</li>\n> <li>Supports data pre-processing (tool for preparing and cleansing a dataset)</li>\n> <li>Unit Tests with the unittest module</li>\n> </ul> \n\n<figure>\n <img src=\"http://www.cril.univ-artois.fr/pyxai/assets/figures/pyxai2.png\" alt=\"pyxai\" />\n <figcaption>PyXAI's main steps for producing explanations.</figcaption>\n</figure>\n\n<figure>\n <img src=\"http://www.cril.univ-artois.fr/pyxai/assets/figures/GUI.png\" alt=\"pyxai\" />\n <img src=\"http://www.cril.univ-artois.fr/pyxai/assets/figures/GUI2.png\" alt=\"pyxai\" />\n <figcaption>PyXAI's Graphical User Interface (GUI) for visualizing explanations.</figcaption>\n</figure>\n\n<h3>What is the difference between PyXAI and other methods ?</h3>\n<p align=\"justify\">\n\nThe most popular approaches (SHAP, Lime, ...) to XAI <b>are model-agnostic, but do not offer any guarantees</b> of rigor. A number of <a href=\"https://arxiv.org/pdf/2307.07514.pdf\">works</a> have highlighted several misconceptions about informal approaches to XAI (see the <a href=\"https://www.cril.univ-artois.fr/pyxai/papers/\">related papers</a>). Contrastingly, <b>PyXAI algorithms rely on logic-based, model-precise</b> approaches for computing explanations. Although formal explainability has a number of drawbacks, particularly in terms of the computational complexity of logical reasoning needed to derive explanations, <b>steady progress has been made since its inception</b>. \n</p>\n\n\n<h3>Which models can be explained with PyXAI ?</h3>\n<p align=\"justify\">\nModels are the resulting objects of an experimental ML protocol through a chosen <b>cross-validation method</b> (for example, the result of a training phase on a classifier). Importantly, in PyXAI, there is a complete separation between the learning phase and the explaining phase: <b>you produce/load/save models, and you find explanations for some instances given such models</b>. Currently, with PyXAI, you can use methods to find explanations suited to different <b>ML models for classification or regression tasks</b>:\n</p>\n<ul>\n <li><a href=\"https://en.wikipedia.org/wiki/Decision_tree_learning\">Decision Tree</a> (DT)</li> \n <li><a href=\"https://en.wikipedia.org/wiki/Random_forest\">Random Forest</a> (RF)</li>\n <li><a href=\"https://en.wikipedia.org/wiki/Gradient_boosting\">Boosted Tree (Gradient boosting)</a> (BT)</li>\n</ul> \n<p align=\"justify\">\nIn addition to finding explanations, PyXAI also provides methods that perform operations (production, saving, loading) on models and instances. Currently, these methods are available for three <b>ML libraries</b>:\n</p>\n<ul>\n <li><a href=\"https://scikit-learn.org/stable/\">Scikit-learn</a>: a software machine learning library</li> \n <li><a href=\"https://xgboost.readthedocs.io/en/stable/\">XGBoost</a>: an optimized distributed gradient boosting library</li>\n <li><a href=\"https://lightgbm.readthedocs.io/en/stable/\">LightGBM</a>: a gradient boosting framework that uses tree based learning algorithms</li>\n</ul> \n<p align=\"justify\">\nIt is possible to also leverage PyXAI to find explanations suited to models learned using other libraries.\n</p>\n\n<h3>What does this website offer ?</h3>\n<p align=\"justify\">\nIn this website, you can find all what you need to know about PyXAI, with more than 10 <a href=\"https://jupyter.org/\">Jupyter</a> Notebooks, including:\n</p>\n<ul>\n <li>The <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/installation/\">installation guide</a> and the <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/quickstart/\">quick start</a></li>\n \n <li>About obtaining models:</li>\n <ul>\n <li>How to <b>prepare and clean a dataset</b> using the PyXAI <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/preprocessor/\">preprocessor</a> object?</li>\n <li>How to <b>import a model</b>, whatever its format? <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/importing/\"> Importing Models</a> </li>\n <li>How to <b>generate a model using a ML cross-validation method</b>? <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/learning/generating/\">Generating Models</a> </li>\n \n <li>How to <b>build a model from trees directly built by the user</b>? <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/learning/builder/\">Building Models</a></li>\n <li>How to <b>save and load models</b> with the PyXAI learning module? <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/saving/\">Saving/Loading Models</a></li>\n </ul>\n\n<li>About obtaining explanations:</li>\n <ul>\n <li>The <b>concepts of the PyXAI explainer module</b>: <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/explainer/concepts/\">Concepts</a> </li>\n <li>How to use a <b>time limit</b>? <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/explainer/time_limit/\">Time Limit</a> </li>\n \n <li>The PyXAI library offers the possibility to process user preferences (<b>prefer some explanations to others or exclude some features</b>): <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/explainer/preferences/\">Preferences</a> </li>\n\n <li><b>Theories are knowledge about the dataset.</b> PyXAI offers the possibility of encoding a theory when calculating explanations in order to avoid calculating impossible explanations: <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/explainer/theories/\">Theories</a> </li>\n\n <li>How to <b>compute explanations for classification tasks</b>? <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/classification/\">Explaining Classification</a> </li>\n \n <li>How to <b>compute explanations for regression tasks</b>? <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/regression/\">Explaining Regression</a> </li>\n \n </ul>\n\n <li>How to use the <b>PyXAI's Graphical User Interface (GUI)</b> for <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/visualization/\">visualizing explanations</a>?</li>\n \n \n</ul>\n\n<h3>How to use PyXAI ?</h3>\n<p align=\"justify\">\nHere is an example (it comes from the <a href=\"https://www.cril.univ-artois.fr/pyxai/documentation/quickstart\">Quick Start page</a>):\n</p>\n<h4 class=\"example\">PyXAI in action</h4>\n\n```python\nfrom pyxai import Learning, Explainer\n\nlearner = Learning.Scikitlearn(\"tests/iris.csv\", learner_type=Learning.CLASSIFICATION)\nmodel = learner.evaluate(method=Learning.HOLD_OUT, output=Learning.DT)\ninstance, prediction = learner.get_instances(model, n=1, correct=True, predictions=[0])\n\nexplainer = Explainer.initialize(model, instance)\nprint(\"instance:\", instance)\nprint(\"binary representation:\", explainer.binary_representation)\n\nsufficient_reason = explainer.sufficient_reason(n=1)\nprint(\"sufficient_reason:\", sufficient_reason)\nprint(\"to_features:\", explainer.to_features(sufficient_reason))\n\ninstance, prediction = learner.get_instances(model, n=1, correct=False)\nexplainer.set_instance(instance)\ncontrastive_reason = explainer.contrastive_reason()\nprint(\"contrastive reason\", contrastive_reason)\nprint(\"to_features:\", explainer.to_features(contrastive_reason, contrastive=True))\n\nexplainer.open_GUI()\n```\n\n<img src=\"https://www.cril.univ-artois.fr/pyxai/assets/figures/pyxaiGUI.png\" alt=\"pyxai\" />\n\n<p>As illustrated by this example, with a few lines of code, PyXAI allows you to train a model, extract instances, and get explanations about the classifications made.</p>\n\n<br /><br />\n<p align=\"center\">\n <a href=\"http://www.cril.univ-artois.fr\"><img width=\"140px\" src=\"https://www.cril.univ-artois.fr/pyxai/assets/figures/cril.png\" /></a>\n <a href=\"https://www.cnrs.fr/\"><img width=\"80px\" style=\"width: 80px;\" src=\"https://www.cril.univ-artois.fr/pyxai/assets/figures/cnrs.png\" /></a>\n <a href=\"https://www.confiance.ai/\"><img width=\"140px\" style=\"width: 120px;\" src=\"https://www.cril.univ-artois.fr/pyxai/assets/figures/confianceai.jpg\" /></a>\n <a href=\"https://www.hautsdefrance.fr/\"><img width=\"120px\" style=\"width: 80px;\" src=\"https://www.cril.univ-artois.fr/pyxai/assets/figures/logo_HDF.svg\" /></a>\n <a href=\"http://univ-artois.fr\"><img width=\"120px\" src=\"https://www.cril.univ-artois.fr/pyxai/assets/figures/artois.png\" /></a>\n</p>\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Explaining Machine Learning Classifiers in Python",
"version": "1.0.12",
"project_urls": {
"Documentation": "http://www.cril.univ-artois.fr/pyxai/",
"Git": "https://github.com/crillab/pyxai",
"Installation": "http://www.cril.univ-artois.fr/pyxai/documentation/installation/"
},
"split_keywords": [
"xai",
"ai",
"ml",
"explainable",
"learning"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f977326315cb3a1bc57bcaf175bf5117c1975df367b058edd084b74f72875693",
"md5": "a56498c694d5592662bbdaf059234a99",
"sha256": "38480d7093d3b0acfb1adc9ba909fb256f8513ed3b13fb2e10e72e2f2934e238"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "a56498c694d5592662bbdaf059234a99",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 11914286,
"upload_time": "2024-02-02T08:49:41",
"upload_time_iso_8601": "2024-02-02T08:49:41.710673Z",
"url": "https://files.pythonhosted.org/packages/f9/77/326315cb3a1bc57bcaf175bf5117c1975df367b058edd084b74f72875693/pyxai-1.0.12-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6b2d1749d933902da308ad6c628faa6da9ed9bcb796abaa682864e20b0b0a92b",
"md5": "a334a2baf5a928c4fdf6d4201d45392b",
"sha256": "4c3f39c363118985eb77a911c15e44402a65c857a5f7fe78e87d42e22eb11324"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a334a2baf5a928c4fdf6d4201d45392b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 11924259,
"upload_time": "2024-02-02T08:49:45",
"upload_time_iso_8601": "2024-02-02T08:49:45.182959Z",
"url": "https://files.pythonhosted.org/packages/6b/2d/1749d933902da308ad6c628faa6da9ed9bcb796abaa682864e20b0b0a92b/pyxai-1.0.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "874d2557ab45ad481cf383809f1e1706b92b0c72559b1186817ad95141e28e16",
"md5": "dc2b6c3a25711f60da580d55921ce456",
"sha256": "233ba0684867f6afb4b1b5c7b1296363bb5ec80a1738209e60af363b2269ef24"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp310-cp310-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "dc2b6c3a25711f60da580d55921ce456",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 12483608,
"upload_time": "2024-02-02T08:49:48",
"upload_time_iso_8601": "2024-02-02T08:49:48.362930Z",
"url": "https://files.pythonhosted.org/packages/87/4d/2557ab45ad481cf383809f1e1706b92b0c72559b1186817ad95141e28e16/pyxai-1.0.12-cp310-cp310-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "df0af197fd301be33fd0088e43056654410b1173b3f442477a27cc9b711817f6",
"md5": "d425b0851ddbf3313ecb4c9749559fa3",
"sha256": "a36d75aa5bce1121a3e03e3930f01e706e66ad9edc89ee67c6e863a08e103c95"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp310-cp310-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "d425b0851ddbf3313ecb4c9749559fa3",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 12453233,
"upload_time": "2024-02-02T08:49:51",
"upload_time_iso_8601": "2024-02-02T08:49:51.448054Z",
"url": "https://files.pythonhosted.org/packages/df/0a/f197fd301be33fd0088e43056654410b1173b3f442477a27cc9b711817f6/pyxai-1.0.12-cp310-cp310-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6798cce7bc8bf5c7e09669317fd25399f417ad743ec2a88dc856cea96e0a6873",
"md5": "abfefd4e1e524b90af26eeba048785e8",
"sha256": "18414bb2d97c530052b0e620560aa03b91cb1688c24d4a2481c7d182d855dba7"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "abfefd4e1e524b90af26eeba048785e8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 11914602,
"upload_time": "2024-02-02T08:49:54",
"upload_time_iso_8601": "2024-02-02T08:49:54.504399Z",
"url": "https://files.pythonhosted.org/packages/67/98/cce7bc8bf5c7e09669317fd25399f417ad743ec2a88dc856cea96e0a6873/pyxai-1.0.12-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "528078f1b6ceaa427fcef73a9b8775ddceae97b5def176050d6f581d63cffb89",
"md5": "0413ab724a65d040eb42fd0600bd1e9d",
"sha256": "1560a970ef0405d7258cbb02ebafc2464c38dc3060afa1696434731ab0399d1b"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "0413ab724a65d040eb42fd0600bd1e9d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 11924696,
"upload_time": "2024-02-02T08:49:58",
"upload_time_iso_8601": "2024-02-02T08:49:58.383159Z",
"url": "https://files.pythonhosted.org/packages/52/80/78f1b6ceaa427fcef73a9b8775ddceae97b5def176050d6f581d63cffb89/pyxai-1.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d09ca72b79d957b4b96768f6a9472821cc41ecca89efe484815ba91b1d2280f7",
"md5": "1fc8d40933f9baf0bcf75506e22b9a8c",
"sha256": "94fb811cb5300624e6ef54ae312a293495fd63332e829acd94c285e7d3d5fc84"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp311-cp311-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "1fc8d40933f9baf0bcf75506e22b9a8c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 12486253,
"upload_time": "2024-02-02T08:50:02",
"upload_time_iso_8601": "2024-02-02T08:50:02.394937Z",
"url": "https://files.pythonhosted.org/packages/d0/9c/a72b79d957b4b96768f6a9472821cc41ecca89efe484815ba91b1d2280f7/pyxai-1.0.12-cp311-cp311-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9692f4fe6d18640ef28a579a303212aeaa1d85c7d155214f25f86b9ad070d2fe",
"md5": "9018e75dba02f6ed908b80796480b2a9",
"sha256": "59784e8926b325bffba6d9fd50dec4b42929a626c267b95a20d5cbf1dc55f6a3"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp311-cp311-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "9018e75dba02f6ed908b80796480b2a9",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 12456271,
"upload_time": "2024-02-02T08:50:06",
"upload_time_iso_8601": "2024-02-02T08:50:06.213279Z",
"url": "https://files.pythonhosted.org/packages/96/92/f4fe6d18640ef28a579a303212aeaa1d85c7d155214f25f86b9ad070d2fe/pyxai-1.0.12-cp311-cp311-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cb526af44692de1ea98fc52bca477b4dbe75a50aac7d40ea0901f868bbbd75ee",
"md5": "c2ba5cd16609916ae4ad6c3b63f1773a",
"sha256": "78a4076a097ac317d9502c3bb81c4ac716600b794b1818e6ae18526f3c1dc7f7"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "c2ba5cd16609916ae4ad6c3b63f1773a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.6",
"size": 11915045,
"upload_time": "2024-02-02T08:50:09",
"upload_time_iso_8601": "2024-02-02T08:50:09.549858Z",
"url": "https://files.pythonhosted.org/packages/cb/52/6af44692de1ea98fc52bca477b4dbe75a50aac7d40ea0901f868bbbd75ee/pyxai-1.0.12-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d26f7acfe547836591b8b0bee31fd2c213088691d7b6cc954fe6fb43ab05f331",
"md5": "f3e2f0aca3cd4e259cb2f575dc702feb",
"sha256": "1ac26e1e00338aa196e7269e72e366af629c29c7fe2eefa0bd80b723a9b4d3b9"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f3e2f0aca3cd4e259cb2f575dc702feb",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.6",
"size": 11925061,
"upload_time": "2024-02-02T08:50:13",
"upload_time_iso_8601": "2024-02-02T08:50:13.348643Z",
"url": "https://files.pythonhosted.org/packages/d2/6f/7acfe547836591b8b0bee31fd2c213088691d7b6cc954fe6fb43ab05f331/pyxai-1.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a895286d273caaa82a8c4c45e82c48ee88d8564f987bde56bd05f0c960650389",
"md5": "18eaed81dfcd72a962193a997c1b08e2",
"sha256": "53785aeaa40f5b748c93f593b7ea4d3d5c94c2ddf18786375618c308431e40ad"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp312-cp312-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "18eaed81dfcd72a962193a997c1b08e2",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.6",
"size": 12484974,
"upload_time": "2024-02-02T08:50:17",
"upload_time_iso_8601": "2024-02-02T08:50:17.512015Z",
"url": "https://files.pythonhosted.org/packages/a8/95/286d273caaa82a8c4c45e82c48ee88d8564f987bde56bd05f0c960650389/pyxai-1.0.12-cp312-cp312-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d3bc39aaf5431877b11747932ae5b0d0afd2f541b143f4ac328233d27a0b1543",
"md5": "70f0191e1a7e110e9948386aa6f178e6",
"sha256": "b6644562a0864c0ba86540f0c286adf97528b7df31d43a272022cac205133445"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp312-cp312-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "70f0191e1a7e110e9948386aa6f178e6",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.6",
"size": 12455666,
"upload_time": "2024-02-02T08:50:20",
"upload_time_iso_8601": "2024-02-02T08:50:20.515264Z",
"url": "https://files.pythonhosted.org/packages/d3/bc/39aaf5431877b11747932ae5b0d0afd2f541b143f4ac328233d27a0b1543/pyxai-1.0.12-cp312-cp312-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c1502b7b8769afdc745423292929f61cde5e2b812baef5b3447a76db8f7f0734",
"md5": "3d99828249985d3ee659e0202fdb906b",
"sha256": "9f3971fdfd425fe5093d519d6532d0a95f0ec4a184a66f0806fc729966ed3334"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "3d99828249985d3ee659e0202fdb906b",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 11909807,
"upload_time": "2024-02-02T08:50:24",
"upload_time_iso_8601": "2024-02-02T08:50:24.096078Z",
"url": "https://files.pythonhosted.org/packages/c1/50/2b7b8769afdc745423292929f61cde5e2b812baef5b3447a76db8f7f0734/pyxai-1.0.12-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2bee8091b407a964f39daefec5b05c5958684ffa6c1a01a830c596b5e7f0ddd9",
"md5": "9e734205b2fd727ad7af95e6aace68a8",
"sha256": "a558ccbeb1c4856809afdee1f617835e61a5452ba883ad1bd276d020271115db"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9e734205b2fd727ad7af95e6aace68a8",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 11920321,
"upload_time": "2024-02-02T08:50:27",
"upload_time_iso_8601": "2024-02-02T08:50:27.210211Z",
"url": "https://files.pythonhosted.org/packages/2b/ee/8091b407a964f39daefec5b05c5958684ffa6c1a01a830c596b5e7f0ddd9/pyxai-1.0.12-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "559ca6844afd39a4d24fa34d501b68a7c81507cd3dd1a7d6b0f6aea840101f48",
"md5": "e7f2e2fc8faafd0400deeac4a658756d",
"sha256": "e22eed955c0d1f81a5451762fd1a68edb7de23029a49e62d991c2fc26fde5812"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp36-cp36m-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "e7f2e2fc8faafd0400deeac4a658756d",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 12479745,
"upload_time": "2024-02-02T08:50:30",
"upload_time_iso_8601": "2024-02-02T08:50:30.071473Z",
"url": "https://files.pythonhosted.org/packages/55/9c/a6844afd39a4d24fa34d501b68a7c81507cd3dd1a7d6b0f6aea840101f48/pyxai-1.0.12-cp36-cp36m-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e3bc7b4d784f81f403e92c4e6fb5c1f4a5e7cf74a93c93d508f758d13dae7cc7",
"md5": "d663a8132d63c08a39ced3d146921a7e",
"sha256": "a47fda96146c6dfa95421fdb901828bd7abbfaf817d92117717d7c9814e69dbd"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp36-cp36m-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "d663a8132d63c08a39ced3d146921a7e",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 12448007,
"upload_time": "2024-02-02T08:50:33",
"upload_time_iso_8601": "2024-02-02T08:50:33.328815Z",
"url": "https://files.pythonhosted.org/packages/e3/bc/7b4d784f81f403e92c4e6fb5c1f4a5e7cf74a93c93d508f758d13dae7cc7/pyxai-1.0.12-cp36-cp36m-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "747f8f906278d20bd888ca96507e2ece022487ab33b051a7104eb7c7364ae972",
"md5": "ced7545fbe6617a78062016adda13ad5",
"sha256": "4b24aaceef380f0ea21a74b1080cb0fd5bf4f23558d268932bbd992e937a2487"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "ced7545fbe6617a78062016adda13ad5",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 11912663,
"upload_time": "2024-02-02T08:50:36",
"upload_time_iso_8601": "2024-02-02T08:50:36.955807Z",
"url": "https://files.pythonhosted.org/packages/74/7f/8f906278d20bd888ca96507e2ece022487ab33b051a7104eb7c7364ae972/pyxai-1.0.12-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2d852d8f537815212681e879dea53a5d220c759cea443d3bd845c0b84e0bcddb",
"md5": "36d8ecaea4a4e753c37a326381cc1538",
"sha256": "2779055c231e4f897e20916c9ef577391bcb6980b0f0b9a1c2719dbb2b7daab7"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "36d8ecaea4a4e753c37a326381cc1538",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 11922521,
"upload_time": "2024-02-02T08:50:40",
"upload_time_iso_8601": "2024-02-02T08:50:40.772391Z",
"url": "https://files.pythonhosted.org/packages/2d/85/2d8f537815212681e879dea53a5d220c759cea443d3bd845c0b84e0bcddb/pyxai-1.0.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "765222c0d3099ec143decf60bbebb71111bf84b9ebe9fc48e04f1cb3c3c4b2b5",
"md5": "b89193ec5fca2c9fb851b2880eea7037",
"sha256": "c3bdcce067332080814d3b66cea8804f60f4fd0536b1deb61cc28a3887584836"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp37-cp37m-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "b89193ec5fca2c9fb851b2880eea7037",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 12485345,
"upload_time": "2024-02-02T08:50:44",
"upload_time_iso_8601": "2024-02-02T08:50:44.438672Z",
"url": "https://files.pythonhosted.org/packages/76/52/22c0d3099ec143decf60bbebb71111bf84b9ebe9fc48e04f1cb3c3c4b2b5/pyxai-1.0.12-cp37-cp37m-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "886e738f1b7a2db2db15fefccdfe5e46485ea7b75448f64ab213357ba6ed3a6c",
"md5": "8b4997a9d0749690426a2709378c0df1",
"sha256": "443fce313c601fdcc37260935db1a81f54c0e573f5199e2ed3af6d2b96050b97"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp37-cp37m-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "8b4997a9d0749690426a2709378c0df1",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 12455410,
"upload_time": "2024-02-02T08:50:47",
"upload_time_iso_8601": "2024-02-02T08:50:47.461987Z",
"url": "https://files.pythonhosted.org/packages/88/6e/738f1b7a2db2db15fefccdfe5e46485ea7b75448f64ab213357ba6ed3a6c/pyxai-1.0.12-cp37-cp37m-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f9d3334f273a59b6b20bc6cd2497248ab65e23b2e699323aeeebe876c1a1836e",
"md5": "cbe8589e75dd2be0877b3f01dfd12f69",
"sha256": "c083fbd54f647cd21dc695903c6cb57f9c2c1f12621cc9988876f406c1ada833"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "cbe8589e75dd2be0877b3f01dfd12f69",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 11912904,
"upload_time": "2024-02-02T08:50:50",
"upload_time_iso_8601": "2024-02-02T08:50:50.826394Z",
"url": "https://files.pythonhosted.org/packages/f9/d3/334f273a59b6b20bc6cd2497248ab65e23b2e699323aeeebe876c1a1836e/pyxai-1.0.12-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7b92588cd6fbda30e7dc9238f029c1c8d8a7ed9ec520936c65636333a39eb84e",
"md5": "0b16506ba5a5e55968931be6543f27eb",
"sha256": "2295abd744271294039ab832936824876fd38336612d1ac854e78f23b321b042"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "0b16506ba5a5e55968931be6543f27eb",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 11922801,
"upload_time": "2024-02-02T08:50:53",
"upload_time_iso_8601": "2024-02-02T08:50:53.657162Z",
"url": "https://files.pythonhosted.org/packages/7b/92/588cd6fbda30e7dc9238f029c1c8d8a7ed9ec520936c65636333a39eb84e/pyxai-1.0.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "eb8392160b5a335f6a349fd3e2649c2090ac0c8978393a1ddc5f297d3515a1fb",
"md5": "2e4bfce2414361e169a4504ab6f32241",
"sha256": "ddc69cf787d667b262d54a1f0fdb53d1beead0b753c5ef629d6f22f0d2445a09"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp38-cp38-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "2e4bfce2414361e169a4504ab6f32241",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 12482568,
"upload_time": "2024-02-02T08:50:56",
"upload_time_iso_8601": "2024-02-02T08:50:56.679459Z",
"url": "https://files.pythonhosted.org/packages/eb/83/92160b5a335f6a349fd3e2649c2090ac0c8978393a1ddc5f297d3515a1fb/pyxai-1.0.12-cp38-cp38-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9b9a2341794b981b8983712c109adf2731153ac5fb7094848a1d747e3b5cc306",
"md5": "be67cb7e006a70bb67cbe67b54c40a2c",
"sha256": "69e167073e5c362b39ecc6569ad8269bb9a7e21fbfb756d178a52b11161f4829"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp38-cp38-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "be67cb7e006a70bb67cbe67b54c40a2c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 12451955,
"upload_time": "2024-02-02T08:51:00",
"upload_time_iso_8601": "2024-02-02T08:51:00.622596Z",
"url": "https://files.pythonhosted.org/packages/9b/9a/2341794b981b8983712c109adf2731153ac5fb7094848a1d747e3b5cc306/pyxai-1.0.12-cp38-cp38-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "55e509dcd36f1d96e9818a219421e01e0c063a90be5f360182e243b68403e88b",
"md5": "0f7978b50452725f6d8777b962b42c49",
"sha256": "c2ff1d901da81ec947ab8b7cc49d89377eb93bb921f48fa68186c0e1efc01cd2"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "0f7978b50452725f6d8777b962b42c49",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 11913700,
"upload_time": "2024-02-02T08:51:03",
"upload_time_iso_8601": "2024-02-02T08:51:03.719891Z",
"url": "https://files.pythonhosted.org/packages/55/e5/09dcd36f1d96e9818a219421e01e0c063a90be5f360182e243b68403e88b/pyxai-1.0.12-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "557a248b3304bd5005a18bbfc3b43d19ec524dee3b0c06bd266ad163407f9dc2",
"md5": "a4d191e673b7e04a434d720ee49694df",
"sha256": "b39d242c5a4833f24ddb849d11713e60881957d621af01f46988b6e50d5b8068"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a4d191e673b7e04a434d720ee49694df",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 11923678,
"upload_time": "2024-02-02T08:51:06",
"upload_time_iso_8601": "2024-02-02T08:51:06.828167Z",
"url": "https://files.pythonhosted.org/packages/55/7a/248b3304bd5005a18bbfc3b43d19ec524dee3b0c06bd266ad163407f9dc2/pyxai-1.0.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0e4e55df6fb55f44f5f7c4138bef808535b22d8ac00db145ae7371671c79945c",
"md5": "45ddad52238809e37958aa70c0ff467b",
"sha256": "c719007024235ed0c4575ecc272af5cffa011047df1efd5fc1ef94292342105b"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp39-cp39-musllinux_1_1_i686.whl",
"has_sig": false,
"md5_digest": "45ddad52238809e37958aa70c0ff467b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 12483072,
"upload_time": "2024-02-02T08:51:10",
"upload_time_iso_8601": "2024-02-02T08:51:10.013623Z",
"url": "https://files.pythonhosted.org/packages/0e/4e/55df6fb55f44f5f7c4138bef808535b22d8ac00db145ae7371671c79945c/pyxai-1.0.12-cp39-cp39-musllinux_1_1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5f79563043b0ba76797b83154beae037244eb7dece906378afba54222a95e65e",
"md5": "18f5c176e35eed3fdf4a9994cfd57c16",
"sha256": "560c6f9ff0b16dc6357d05a909b6f41010d756945a6842565c260019198b25d4"
},
"downloads": -1,
"filename": "pyxai-1.0.12-cp39-cp39-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "18f5c176e35eed3fdf4a9994cfd57c16",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 12452356,
"upload_time": "2024-02-02T08:51:14",
"upload_time_iso_8601": "2024-02-02T08:51:14.156048Z",
"url": "https://files.pythonhosted.org/packages/5f/79/563043b0ba76797b83154beae037244eb7dece906378afba54222a95e65e/pyxai-1.0.12-cp39-cp39-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8d98f2867fbcd223ad7138d27cd41116bc82a117aee598848d2b6fc348e9c379",
"md5": "979944c2ce2f4017ec827c293e0e0adf",
"sha256": "d57bb626944f61dcf4bd45cabe633af5066c939208e4c744383b1500d201216c"
},
"downloads": -1,
"filename": "pyxai-1.0.12-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "979944c2ce2f4017ec827c293e0e0adf",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.6",
"size": 11214761,
"upload_time": "2024-02-02T08:51:17",
"upload_time_iso_8601": "2024-02-02T08:51:17.104200Z",
"url": "https://files.pythonhosted.org/packages/8d/98/f2867fbcd223ad7138d27cd41116bc82a117aee598848d2b6fc348e9c379/pyxai-1.0.12-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e1f68fc1d12bdd464041d3e27a1d546959890169c0737ab49a63d267fdba4894",
"md5": "53e630d2fb66035a11f27286fff0f278",
"sha256": "d91bd2ee60b1242f92afc019f3ec9b016a061fbd40275d92de36a3110fa36e80"
},
"downloads": -1,
"filename": "pyxai-1.0.12-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "53e630d2fb66035a11f27286fff0f278",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.6",
"size": 11209006,
"upload_time": "2024-02-02T08:51:20",
"upload_time_iso_8601": "2024-02-02T08:51:20.458771Z",
"url": "https://files.pythonhosted.org/packages/e1/f6/8fc1d12bdd464041d3e27a1d546959890169c0737ab49a63d267fdba4894/pyxai-1.0.12-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "484541c41d73f4e08f76f56582c7a87d4c30e7ee0c1cdfb2072f3e776a8e2094",
"md5": "d7a8a60928738cb0d41a77d363a4386a",
"sha256": "d4012ca3c2d702340bf84f3fa1fce7f96cab8cd101c0a68f4d66696a1472a734"
},
"downloads": -1,
"filename": "pyxai-1.0.12-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "d7a8a60928738cb0d41a77d363a4386a",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": ">=3.6",
"size": 11216061,
"upload_time": "2024-02-02T08:51:24",
"upload_time_iso_8601": "2024-02-02T08:51:24.264812Z",
"url": "https://files.pythonhosted.org/packages/48/45/41c41d73f4e08f76f56582c7a87d4c30e7ee0c1cdfb2072f3e776a8e2094/pyxai-1.0.12-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "692a07da710f4f232bd3454f74e9e096fe65d91122c6042ada429d4c347d06da",
"md5": "19b687aad66678feba90f1679b5cbe8f",
"sha256": "39e4c0f3b7e38667619137e2e19d1dfe1116650b37a10567136f0a0a246d432f"
},
"downloads": -1,
"filename": "pyxai-1.0.12-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "19b687aad66678feba90f1679b5cbe8f",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": ">=3.6",
"size": 11210391,
"upload_time": "2024-02-02T08:51:27",
"upload_time_iso_8601": "2024-02-02T08:51:27.667307Z",
"url": "https://files.pythonhosted.org/packages/69/2a/07da710f4f232bd3454f74e9e096fe65d91122c6042ada429d4c347d06da/pyxai-1.0.12-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8c46dd6453027d7ec53070b7a362c97ecbe54b6c1008b35ef6c0840271479e89",
"md5": "08bd9d9d8b40eb84e363de905323885b",
"sha256": "b64ed12cb958655a31aa7e3090b7de16dd32bd4d0dadc5c55388b1153b8e6882"
},
"downloads": -1,
"filename": "pyxai-1.0.12-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "08bd9d9d8b40eb84e363de905323885b",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.6",
"size": 11214815,
"upload_time": "2024-02-02T08:51:30",
"upload_time_iso_8601": "2024-02-02T08:51:30.684082Z",
"url": "https://files.pythonhosted.org/packages/8c/46/dd6453027d7ec53070b7a362c97ecbe54b6c1008b35ef6c0840271479e89/pyxai-1.0.12-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8c54f34fd6bc6d31f136ba3a1c7d04eeadb91fc9e818886ca2355774481c52bf",
"md5": "02843c38575f7ba97ca70f913735f7f9",
"sha256": "6431623c3cdb325452b34d23c0bc3dc4c30e7bb63aa9ef72d39329647353cc7c"
},
"downloads": -1,
"filename": "pyxai-1.0.12-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "02843c38575f7ba97ca70f913735f7f9",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.6",
"size": 11209046,
"upload_time": "2024-02-02T08:51:34",
"upload_time_iso_8601": "2024-02-02T08:51:34.822964Z",
"url": "https://files.pythonhosted.org/packages/8c/54/f34fd6bc6d31f136ba3a1c7d04eeadb91fc9e818886ca2355774481c52bf/pyxai-1.0.12-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "555bd8ea5a995d29ccefe2688367fa132ae672cf3fef14d1ddfa08cfa5727d60",
"md5": "cac4dc161eb1a8c77a693759a591d972",
"sha256": "4b43be3f3167bc7a65c319236002ccf608ced9ca20df62a45fe28810c1321dbf"
},
"downloads": -1,
"filename": "pyxai-1.0.12-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "cac4dc161eb1a8c77a693759a591d972",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.6",
"size": 11214700,
"upload_time": "2024-02-02T08:51:38",
"upload_time_iso_8601": "2024-02-02T08:51:38.013430Z",
"url": "https://files.pythonhosted.org/packages/55/5b/d8ea5a995d29ccefe2688367fa132ae672cf3fef14d1ddfa08cfa5727d60/pyxai-1.0.12-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b50e5f59c63fb1ecc8fc3e401e187518fd6aad9e3d684b345cc6829c9c1063ad",
"md5": "9e175a6887fe99c33cebe1cea0817880",
"sha256": "e539a8e377c20d5dc43df451b0d0692a12d46dbcd940cf601194c89489f3b66b"
},
"downloads": -1,
"filename": "pyxai-1.0.12-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9e175a6887fe99c33cebe1cea0817880",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.6",
"size": 11208959,
"upload_time": "2024-02-02T08:51:42",
"upload_time_iso_8601": "2024-02-02T08:51:42.176959Z",
"url": "https://files.pythonhosted.org/packages/b5/0e/5f59c63fb1ecc8fc3e401e187518fd6aad9e3d684b345cc6829c9c1063ad/pyxai-1.0.12-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-02 08:49:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "crillab",
"github_project": "pyxai",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pyxai"
}