From 9586cba698d1783fa858edb5311b74feb6209aed Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Thu, 18 Jan 2024 17:30:20 +0100 Subject: [PATCH 01/18] add bare skeleton of a tutorial --- docs/source/index.rst | 2 +- docs/source/overview/tutorials.ipynb | 849 ++++++++++++++++++ .../overview/tutorials/benchmarks.ipynb | 53 -- docs/source/overview/tutorials/index.rst | 13 - .../overview/tutorials/introduction.ipynb | 81 -- 5 files changed, 850 insertions(+), 148 deletions(-) create mode 100644 docs/source/overview/tutorials.ipynb delete mode 100644 docs/source/overview/tutorials/benchmarks.ipynb delete mode 100644 docs/source/overview/tutorials/index.rst delete mode 100644 docs/source/overview/tutorials/introduction.ipynb diff --git a/docs/source/index.rst b/docs/source/index.rst index 390aabae6..2156aa7db 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -52,7 +52,7 @@ In particular: :hidden: overview/features.rst - overview/tutorials/index.rst + Tutorials .. toctree:: :maxdepth: 1 diff --git a/docs/source/overview/tutorials.ipynb b/docs/source/overview/tutorials.ipynb new file mode 100644 index 000000000..aff0911c4 --- /dev/null +++ b/docs/source/overview/tutorials.ipynb @@ -0,0 +1,849 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "nominated-inspection", + "metadata": {}, + "source": [ + "# Tutorials\n", + "\n", + "The following provides a short tutorial on how to use some of the main features of Yadism. After this tutorial, the user will know how to:\n", + "- prepare the observable and theory cards required for any `yadism` computation\n", + "- compute an observable by convoluting `yadism` prediction to a given PDF set\n", + "- tabulate the `yadism` predictions into an interpolation table for a later use" + ] + }, + { + "cell_type": "markdown", + "id": "bfff8f0c-740e-4177-a642-13e9d0a0cc63", + "metadata": {}, + "source": [ + "## Installation \n", + "\n", + "In order to start using Yadism, one first needs to install it. The easiest way to install the latest stable version is via `pip` using the following command\n", + "\n", + "```sh\n", + "pip install yadism\n", + "```\n", + "\n", + "If one wishes in addition to also install the Yadism benchmark pacakge (see yadmark), one can instead run the following command:\n", + "\n", + "```sh\n", + "pip install 'yadism[mark]'\n", + "```\n", + "\n", + "We can check that Yadism was properly installed by checking the version:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ded2fb96-9fe9-4503-8418-bfcfb6d53998", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.0.0'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import yadism\n", + "yadism.__version__" + ] + }, + { + "cell_type": "markdown", + "id": "valuable-theater", + "metadata": {}, + "source": [ + "## Preparing the run cards\n", + "\n", + "Yadism takes as inputs two runcards (represented as dictionaries):\n", + "- an observable card which contains the details on the observable to be computed\n", + "- a theory card which contains the various theory settings\n", + "\n", + "Below is an example of an observable card in which the meaning of each key is also specified:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "announced-petite", + "metadata": {}, + "outputs": [], + "source": [ + "observable_card = {\n", + " # Process type: \"EM\", \"NC\", \"CC\"\n", + " \"prDIS\": \"NC\",\n", + " # Projectile: \"electron\", \"positron\", \"neutrino\", \"antineutrino\"\n", + " \"ProjectileDIS\": \"electron\",\n", + " # Scattering target: \"proton\", \"neutron\", \"isoscalar\", \"lead\", \"iron\", \"neon\" or \"marble\"\n", + " \"TargetDIS\": \"proton\",\n", + " # Interpolation: if True use log interpolation\n", + " \"interpolation_is_log\": True,\n", + " # Interpolation: polynomial degree, 1 = linear, ...\n", + " \"interpolation_polynomial_degree\": 4,\n", + " # Interpolation: xgrid values\n", + " # Note: for illustrative purposes the grid is chosen very small here\n", + " \"interpolation_xgrid\": [1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1.0],\n", + " # Observables configurations\n", + " \"observables\": {\n", + " \"XSHERANCAVG_charm\": [\n", + " {\n", + " \"y\": 0.8240707777909629,\n", + " \"x\": 3e-05,\n", + " \"Q2\": 2.5,\n", + " },\n", + " {\n", + " \"y\": 0.3531731904818413,\n", + " \"x\": 7e-05,\n", + " \"Q2\": 2.5,\n", + " },\n", + " # Add here the kinematics of other datapoints\n", + " ],\n", + " # Potentially include observables other than XSHERANCAVG_charm,\n", + " # each of them has to be: TYPE_heaviness, where heaviness can take:\n", + " # \"charm\", \"bottom\", \"top\", \"total\" or \"light\".\n", + " },\n", + " # Projectile polarization faction, float from 0 to 1.\n", + " \"PolarizationDIS\": 0.0,\n", + " # Exchanged boson propagator correction\n", + " \"PropagatorCorrection\": 0.0,\n", + " # Restrict boson coupling to a single parton ? Monte Carlo PID or None for all partons\n", + " \"NCPositivityCharge\": None,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "dc1b79fa-7d14-4ed6-a8ae-0a588ebe5582", + "metadata": {}, + "source": [ + "Similarly, below is an example of a theory card:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "90df79a9-31cb-40db-ac95-0b88469c1723", + "metadata": {}, + "outputs": [], + "source": [ + "theory_card = {\n", + " \"CKM\": \"0.97428 0.22530 0.003470 0.22520 0.97345 0.041000 0.00862 0.04030 0.999152\", # CKM matrix elements\n", + " \"FNS\": \"FFNS\", # Flavour Number Scheme, options: \"FFNS\", \"FFN0\", \"ZM-VFNS\"\n", + " \"GF\": 1.1663787e-05, # [GeV^-2] Fermi coupling constant\n", + " \"IC\": 1, # 0 = perturbative charm only, 1 = intrinsic charm allowed\n", + " \"MP\": 0.938, # [GeV] proton mass\n", + " \"MW\": 80.398, # [GeV] W boson mass\n", + " \"MZ\": 91.1876, # [GeV] Z boson mass\n", + " \"NfFF\": 4, # (fixed) number of running flavors, only for FFNS or FFN0 schemes\n", + " \"PTO\": 2, # perturbative order in alpha_s: 0 = LO (alpha_s^0), 1 = NLO (alpha_s^1) ...\n", + " \"Q0\": 1.65, # [GeV] reference scale for the flavor patch determination\n", + " \"nf0\": 4, # number of active flavors at the Q0 reference scale\n", + " \"Qref\": 91.2, # [GeV] reference scale for the alphas value\n", + " \"nfref\": 5, # number of active flavors at the reference scale Qref\n", + " \"alphas\": 0.118, # alphas value at the reference scale\n", + " \"TMC\": 1, # include target mass corrections: 0 = disabled, 1 = leading twist, 2 = higher twist approximated, 3 = higher twist exact\n", + " \"XIF\": 1.0, # ratio of factorization scale over the hard scattering scale\n", + " \"XIR\": 1.0, # ratio of renormalization scale over the hard scattering scale\n", + " \"alphaqed\": 0.007496252, # alpha_em value\n", + " \"kcThr\": 1.0, # ratio of the charm matching scale over the charm mass\n", + " \"kbThr\": 1.0, # ratio of the bottom matching scale over the bottom mass\n", + " \"ktThr\": 1.0, # ratio of the top matching scale over the top mass\n", + " \"mc\": 1.51, # [GeV] charm mass\n", + " \"mb\": 4.92, # [GeV] bottom mass\n", + " \"mt\": 172.5, # [GeV] top mass\n", + " \"n3lo_cf_variation\": 0, # N3LO coefficient functions variation: -1 = lower bound, 0 = central , 1 = upper bound\n", + " \"QED\": 0, # QED correction to running of strong coupling: 0 = disabled, 1 = allowed\n", + " \"MaxNfAs\": 5, # maximum number of flavors in running of strong coupling\n", + " \"HQ\": \"POLE\", # heavy quark mass scheme (not yet implemented in yadism)\n", + " \"MaxNfPdf\": 5, # maximum number of flavors in running of PDFs (ignored by yadism)\n", + " \"ModEv\": \"EXA\", # evolution solver for PDFs (ignored by yadism)\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "169b82a0-abdd-4687-9ffe-9df38446a550", + "metadata": {}, + "source": [ + "Note that a template observable is provided by `yadmark` (assuming it was installed). One can thus just start from the default card and overwrite the values." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "246f1d7a-e7e3-48ab-9bf2-44c8352adc39", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
{\n",
+       "'NCPositivityCharge': None,\n",
+       "'PolarizationDIS': 0,\n",
+       "'ProjectileDIS': 'electron',\n",
+       "'PropagatorCorrection': 0,\n",
+       "'TargetDIS': 'proton',\n",
+       "'interpolation_is_log': True,\n",
+       "'interpolation_polynomial_degree': 4,\n",
+       "'interpolation_xgrid': [\n",
+       "│   │   1e-07,\n",
+       "│   │   1.6102620275609392e-07,\n",
+       "│   │   2.592943797404667e-07,\n",
+       "│   │   4.1753189365604003e-07,\n",
+       "│   │   6.723357536499335e-07,\n",
+       "│   │   1.0826367338740541e-06,\n",
+       "│   │   1.7433288221999873e-06,\n",
+       "│   │   2.8072162039411756e-06,\n",
+       "│   │   4.520353656360241e-06,\n",
+       "│   │   7.2789538439831465e-06,\n",
+       "│   │   1.1721022975334793e-05,\n",
+       "│   │   1.8873918221350995e-05,\n",
+       "│   │   3.039195382313195e-05,\n",
+       "│   │   4.893900918477499e-05,\n",
+       "│   │   7.880462815669905e-05,\n",
+       "│   │   0.0001268961003167922,\n",
+       "│   │   0.00020433597178569417,\n",
+       "│   │   0.00032903445623126676,\n",
+       "│   │   0.0005298316906283707,\n",
+       "│   │   0.0008531678524172806,\n",
+       "│   │   0.0013738237958832637,\n",
+       "│   │   0.00221221629107045,\n",
+       "│   │   0.003562247890262444,\n",
+       "│   │   0.005736152510448681,\n",
+       "│   │   0.009236708571873866,\n",
+       "│   │   0.014873521072935119,\n",
+       "│   │   0.02395026619987486,\n",
+       "│   │   0.03856620421163472,\n",
+       "│   │   0.06210169418915616,\n",
+       "│   │   0.1,\n",
+       "│   │   0.1473684210526316,\n",
+       "│   │   0.19473684210526315,\n",
+       "│   │   0.24210526315789474,\n",
+       "│   │   0.2894736842105263,\n",
+       "│   │   0.33684210526315794,\n",
+       "│   │   0.38421052631578945,\n",
+       "│   │   0.43157894736842106,\n",
+       "│   │   0.4789473684210527,\n",
+       "│   │   0.5263157894736842,\n",
+       "│   │   0.5736842105263158,\n",
+       "│   │   0.6210526315789474,\n",
+       "│   │   0.6684210526315789,\n",
+       "│   │   0.7157894736842105,\n",
+       "│   │   0.7631578947368421,\n",
+       "│   │   0.8105263157894737,\n",
+       "│   │   0.8578947368421053,\n",
+       "│   │   0.9052631578947369,\n",
+       "│   │   0.9526315789473684,\n",
+       "│   │   1.0\n",
+       "],\n",
+       "'observables': {},\n",
+       "'prDIS': 'EM'\n",
+       "}\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'NCPositivityCharge'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'PolarizationDIS'\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'ProjectileDIS'\u001b[0m: \u001b[32m'electron'\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'PropagatorCorrection'\u001b[0m: \u001b[1;36m0\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'TargetDIS'\u001b[0m: \u001b[32m'proton'\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'interpolation_is_log'\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'interpolation_polynomial_degree'\u001b[0m: \u001b[1;36m4\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'interpolation_xgrid'\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1e-07\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.6102620275609392e-07\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m2.592943797404667e-07\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m4.1753189365604003e-07\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m6.723357536499335e-07\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.0826367338740541e-06\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.7433288221999873e-06\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m2.8072162039411756e-06\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m4.520353656360241e-06\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m7.2789538439831465e-06\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.1721022975334793e-05\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.8873918221350995e-05\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m3.039195382313195e-05\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m4.893900918477499e-05\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m7.880462815669905e-05\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.0001268961003167922\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.00020433597178569417\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.00032903445623126676\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.0005298316906283707\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.0008531678524172806\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.0013738237958832637\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.00221221629107045\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.003562247890262444\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.005736152510448681\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.009236708571873866\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.014873521072935119\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.02395026619987486\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.03856620421163472\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.06210169418915616\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.1\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.1473684210526316\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.19473684210526315\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.24210526315789474\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.2894736842105263\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.33684210526315794\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.38421052631578945\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.43157894736842106\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.4789473684210527\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.5263157894736842\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.5736842105263158\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.6210526315789474\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.6684210526315789\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.7157894736842105\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.7631578947368421\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.8105263157894737\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.8578947368421053\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.9052631578947369\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.9526315789473684\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.0\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m]\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'observables'\u001b[0m: \u001b[1m{\u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'prDIS'\u001b[0m: \u001b[32m'EM'\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from rich.pretty import pprint # already installed as a dependency, only needed for a pretty printing\n", + "from yadmark.data.observables import default_card\n", + "pprint(default_card)" + ] + }, + { + "cell_type": "markdown", + "id": "5083afea-4ac9-483d-93b9-f0473cbc46b0", + "metadata": {}, + "source": [ + "## Computing predictions\n", + "\n", + "Now that we have all the necessary inputs, we can now compute the corresponding predictions:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "b7d95bf6-4536-41a5-9505-07a8743e5f6e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
[17:13:31] INFO     Interpolation: number of points = 8, polynomial degree = 4, logarithmic =  interpolation.py:537\n",
+       "                    True                                                                                           \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[17:13:31]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Interpolation: number of points = \u001b[1;36m8\u001b[0m, polynomial degree = \u001b[1;36m4\u001b[0m, logarithmic = \u001b]8;id=855744;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/interpolation.py\u001b\\\u001b[2minterpolation.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=350159;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/interpolation.py#537\u001b\\\u001b[2m537\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[3;92mTrue\u001b[0m \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     {'MZ2': 8315.178393760001, 'CKM': CKM([[9.49221518e-01 5.07600900e-02  coupling_constants.py:52\n",
+       "                    1.20409000e-05] [5.07150400e-02 9.47604903e-01 1.68100000e-03]                                 \n",
+       "                    [7.43044000e-05 1.62409000e-03 9.98304719e-01]]), 'sin2theta_weak':                            \n",
+       "                    0.23121, 'MW2': 6463.838403999999}                                                             \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[1m{\u001b[0m\u001b[32m'MZ2'\u001b[0m: \u001b[1;36m8315.178393760001\u001b[0m, \u001b[32m'CKM'\u001b[0m: \u001b[1;35mCKM\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m9.49221518e-01\u001b[0m \u001b[1;36m5.07600900e-02\u001b[0m \u001b]8;id=209628;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py\u001b\\\u001b[2mcoupling_constants.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=423060;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py#52\u001b\\\u001b[2m52\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[1;36m1.20409000e-05\u001b[0m\u001b[1m]\u001b[0m \u001b[1m[\u001b[0m\u001b[1;36m5.07150400e-02\u001b[0m \u001b[1;36m9.47604903e-01\u001b[0m \u001b[1;36m1.68100000e-03\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1m[\u001b[0m\u001b[1;36m7.43044000e-05\u001b[0m \u001b[1;36m1.62409000e-03\u001b[0m \u001b[1;36m9.98304719e-01\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m'sin2theta_weak'\u001b[0m: \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;36m0.23121\u001b[0m, \u001b[32m'MW2'\u001b[0m: \u001b[1;36m6463.838403999999\u001b[0m\u001b[1m}\u001b[0m \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     {'process': 'NC', 'projectilePID': 11, 'polarization': 0.0,            coupling_constants.py:53\n",
+       "                    'propagatorCorrection': 0.0, 'nc_pos_charge': None}                                            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[1m{\u001b[0m\u001b[32m'process'\u001b[0m: \u001b[32m'NC'\u001b[0m, \u001b[32m'projectilePID'\u001b[0m: \u001b[1;36m11\u001b[0m, \u001b[32m'polarization'\u001b[0m: \u001b[1;36m0.0\u001b[0m, \u001b]8;id=742509;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py\u001b\\\u001b[2mcoupling_constants.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=926420;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py#53\u001b\\\u001b[2m53\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[32m'propagatorCorrection'\u001b[0m: \u001b[1;36m0.0\u001b[0m, \u001b[32m'nc_pos_charge'\u001b[0m: \u001b[3;35mNone\u001b[0m\u001b[1m}\u001b[0m \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     RenScaleVar: False, FactScaleVar: False                                  scale_variations.py:61\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m RenScaleVar: \u001b[3;91mFalse\u001b[0m, FactScaleVar: \u001b[3;91mFalse\u001b[0m \u001b]8;id=321435;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/esf/scale_variations.py\u001b\\\u001b[2mscale_variations.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=492824;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/esf/scale_variations.py#61\u001b\\\u001b[2m61\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     Atlas [0.00e+00 - 0.00e+00 - inf - inf - inf], ref=2.7224999999999997 @ 4       matchings.py:69\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m0.00e+00\u001b[0m - inf - inf - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.7224999999999997\u001b[0m @ \u001b[1;36m4\u001b[0m \u001b]8;id=853001;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=372449;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     PTO: 2, PTO@evolution: 2, process: NC                                             runner.py:146\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m PTO: \u001b[1;36m2\u001b[0m, PTO@evolution: \u001b[1;36m2\u001b[0m, process: NC \u001b]8;id=528897;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=838475;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#146\u001b\\\u001b[2m146\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     FNS: FFNS, NfFF: 4                                                                runner.py:153\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m FNS: FFNS, NfFF: \u001b[1;36m4\u001b[0m \u001b]8;id=952394;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=688311;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#153\u001b\\\u001b[2m153\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     Intrinsic: [4]                                                                    runner.py:154\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Intrinsic: \u001b[1m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1m]\u001b[0m \u001b]8;id=15986;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=831273;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#154\u001b\\\u001b[2m154\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     projectile: electron, target: {Z: 1, A: 1}                                        runner.py:155\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m projectile: electron, target: \u001b[1m{\u001b[0mZ: \u001b[1;36m1\u001b[0m, A: \u001b[1;36m1\u001b[0m\u001b[1m}\u001b[0m \u001b]8;id=634484;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=493872;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#155\u001b\\\u001b[2m155\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                                      ┌────────────────────────────────────┐                                       \n",
+       "                                      │                                    │                                       \n",
+       "                                      │ __     __       _ _                │                                       \n",
+       "                                      │ \\ \\   / /      | (_)               │                                       \n",
+       "                                      │  \\ \\_/ /_ _  __| |_ ___ _ __ ___   │                                       \n",
+       "                                      │   \\   / _` |/ _` | / __| '_ ` _ \\  │                                       \n",
+       "                                      │    | | (_| | (_| | \\__ \\ | | | | | │                                       \n",
+       "                                      │    |_|\\__,_|\\__,_|_|___/_| |_| |_| │                                       \n",
+       "                                      │                                    │                                       \n",
+       "                                      └────────────────────────────────────┘                                       \n",
+       "
\n" + ], + "text/plain": [ + " \u001b[35m┌────────────────────────────────────┐\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m__ __ _ _\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m\\ \\ / / | (_)\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m \\ \\_/ /_ _ __| |_ ___ _ __ ___\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m \\ / _` |/ _` | / __| '_ ` _ \\\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m | | (_| | (_| | \\__ \\ | | | | |\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m |_|\\__,_|\\__,_|_|___/_| |_| |_|\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m└────────────────────────────────────┘\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "                                                       Plan                                                        \n",
+       "
\n" + ], + "text/plain": [ + "\n", + " \u001b[1;4mPlan\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "XSHERANCAVG_charm at 2 pts                                                                                      \n",
+       "
\n" + ], + "text/plain": [ + "\n", + "\u001b[1;33m • \u001b[0mXSHERANCAVG_charm at 2 pts \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "                                                    Calculation                                                    \n",
+       "
\n" + ], + "text/plain": [ + "\n", + " \u001b[1;4mCalculation\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
yadism took off! please stay tuned ...\n",
+       "
\n" + ], + "text/plain": [ + "yadism took off! please stay tuned \u001b[33m...\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": [
+       "\u001b[?25l"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "\u001b[?25h
\n" + ], + "text/plain": [ + "\n", + "\u001b[?25h" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
took 0.23 s\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[36mtook \u001b[0m\u001b[1;36m0.23\u001b[0m\u001b[36m s\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "out = yadism.run_yadism(theory_card, observable_card)" + ] + }, + { + "cell_type": "markdown", + "id": "a1d79202-30d1-465f-9ce2-008fc760ebf1", + "metadata": {}, + "source": [ + "`out` is an object of type `yadism.output.Output` from which one can perform various operations. In our example, we are interested in convoluting it with a PDF set in the LHAPDF format.\n", + "\n", + "To do so, first we need to import the `lhapdf` package. For this example, we will use the NNPDF4.0 set: `NNPDF40_nnlo_as_01180`." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "bc6f3aac-802b-4073-9e6a-e18e54f3ef85", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LHAPDF 6.5.0 loading /home/tanjona/miniconda3/envs/yadism/share/LHAPDF/NNPDF40_nnlo_as_01180/NNPDF40_nnlo_as_01180_0000.dat\n", + "NNPDF40_nnlo_as_01180 PDF set, member #0, version 1; LHAPDF ID = 331100\n" + ] + } + ], + "source": [ + "import lhapdf\n", + "pdf = lhapdf.mkPDF(\"NNPDF40_nnlo_as_01180\")" + ] + }, + { + "cell_type": "markdown", + "id": "359f3118-a317-4345-8e73-bc810b92ea92", + "metadata": {}, + "source": [ + "The convolution can simply be performed as follow:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "9b983dd8-4724-439c-bdab-773879308985", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
[17:13:33] INFO     Atlas [0.00e+00 - 2.28e+00 - 2.42e+01 - 2.98e+04 - inf], ref=8317.44 @ 5        matchings.py:69\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[17:13:33]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=295909;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=914974;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     Strong Coupling: a_s(µ_R^2=8317.440000)^(nf=5)=0.009390=0.118000/()          couplings.py:458\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Strong Coupling: \u001b[1;35ma_s\u001b[0m\u001b[1m(\u001b[0mµ_R^\u001b[1;36m2\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.440000\u001b[0m\u001b[1m)\u001b[0m^\u001b[1m(\u001b[0m\u001b[33mnf\u001b[0m=\u001b[1;36m5\u001b[0m\u001b[1m)\u001b[0m=\u001b[1;36m0.\u001b[0m\u001b[1;36m009390\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.118000\u001b[0m/\u001b[1m(\u001b[0m4π\u001b[1m)\u001b[0m \u001b]8;id=48542;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py\u001b\\\u001b[2mcouplings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=745971;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py#458\u001b\\\u001b[2m458\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     Atlas [0.00e+00 - 2.28e+00 - 2.42e+01 - 2.98e+04 - inf], ref=8317.44 @ 5        matchings.py:69\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=596034;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=509149;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "values = out.apply_pdf(pdf)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a56aee13-b08b-492f-80d0-3487bea74318", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
{\n",
+       "'XSHERANCAVG_charm': [\n",
+       "│   │   {\n",
+       "│   │   │   'x': 3e-05,\n",
+       "│   │   │   'Q2': 2.5,\n",
+       "│   │   │   'result': -0.9959496128078331,\n",
+       "│   │   │   'error': 1.281070214968848e-08,\n",
+       "│   │   │   'y': 0.8240707777909629\n",
+       "│   │   },\n",
+       "│   │   {\n",
+       "│   │   │   'x': 7e-05,\n",
+       "│   │   │   'Q2': 2.5,\n",
+       "│   │   │   'result': -0.7710853256052412,\n",
+       "│   │   │   'error': 2.3298246570353407e-08,\n",
+       "│   │   │   'y': 0.3531731904818413\n",
+       "│   │   }\n",
+       "]\n",
+       "}\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[32m'XSHERANCAVG_charm'\u001b[0m: \u001b[1m[\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'x'\u001b[0m: \u001b[1;36m3e-05\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'Q2'\u001b[0m: \u001b[1;36m2.5\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'result'\u001b[0m: \u001b[1;36m-0.9959496128078331\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'error'\u001b[0m: \u001b[1;36m1.281070214968848e-08\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'y'\u001b[0m: \u001b[1;36m0.8240707777909629\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m{\u001b[0m\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'x'\u001b[0m: \u001b[1;36m7e-05\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'Q2'\u001b[0m: \u001b[1;36m2.5\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'result'\u001b[0m: \u001b[1;36m-0.7710853256052412\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'error'\u001b[0m: \u001b[1;36m2.3298246570353407e-08\u001b[0m,\n", + "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'y'\u001b[0m: \u001b[1;36m0.3531731904818413\u001b[0m\n", + "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m]\u001b[0m\n", + "\u001b[1m}\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pprint(values)" + ] + }, + { + "cell_type": "markdown", + "id": "519b8537-9c09-4a66-bf44-ff47e1879449", + "metadata": {}, + "source": [ + "## Dumping (loading) predictions into (from) fast-interpolation grids\n", + "\n", + "One of the main advantages of `yadism` is its interface with [PineAPPL](https://github.com/NNPDF/pineappl) - a library providing fast-interpolation grids. This is quite convenient in that one can re-use the same computations without the need to re-run `yadism`.\n", + "\n", + "Each observable defined in `observable_card` can be dumped into its own fast-interpolation grid. The steps are as follow:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "7f914e87-bb05-47c7-a850-11a18e6cfdb5", + "metadata": {}, + "outputs": [], + "source": [ + "from yadbox.export import dump_pineappl_to_file\n", + "\n", + "# Extract the names of the different observables (in case there are many)\n", + "list_observables = observable_card['observables'].keys()\n", + "\n", + "# Dump each observable into a PineAPPL grid\n", + "for obs in list_observables:\n", + " dump_pineappl_to_file(out, f\"outputgrid_{obs}.pineappl.lz4\", f\"{obs}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0c887943-be93-4a0f-815b-1317ad04db2c", + "metadata": {}, + "source": [ + "To load the pre-computed predictions, we need to import the `pineappl` library. `pineappl` is part of the dependency of `yadism` so we don't have to install it." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "ebf75d0e-965a-46b1-a3a3-e20eeb1d5e15", + "metadata": {}, + "outputs": [], + "source": [ + "import pineappl\n", + "\n", + "# Read the pineappl grid saved earlier\n", + "grid = pineappl.grid.Grid.read(\"./outputgrid_XSHERANCAVG_charm.pineappl.lz4\")\n", + "\n", + "# Convolute the grid with the same PDF as above\n", + "results = grid.convolute_with_one(2212, pdf.xfxQ2, pdf.alphasQ2)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "fc268946-3f84-4f63-be98-a899adf9512c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
array([-0.98699882, -0.7640712 ])\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-0.98699882\u001b[0m, \u001b[1;36m-0.7640712\u001b[0m \u001b[1m]\u001b[0m\u001b[1m)\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pprint(results)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "yadism", + "language": "python", + "name": "yadism" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/source/overview/tutorials/benchmarks.ipynb b/docs/source/overview/tutorials/benchmarks.ipynb deleted file mode 100644 index 6cf61b7b2..000000000 --- a/docs/source/overview/tutorials/benchmarks.ipynb +++ /dev/null @@ -1,53 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "russian-guidance", - "metadata": {}, - "source": [ - "# Running Benchmarks\n", - "A good way of learning something about `yadism` it's running the benchmarks suite provided, and check the output through its `navigator`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "perceived-aspect", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "solid-paraguay", - "metadata": {}, - "source": [ - "## Unit tests\n", - "For more specific information about single functions and usage another good idea it's to have a look to how they are used in unit-tests.\n", - "\n", - "But the main option will always be the trivial one: **read the docs**." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/source/overview/tutorials/index.rst b/docs/source/overview/tutorials/index.rst deleted file mode 100644 index d0109f913..000000000 --- a/docs/source/overview/tutorials/index.rst +++ /dev/null @@ -1,13 +0,0 @@ -Tutorials -========= - -Instead of bare examples is better to have full tutorials! - -If I will have ever the time to write them this section will be populated by -tutorials on how to use `yadism`, including fully running examples. - -.. toctree:: - :hidden: - - Introduction - Benchmarks diff --git a/docs/source/overview/tutorials/introduction.ipynb b/docs/source/overview/tutorials/introduction.ipynb deleted file mode 100644 index c9861bfd2..000000000 --- a/docs/source/overview/tutorials/introduction.ipynb +++ /dev/null @@ -1,81 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "accredited-amateur", - "metadata": {}, - "source": [ - "# Introduction\n", - "\n", - "`yadism` it's wonderful to install and wonderful to use, you just need:\n", - "\n", - "- `pip`\n", - "- a couple of fully specified runcards (but you can download some example ones from [here])" - ] - }, - { - "cell_type": "markdown", - "id": "nominated-inspection", - "metadata": {}, - "source": [ - "## Installation\n", - "As written in the `README.md` instructions just run:\n", - "\n", - "```sh\n", - "pip install yadism\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "valuable-theater", - "metadata": {}, - "source": [ - "## Basic usage" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "announced-petite", - "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'yadism'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0myadism\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'yadism'" - ] - } - ], - "source": [ - "import yadism" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 553095bfba9d64d9580c1685a732fc49a1522ccd Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Thu, 18 Jan 2024 22:06:02 +0100 Subject: [PATCH 02/18] improve a bit the content --- docs/source/overview/tutorials.ipynb | 137 ++++++++++++++++++--------- 1 file changed, 92 insertions(+), 45 deletions(-) diff --git a/docs/source/overview/tutorials.ipynb b/docs/source/overview/tutorials.ipynb index aff0911c4..3b12d6936 100644 --- a/docs/source/overview/tutorials.ipynb +++ b/docs/source/overview/tutorials.ipynb @@ -7,10 +7,10 @@ "source": [ "# Tutorials\n", "\n", - "The following provides a short tutorial on how to use some of the main features of Yadism. After this tutorial, the user will know how to:\n", + "The following tutorial provides a brief introduction on some of the main features of `yadism`. This tutorial has three main objectives, namely to introduce the user on how to:\n", "- prepare the observable and theory cards required for any `yadism` computation\n", - "- compute an observable by convoluting `yadism` prediction to a given PDF set\n", - "- tabulate the `yadism` predictions into an interpolation table for a later use" + "- compute observables by convoluting `yadism` predictions to PDFs (Parton Distribution Functions)\n", + "- tabulate the `yadism` predictions into fast-interpolation grids for later use" ] }, { @@ -20,19 +20,15 @@ "source": [ "## Installation \n", "\n", - "In order to start using Yadism, one first needs to install it. The easiest way to install the latest stable version is via `pip` using the following command\n", + "In order to start using `yadism`, one first needs to install it and some of its extra-dependencies. The easiest way to install the latest stable version of `yadism` is via `pip` using the following command:\n", "\n", "```sh\n", - "pip install yadism\n", + "pip install 'yadism[mark, box]'\n", "```\n", "\n", - "If one wishes in addition to also install the Yadism benchmark pacakge (see yadmark), one can instead run the following command:\n", + "In addition to installing the main `yadism` package, the above command also installs `yadmark` and `yadbox`. `yadmark` is package that provides APIs to perform the benchmkar of `yadism` to other DIS codes (e.g. `APFEL`, `APFEL++`, `QCDNUM`). `yadbox` instead provides an interface to `PineAPPL` to store predictions in the form of fast-interpolation grids.\n", "\n", - "```sh\n", - "pip install 'yadism[mark]'\n", - "```\n", - "\n", - "We can check that Yadism was properly installed by checking the version:" + "In order to check that `yadism` was installed properly, one can check the version:" ] }, { @@ -64,9 +60,9 @@ "source": [ "## Preparing the run cards\n", "\n", - "Yadism takes as inputs two runcards (represented as dictionaries):\n", - "- an observable card which contains the details on the observable to be computed\n", - "- a theory card which contains the various theory settings\n", + "Yadism takes as inputs **two runcards** whose representations are given in terms of python dictionaries. That is, one needs:\n", + "- an **observable card** which contains the details on the observable to be computed\n", + "- a **theory card** which contains the various theory settings to compute the observable in question\n", "\n", "Below is an example of an observable card in which the meaning of each key is also specified:" ] @@ -125,6 +121,8 @@ "id": "dc1b79fa-7d14-4ed6-a8ae-0a588ebe5582", "metadata": {}, "source": [ + "The `observables` key in the `observable_card` (which is also a dictionary) can contain multiple elements whose keys must represent structure functions or cross-sections. For the list of available observables, refer to the following [part](https://yadism.readthedocs.io/en/latest/theory/intro.html#) of the documentation.\n", + "\n", "Similarly, below is an example of a theory card:" ] }, @@ -174,7 +172,7 @@ "id": "169b82a0-abdd-4687-9ffe-9df38446a550", "metadata": {}, "source": [ - "Note that a template observable is provided by `yadmark` (assuming it was installed). One can thus just start from the default card and overwrite the values." + "Note that a template observable card is provided by `yadmark` and contains the default `yadism` values. One can thus just start from the default card and overwrite the values." ] }, { @@ -321,7 +319,8 @@ ], "source": [ "from rich.pretty import pprint # already installed as a dependency, only needed for a pretty printing\n", - "from yadmark.data.observables import default_card\n", + "from yadmark.data.observables import default_card # imports the default yadism observable card\n", + "\n", "pprint(default_card)" ] }, @@ -332,24 +331,24 @@ "source": [ "## Computing predictions\n", "\n", - "Now that we have all the necessary inputs, we can now compute the corresponding predictions:" + "Now that we have defined our observable and theory, we can now compute the corresponding preditions. This can be easily done by running the following:" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "id": "b7d95bf6-4536-41a5-9505-07a8743e5f6e", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
[17:13:31] INFO     Interpolation: number of points = 8, polynomial degree = 4, logarithmic =  interpolation.py:537\n",
+       "
[21:32:59] INFO     Interpolation: number of points = 8, polynomial degree = 4, logarithmic =  interpolation.py:537\n",
        "                    True                                                                                           \n",
        "
\n" ], "text/plain": [ - "\u001b[2;36m[17:13:31]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Interpolation: number of points = \u001b[1;36m8\u001b[0m, polynomial degree = \u001b[1;36m4\u001b[0m, logarithmic = \u001b]8;id=855744;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/interpolation.py\u001b\\\u001b[2minterpolation.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=350159;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/interpolation.py#537\u001b\\\u001b[2m537\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m[21:32:59]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Interpolation: number of points = \u001b[1;36m8\u001b[0m, polynomial degree = \u001b[1;36m4\u001b[0m, logarithmic = \u001b]8;id=704949;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/interpolation.py\u001b\\\u001b[2minterpolation.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=162454;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/interpolation.py#537\u001b\\\u001b[2m537\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m \u001b[3;92mTrue\u001b[0m \u001b[2m \u001b[0m\n" ] }, @@ -366,7 +365,7 @@ "
\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[1m{\u001b[0m\u001b[32m'MZ2'\u001b[0m: \u001b[1;36m8315.178393760001\u001b[0m, \u001b[32m'CKM'\u001b[0m: \u001b[1;35mCKM\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m9.49221518e-01\u001b[0m \u001b[1;36m5.07600900e-02\u001b[0m \u001b]8;id=209628;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py\u001b\\\u001b[2mcoupling_constants.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=423060;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py#52\u001b\\\u001b[2m52\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[1m{\u001b[0m\u001b[32m'MZ2'\u001b[0m: \u001b[1;36m8315.178393760001\u001b[0m, \u001b[32m'CKM'\u001b[0m: \u001b[1;35mCKM\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m9.49221518e-01\u001b[0m \u001b[1;36m5.07600900e-02\u001b[0m \u001b]8;id=56181;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py\u001b\\\u001b[2mcoupling_constants.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=853819;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py#52\u001b\\\u001b[2m52\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m \u001b[1;36m1.20409000e-05\u001b[0m\u001b[1m]\u001b[0m \u001b[1m[\u001b[0m\u001b[1;36m5.07150400e-02\u001b[0m \u001b[1;36m9.47604903e-01\u001b[0m \u001b[1;36m1.68100000e-03\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", "\u001b[2;36m \u001b[0m \u001b[1m[\u001b[0m\u001b[1;36m7.43044000e-05\u001b[0m \u001b[1;36m1.62409000e-03\u001b[0m \u001b[1;36m9.98304719e-01\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m'sin2theta_weak'\u001b[0m: \u001b[2m \u001b[0m\n", "\u001b[2;36m \u001b[0m \u001b[1;36m0.23121\u001b[0m, \u001b[32m'MW2'\u001b[0m: \u001b[1;36m6463.838403999999\u001b[0m\u001b[1m}\u001b[0m \u001b[2m \u001b[0m\n" @@ -383,7 +382,7 @@ "\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[1m{\u001b[0m\u001b[32m'process'\u001b[0m: \u001b[32m'NC'\u001b[0m, \u001b[32m'projectilePID'\u001b[0m: \u001b[1;36m11\u001b[0m, \u001b[32m'polarization'\u001b[0m: \u001b[1;36m0.0\u001b[0m, \u001b]8;id=742509;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py\u001b\\\u001b[2mcoupling_constants.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=926420;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py#53\u001b\\\u001b[2m53\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[1m{\u001b[0m\u001b[32m'process'\u001b[0m: \u001b[32m'NC'\u001b[0m, \u001b[32m'projectilePID'\u001b[0m: \u001b[1;36m11\u001b[0m, \u001b[32m'polarization'\u001b[0m: \u001b[1;36m0.0\u001b[0m, \u001b]8;id=326312;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py\u001b\\\u001b[2mcoupling_constants.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=908778;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py#53\u001b\\\u001b[2m53\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m \u001b[32m'propagatorCorrection'\u001b[0m: \u001b[1;36m0.0\u001b[0m, \u001b[32m'nc_pos_charge'\u001b[0m: \u001b[3;35mNone\u001b[0m\u001b[1m}\u001b[0m \u001b[2m \u001b[0m\n" ] }, @@ -397,7 +396,7 @@ "\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m RenScaleVar: \u001b[3;91mFalse\u001b[0m, FactScaleVar: \u001b[3;91mFalse\u001b[0m \u001b]8;id=321435;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/esf/scale_variations.py\u001b\\\u001b[2mscale_variations.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=492824;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/esf/scale_variations.py#61\u001b\\\u001b[2m61\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m RenScaleVar: \u001b[3;91mFalse\u001b[0m, FactScaleVar: \u001b[3;91mFalse\u001b[0m \u001b]8;id=344383;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/esf/scale_variations.py\u001b\\\u001b[2mscale_variations.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=760986;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/esf/scale_variations.py#61\u001b\\\u001b[2m61\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -410,7 +409,7 @@ "\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m0.00e+00\u001b[0m - inf - inf - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.7224999999999997\u001b[0m @ \u001b[1;36m4\u001b[0m \u001b]8;id=853001;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=372449;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m0.00e+00\u001b[0m - inf - inf - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.7224999999999997\u001b[0m @ \u001b[1;36m4\u001b[0m \u001b]8;id=684830;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=962601;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -423,7 +422,7 @@ "\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m PTO: \u001b[1;36m2\u001b[0m, PTO@evolution: \u001b[1;36m2\u001b[0m, process: NC \u001b]8;id=528897;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=838475;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#146\u001b\\\u001b[2m146\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m PTO: \u001b[1;36m2\u001b[0m, PTO@evolution: \u001b[1;36m2\u001b[0m, process: NC \u001b]8;id=493106;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=661291;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#146\u001b\\\u001b[2m146\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -436,7 +435,7 @@ "\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m FNS: FFNS, NfFF: \u001b[1;36m4\u001b[0m \u001b]8;id=952394;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=688311;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#153\u001b\\\u001b[2m153\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m FNS: FFNS, NfFF: \u001b[1;36m4\u001b[0m \u001b]8;id=905679;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=440153;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#153\u001b\\\u001b[2m153\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -449,7 +448,7 @@ "\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Intrinsic: \u001b[1m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1m]\u001b[0m \u001b]8;id=15986;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=831273;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#154\u001b\\\u001b[2m154\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Intrinsic: \u001b[1m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1m]\u001b[0m \u001b]8;id=537556;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=331787;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#154\u001b\\\u001b[2m154\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -462,7 +461,7 @@ "\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m projectile: electron, target: \u001b[1m{\u001b[0mZ: \u001b[1;36m1\u001b[0m, A: \u001b[1;36m1\u001b[0m\u001b[1m}\u001b[0m \u001b]8;id=634484;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=493872;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#155\u001b\\\u001b[2m155\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m projectile: electron, target: \u001b[1m{\u001b[0mZ: \u001b[1;36m1\u001b[0m, A: \u001b[1;36m1\u001b[0m\u001b[1m}\u001b[0m \u001b]8;id=366914;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=376500;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#155\u001b\\\u001b[2m155\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -586,11 +585,11 @@ { "data": { "text/html": [ - "
took 0.23 s\n",
+       "
took 0.24 s\n",
        "
\n" ], "text/plain": [ - "\u001b[36mtook \u001b[0m\u001b[1;36m0.23\u001b[0m\u001b[36m s\u001b[0m\n" + "\u001b[36mtook \u001b[0m\u001b[1;36m0.24\u001b[0m\u001b[36m s\u001b[0m\n" ] }, "metadata": {}, @@ -606,14 +605,14 @@ "id": "a1d79202-30d1-465f-9ce2-008fc760ebf1", "metadata": {}, "source": [ - "`out` is an object of type `yadism.output.Output` from which one can perform various operations. In our example, we are interested in convoluting it with a PDF set in the LHAPDF format.\n", + "`out` is an object of type `yadism.output.Output` from which one can perform various operations. In our example, we are interested in convoluting it with a PDF set in the [LHAPDF](https://lhapdf.hepforge.org/) format.\n", "\n", - "To do so, first we need to import the `lhapdf` package. For this example, we will use the NNPDF4.0 set: `NNPDF40_nnlo_as_01180`." + "To do so, first we need to import the `lhapdf` package. For this example, we will use the NNLO NNPDF4.0 set: `NNPDF40_nnlo_as_01180`." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "id": "bc6f3aac-802b-4073-9e6a-e18e54f3ef85", "metadata": {}, "outputs": [ @@ -628,6 +627,8 @@ ], "source": [ "import lhapdf\n", + "\n", + "# load the PDF set\n", "pdf = lhapdf.mkPDF(\"NNPDF40_nnlo_as_01180\")" ] }, @@ -641,18 +642,18 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 8, "id": "9b983dd8-4724-439c-bdab-773879308985", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
[17:13:33] INFO     Atlas [0.00e+00 - 2.28e+00 - 2.42e+01 - 2.98e+04 - inf], ref=8317.44 @ 5        matchings.py:69\n",
+       "
[21:37:46] INFO     Atlas [0.00e+00 - 2.28e+00 - 2.42e+01 - 2.98e+04 - inf], ref=8317.44 @ 5        matchings.py:69\n",
        "
\n" ], "text/plain": [ - "\u001b[2;36m[17:13:33]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=295909;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=914974;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m[21:37:46]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=996071;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=24744;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -665,7 +666,7 @@ "
\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Strong Coupling: \u001b[1;35ma_s\u001b[0m\u001b[1m(\u001b[0mµ_R^\u001b[1;36m2\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.440000\u001b[0m\u001b[1m)\u001b[0m^\u001b[1m(\u001b[0m\u001b[33mnf\u001b[0m=\u001b[1;36m5\u001b[0m\u001b[1m)\u001b[0m=\u001b[1;36m0.\u001b[0m\u001b[1;36m009390\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.118000\u001b[0m/\u001b[1m(\u001b[0m4π\u001b[1m)\u001b[0m \u001b]8;id=48542;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py\u001b\\\u001b[2mcouplings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=745971;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py#458\u001b\\\u001b[2m458\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Strong Coupling: \u001b[1;35ma_s\u001b[0m\u001b[1m(\u001b[0mµ_R^\u001b[1;36m2\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.440000\u001b[0m\u001b[1m)\u001b[0m^\u001b[1m(\u001b[0m\u001b[33mnf\u001b[0m=\u001b[1;36m5\u001b[0m\u001b[1m)\u001b[0m=\u001b[1;36m0.\u001b[0m\u001b[1;36m009390\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.118000\u001b[0m/\u001b[1m(\u001b[0m4π\u001b[1m)\u001b[0m \u001b]8;id=295081;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py\u001b\\\u001b[2mcouplings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=206002;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py#458\u001b\\\u001b[2m458\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -678,7 +679,7 @@ "
\n" ], "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=596034;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=509149;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=842613;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=103523;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, @@ -691,7 +692,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 9, "id": "a56aee13-b08b-492f-80d0-3487bea74318", "metadata": {}, "outputs": [ @@ -747,25 +748,36 @@ "pprint(values)" ] }, + { + "cell_type": "markdown", + "id": "2c0ffc4a-bb6b-4d89-9a01-1d2c93e49995", + "metadata": {}, + "source": [ + "We can see that `values` is a dictionary containing one element whose key is the name of the observable (as we defined above). If we had defined two observables in the `observable_card`, `values` would also contain two elements." + ] + }, { "cell_type": "markdown", "id": "519b8537-9c09-4a66-bf44-ff47e1879449", "metadata": {}, "source": [ - "## Dumping (loading) predictions into (from) fast-interpolation grids\n", + "## Dumping predictions into fast-interpolation grids\n", "\n", - "One of the main advantages of `yadism` is its interface with [PineAPPL](https://github.com/NNPDF/pineappl) - a library providing fast-interpolation grids. This is quite convenient in that one can re-use the same computations without the need to re-run `yadism`.\n", + "We learned from the previous sections how to compute an observable using `yadism` and now we'll see how to tabulate the output of `yadism.run_yadism` into a fast-interpolation table. This has the convenient advantage that one can re-use the same computations without the need to re-run `yadism` (to convolute with different PDF sets for example).\n", + "\n", + "One of the main advantage of `yadism` is its interface with PineAPPL - a library providing fast interpolation into a unique format suitable for various HEP-related softwares. \n", "\n", "Each observable defined in `observable_card` can be dumped into its own fast-interpolation grid. The steps are as follow:" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 10, "id": "7f914e87-bb05-47c7-a850-11a18e6cfdb5", "metadata": {}, "outputs": [], "source": [ + "# import function that dumps the predictions into a Pineappl format\n", "from yadbox.export import dump_pineappl_to_file\n", "\n", "# Extract the names of the different observables (in case there are many)\n", @@ -776,21 +788,48 @@ " dump_pineappl_to_file(out, f\"outputgrid_{obs}.pineappl.lz4\", f\"{obs}\")" ] }, + { + "cell_type": "markdown", + "id": "7dffb5fd-9e84-4982-b9d4-a4f077a573e8", + "metadata": {}, + "source": [ + "Our PineAPPL grid has now been written on the disk. Note that the extension has to be `pineappl.lz4`." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "703b29ce-9068-44af-b72b-1144bad805e6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "outputgrid_XSHERANCAVG_charm.pineappl.lz4\n" + ] + } + ], + "source": [ + "!ls outputgrid_*" + ] + }, { "cell_type": "markdown", "id": "0c887943-be93-4a0f-815b-1317ad04db2c", "metadata": {}, "source": [ - "To load the pre-computed predictions, we need to import the `pineappl` library. `pineappl` is part of the dependency of `yadism` so we don't have to install it." + "To load the pre-computed predictions, we need to import the `pineappl` package. Given that `pineappl` is a dependency of `yadism` it was already installed so we don't have to install it again." ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 12, "id": "ebf75d0e-965a-46b1-a3a3-e20eeb1d5e15", "metadata": {}, "outputs": [], "source": [ + "# imports the pineappl package\n", "import pineappl\n", "\n", "# Read the pineappl grid saved earlier\n", @@ -802,7 +841,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 13, "id": "fc268946-3f84-4f63-be98-a899adf9512c", "metadata": {}, "outputs": [ @@ -823,6 +862,14 @@ "source": [ "pprint(results)" ] + }, + { + "cell_type": "markdown", + "id": "c114b40d-9a40-4d73-8609-ab8761fe37a0", + "metadata": {}, + "source": [ + "As we can see, we get similar results to what we got before. Now, the `results` is just an array of two dimension corresponding to the different kinematic values." + ] } ], "metadata": { From 5dd7de6d7b2b589249380f637e5697eb2559f1d5 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Fri, 19 Jan 2024 11:26:59 +0200 Subject: [PATCH 03/18] Improve nb handling in docs --- docs/source/overview/tutorials.ipynb | 6 +- poetry.lock | 1650 ++++++++++++++------------ pyproject.toml | 2 + 3 files changed, 871 insertions(+), 787 deletions(-) diff --git a/docs/source/overview/tutorials.ipynb b/docs/source/overview/tutorials.ipynb index 3b12d6936..e8fc4bf31 100644 --- a/docs/source/overview/tutorials.ipynb +++ b/docs/source/overview/tutorials.ipynb @@ -26,7 +26,7 @@ "pip install 'yadism[mark, box]'\n", "```\n", "\n", - "In addition to installing the main `yadism` package, the above command also installs `yadmark` and `yadbox`. `yadmark` is package that provides APIs to perform the benchmkar of `yadism` to other DIS codes (e.g. `APFEL`, `APFEL++`, `QCDNUM`). `yadbox` instead provides an interface to `PineAPPL` to store predictions in the form of fast-interpolation grids.\n", + "In addition to installing the main `yadism` package, the above command also installs `yadmark` and `yadbox`. `yadmark` is package that provides APIs to perform the benchmark of `yadism` to other DIS codes (e.g. `APFEL`, `APFEL++`, `QCDNUM`). `yadbox` instead provides an interface to `PineAPPL` to store predictions in the form of fast-interpolation grids.\n", "\n", "In order to check that `yadism` was installed properly, one can check the version:" ] @@ -874,9 +874,9 @@ ], "metadata": { "kernelspec": { - "display_name": "yadism", + "display_name": "yadism-QljnF84o-py3.10", "language": "python", - "name": "yadism" + "name": "yadism-qljnf84o-py3.10" }, "language_info": { "codemirror_mode": { diff --git a/poetry.lock b/poetry.lock index c9d5993c8..7db9bc332 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "adani" @@ -113,31 +113,32 @@ hg = ["python-hglib (>=1.5)"] [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "babel" -version = "2.13.1" +version = "2.14.0" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, - {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] [package.dependencies] @@ -159,13 +160,13 @@ files = [ [[package]] name = "banana-hep" -version = "0.6.11" +version = "0.6.12" description = "Benchmark QCD physics" optional = true python-versions = ">=3.8.0,<3.12" files = [ - {file = "banana_hep-0.6.11-py3-none-any.whl", hash = "sha256:5eed795c5e9b2cdcb93a49df1180832a43cabfa7a4703e7dcb7ed26c3a897e4f"}, - {file = "banana_hep-0.6.11.tar.gz", hash = "sha256:e1e7f4af2f64ca17c9992ab3a4fc857fb43fbb316a3e781156d465f1ddea452d"}, + {file = "banana_hep-0.6.12-py3-none-any.whl", hash = "sha256:3cb065926a774689f6dee606dde0453e4e856dc1372c99e12f6b54aca26c41dd"}, + {file = "banana_hep-0.6.12.tar.gz", hash = "sha256:0cf4a78f5affa5e1afe138ae6c9df5414deb9785901b585fcbdf6bbf531a1b9b"}, ] [package.dependencies] @@ -182,19 +183,22 @@ SQLAlchemy = ">=1.4.29,<2.0.0" [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.12.3" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] @@ -218,13 +222,13 @@ css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] @@ -415,6 +419,23 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "comm" +version = "0.2.1" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +optional = false +python-versions = ">=3.8" +files = [ + {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"}, + {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"}, +] + +[package.dependencies] +traitlets = ">=4" + +[package.extras] +test = ["pytest"] + [[package]] name = "commonmark" version = "0.9.1" @@ -502,63 +523,63 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.3.2" +version = "7.4.0" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, - {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, - {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, - {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, - {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, - {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, - {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, - {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, - {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, - {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, - {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, - {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, - {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, - {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, + {file = "coverage-7.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36b0ea8ab20d6a7564e89cb6135920bc9188fb5f1f7152e94e8300b7b189441a"}, + {file = "coverage-7.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0676cd0ba581e514b7f726495ea75aba3eb20899d824636c6f59b0ed2f88c471"}, + {file = "coverage-7.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ca5c71a5a1765a0f8f88022c52b6b8be740e512980362f7fdbb03725a0d6b9"}, + {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7c97726520f784239f6c62506bc70e48d01ae71e9da128259d61ca5e9788516"}, + {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:815ac2d0f3398a14286dc2cea223a6f338109f9ecf39a71160cd1628786bc6f5"}, + {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:80b5ee39b7f0131ebec7968baa9b2309eddb35b8403d1869e08f024efd883566"}, + {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5b2ccb7548a0b65974860a78c9ffe1173cfb5877460e5a229238d985565574ae"}, + {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:995ea5c48c4ebfd898eacb098164b3cc826ba273b3049e4a889658548e321b43"}, + {file = "coverage-7.4.0-cp310-cp310-win32.whl", hash = "sha256:79287fd95585ed36e83182794a57a46aeae0b64ca53929d1176db56aacc83451"}, + {file = "coverage-7.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b14b4f8760006bfdb6e08667af7bc2d8d9bfdb648351915315ea17645347137"}, + {file = "coverage-7.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04387a4a6ecb330c1878907ce0dc04078ea72a869263e53c72a1ba5bbdf380ca"}, + {file = "coverage-7.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea81d8f9691bb53f4fb4db603203029643caffc82bf998ab5b59ca05560f4c06"}, + {file = "coverage-7.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74775198b702868ec2d058cb92720a3c5a9177296f75bd97317c787daf711505"}, + {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f03940f9973bfaee8cfba70ac991825611b9aac047e5c80d499a44079ec0bc"}, + {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:485e9f897cf4856a65a57c7f6ea3dc0d4e6c076c87311d4bc003f82cfe199d25"}, + {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6ae8c9d301207e6856865867d762a4b6fd379c714fcc0607a84b92ee63feff70"}, + {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bf477c355274a72435ceb140dc42de0dc1e1e0bf6e97195be30487d8eaaf1a09"}, + {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:83c2dda2666fe32332f8e87481eed056c8b4d163fe18ecc690b02802d36a4d26"}, + {file = "coverage-7.4.0-cp311-cp311-win32.whl", hash = "sha256:697d1317e5290a313ef0d369650cfee1a114abb6021fa239ca12b4849ebbd614"}, + {file = "coverage-7.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:26776ff6c711d9d835557ee453082025d871e30b3fd6c27fcef14733f67f0590"}, + {file = "coverage-7.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:13eaf476ec3e883fe3e5fe3707caeb88268a06284484a3daf8250259ef1ba143"}, + {file = "coverage-7.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846f52f46e212affb5bcf131c952fb4075b55aae6b61adc9856222df89cbe3e2"}, + {file = "coverage-7.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f66da8695719ccf90e794ed567a1549bb2644a706b41e9f6eae6816b398c4a"}, + {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:164fdcc3246c69a6526a59b744b62e303039a81e42cfbbdc171c91a8cc2f9446"}, + {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:316543f71025a6565677d84bc4df2114e9b6a615aa39fb165d697dba06a54af9"}, + {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bb1de682da0b824411e00a0d4da5a784ec6496b6850fdf8c865c1d68c0e318dd"}, + {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0e8d06778e8fbffccfe96331a3946237f87b1e1d359d7fbe8b06b96c95a5407a"}, + {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a56de34db7b7ff77056a37aedded01b2b98b508227d2d0979d373a9b5d353daa"}, + {file = "coverage-7.4.0-cp312-cp312-win32.whl", hash = "sha256:51456e6fa099a8d9d91497202d9563a320513fcf59f33991b0661a4a6f2ad450"}, + {file = "coverage-7.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:cd3c1e4cb2ff0083758f09be0f77402e1bdf704adb7f89108007300a6da587d0"}, + {file = "coverage-7.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d1bf53c4c8de58d22e0e956a79a5b37f754ed1ffdbf1a260d9dcfa2d8a325e"}, + {file = "coverage-7.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:109f5985182b6b81fe33323ab4707011875198c41964f014579cf82cebf2bb85"}, + {file = "coverage-7.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc9d4bc55de8003663ec94c2f215d12d42ceea128da8f0f4036235a119c88ac"}, + {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc6d65b21c219ec2072c1293c505cf36e4e913a3f936d80028993dd73c7906b1"}, + {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a10a4920def78bbfff4eff8a05c51be03e42f1c3735be42d851f199144897ba"}, + {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b8e99f06160602bc64da35158bb76c73522a4010f0649be44a4e167ff8555952"}, + {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7d360587e64d006402b7116623cebf9d48893329ef035278969fa3bbf75b697e"}, + {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29f3abe810930311c0b5d1a7140f6395369c3db1be68345638c33eec07535105"}, + {file = "coverage-7.4.0-cp38-cp38-win32.whl", hash = "sha256:5040148f4ec43644702e7b16ca864c5314ccb8ee0751ef617d49aa0e2d6bf4f2"}, + {file = "coverage-7.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:9864463c1c2f9cb3b5db2cf1ff475eed2f0b4285c2aaf4d357b69959941aa555"}, + {file = "coverage-7.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:936d38794044b26c99d3dd004d8af0035ac535b92090f7f2bb5aa9c8e2f5cd42"}, + {file = "coverage-7.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:799c8f873794a08cdf216aa5d0531c6a3747793b70c53f70e98259720a6fe2d7"}, + {file = "coverage-7.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7defbb9737274023e2d7af02cac77043c86ce88a907c58f42b580a97d5bcca9"}, + {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1526d265743fb49363974b7aa8d5899ff64ee07df47dd8d3e37dcc0818f09ed"}, + {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf635a52fc1ea401baf88843ae8708591aa4adff875e5c23220de43b1ccf575c"}, + {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:756ded44f47f330666843b5781be126ab57bb57c22adbb07d83f6b519783b870"}, + {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0eb3c2f32dabe3a4aaf6441dde94f35687224dfd7eb2a7f47f3fd9428e421058"}, + {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bfd5db349d15c08311702611f3dccbef4b4e2ec148fcc636cf8739519b4a5c0f"}, + {file = "coverage-7.4.0-cp39-cp39-win32.whl", hash = "sha256:53d7d9158ee03956e0eadac38dfa1ec8068431ef8058fe6447043db1fb40d932"}, + {file = "coverage-7.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfd2a8b6b0d8e66e944d47cdec2f47c48fef2ba2f2dff5a9a75757f64172857e"}, + {file = "coverage-7.4.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:c530833afc4707fe48524a44844493f36d8727f04dcce91fb978c414a8556cc6"}, + {file = "coverage-7.4.0.tar.gz", hash = "sha256:707c0f58cb1712b8809ece32b68996ee1e609f71bd14615bd8f87a1293cb610e"}, ] [package.dependencies] @@ -582,6 +603,33 @@ files = [ docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] tests = ["pytest", "pytest-cov", "pytest-xdist"] +[[package]] +name = "debugpy" +version = "1.8.0" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"}, + {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"}, + {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"}, + {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"}, + {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"}, + {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"}, + {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"}, + {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"}, + {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"}, + {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"}, + {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"}, + {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"}, + {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"}, + {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"}, + {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"}, + {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"}, + {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"}, + {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"}, +] + [[package]] name = "decorator" version = "5.1.1" @@ -631,13 +679,13 @@ files = [ [[package]] name = "eko" -version = "0.14.0" +version = "0.14.1" description = "Evolution Kernel Operators" optional = false python-versions = ">=3.8,<3.12" files = [ - {file = "eko-0.14.0-py3-none-any.whl", hash = "sha256:f9baca68c3aef610ddb9bea89936922b84aee9e145ae3636b8193610f68115c0"}, - {file = "eko-0.14.0.tar.gz", hash = "sha256:bbe025458ce6b24d8e87a8d0a2f45751102eac1641ea4392fe4eded80d4dc223"}, + {file = "eko-0.14.1-py3-none-any.whl", hash = "sha256:88b89349df5570ddb8bb4bab5c3a8e6f071ab2758a34f3821e49b144b970d8b2"}, + {file = "eko-0.14.1.tar.gz", hash = "sha256:54e4b78128f1f113630970f88ddac54fd9109f06832e6222a2cff426573cabff"}, ] [package.dependencies] @@ -649,17 +697,17 @@ scipy = ">=1.10.1,<2.0.0" [package.extras] box = ["click (>=8.0.3,<9.0.0)", "rich (>=12.6.0,<13.0.0)"] -mark = ["banana-hep (>=0.6.9,<0.7.0)", "matplotlib (>=3.5.1,<4.0.0)", "pandas (>=1.3.0,<2.0.0)", "sqlalchemy (>=1.4.21,<2.0.0)"] +mark = ["banana-hep (>=0.6.12,<0.7.0)", "matplotlib (>=3.5.1,<4.0.0)", "pandas (>=1.3.0,<2.0.0)", "sqlalchemy (>=1.4.21,<2.0.0)"] [[package]] name = "exceptiongroup" -version = "1.1.3" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -696,13 +744,13 @@ pyrepl = ">=0.8.2" [[package]] name = "fastjsonschema" -version = "2.18.1" +version = "2.19.1" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.18.1-py3-none-any.whl", hash = "sha256:aec6a19e9f66e9810ab371cc913ad5f4e9e479b63a7072a2cd060a9369e329a8"}, - {file = "fastjsonschema-2.18.1.tar.gz", hash = "sha256:06dc8680d937628e993fa0cd278f196d20449a1adc087640710846b324d422ea"}, + {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, + {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, ] [package.extras] @@ -710,59 +758,59 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "fonttools" -version = "4.44.1" +version = "4.47.2" description = "Tools to manipulate font files" optional = true python-versions = ">=3.8" files = [ - {file = "fonttools-4.44.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8acf50c20bae9880169ff133768a54f587d956676d28894401835a28f450935e"}, - {file = "fonttools-4.44.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:02939e423540e05843a5c2b84704f45d307144f761a42a299d9b0b481e497225"}, - {file = "fonttools-4.44.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d96cc1395dbf82dedfd4eb127d320004088df6007383c25db676e5f42fe414"}, - {file = "fonttools-4.44.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aff3c12fba2525e5b7f7ba73fab10ddac386f8019b6cf2b8701239cf9f3e2a8a"}, - {file = "fonttools-4.44.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3675499e11a2332a867c1ce98792d29615ac143186c1c1d3e1bb7a13f1929b52"}, - {file = "fonttools-4.44.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fcf6c0c2bf2b0baeb55b5e44e9d6f2b71ede808949b8ab4daca077cc3f9cfff5"}, - {file = "fonttools-4.44.1-cp310-cp310-win32.whl", hash = "sha256:147c9f5fbe12486fa186b5ccdc64a537d581e4f9bbddfbc40f2a15a55c66f54e"}, - {file = "fonttools-4.44.1-cp310-cp310-win_amd64.whl", hash = "sha256:0bd45092788dbfb781fae299905695a3fe5c1956a515ee331c9f034da3a9d0e5"}, - {file = "fonttools-4.44.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d22d9a4cb3f0c96991d4dccab66c7377302c9ca09dcf0cbce968d73919585120"}, - {file = "fonttools-4.44.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0c1ac78c60b155ce709b50e28321baa3813dfae648bf55ac80d5a97c70d088e0"}, - {file = "fonttools-4.44.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6065578bdf96d4b69dd53d8b49ff02412b2a46d461b0d1ee5eddb81c3a953a46"}, - {file = "fonttools-4.44.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17702266ba92cef9a0d7418609f8f8b8e019192c62e8014f10b89a485af9d8ce"}, - {file = "fonttools-4.44.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c1d22a61a247262f178819f0331e0692e27c88be5770bf1c2404d0d52799f711"}, - {file = "fonttools-4.44.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:61b794e6a9208e7ee3abf11a9f56b9c1409967817dfd732f97b44812686cab1d"}, - {file = "fonttools-4.44.1-cp311-cp311-win32.whl", hash = "sha256:a02747ac741abe1fe994ac55b143432637d136e4a5a472e7a90574a015b57dc4"}, - {file = "fonttools-4.44.1-cp311-cp311-win_amd64.whl", hash = "sha256:8dd81470227c53ab78788f1b21b7e655b2c3aa66f0f670d9011f2deb64bed034"}, - {file = "fonttools-4.44.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:63efb6b66c275cb2c750576ed743f9995b92bcd733b72699599c6f74dce277c6"}, - {file = "fonttools-4.44.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25504368ce3dbdc5df1e6bee1980674b60216c543ad2647c85333f8daf5e9dd2"}, - {file = "fonttools-4.44.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc4acf7f1684d234d788cbb1976fbced4e1ae7c51abaf4314e11d1d86498ba76"}, - {file = "fonttools-4.44.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6698abcbb43f68ecfe473169d5928adf0a09ab8e6439322f80bc10a80ab9195d"}, - {file = "fonttools-4.44.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6dce674ba22419a9f3822f9c1b6bd823fce11d3a34372c580216167b6d9e232b"}, - {file = "fonttools-4.44.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8493c84ac86fdc5dde68b720959b79865cf5216a5c1ee9b4a161eac8c56dc310"}, - {file = "fonttools-4.44.1-cp312-cp312-win32.whl", hash = "sha256:a4a8734ddb91647d9545caae4dfb4633045c5dccb2fccb2d6c2a09424d975ef1"}, - {file = "fonttools-4.44.1-cp312-cp312-win_amd64.whl", hash = "sha256:7debaae9f267702ac4e89944bbfc4e55bc2d0ef891aa6c18d6afd9184a14554a"}, - {file = "fonttools-4.44.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:748d21764665209d5e0729ce8386fd01c92258699db732c7dbe4c9abf9e7c392"}, - {file = "fonttools-4.44.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:753de1235ac308111f80eacb9d92b328088adfec7147fd101692cc49ad53a3fe"}, - {file = "fonttools-4.44.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c142c11d28af532c7edddf191367d6acf2a2884bb4e2ba329c265f58ca865d0a"}, - {file = "fonttools-4.44.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dd10d40028bf71e9604279875e4c258a36b2a42fff349fdf20141813d83cc61"}, - {file = "fonttools-4.44.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8e4961e26423ddd713672746c110e708c0094deae74493e21198d85f54f7d88c"}, - {file = "fonttools-4.44.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:af89a9370dc463ffed3010af6fad1aa58998ce5eb5d94c2c2688768e6b108cc8"}, - {file = "fonttools-4.44.1-cp38-cp38-win32.whl", hash = "sha256:6d2d0e0d64a21b07c30206d500f8e77f4beaf80e7cc0ffd65a304a9ae1c0e197"}, - {file = "fonttools-4.44.1-cp38-cp38-win_amd64.whl", hash = "sha256:dc16e26668ec2ae01a37ff8293ce0326cf8c043e24fcf86fc38e6c25ddd98926"}, - {file = "fonttools-4.44.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a04ad39ac67c523c9f8f102706ac05d7e5cee3148a3519c6afc6ffbb3f0af7aa"}, - {file = "fonttools-4.44.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:11e9cba26fd658a491c82fdf5dc5bdb8078ca69ca70ba5724f63a66d486fa8b3"}, - {file = "fonttools-4.44.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fa904fb50c9f1b3ffbe352c7c4ed35eb16558933f011ff74f86f33504358e4d"}, - {file = "fonttools-4.44.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caf014bcc24673b681e7f768180f063691b301e2eccd9a53c43b5eebfb448bd8"}, - {file = "fonttools-4.44.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:97fb6f806694268d0c35abfc1f33662a1a96d12875a790b2b69d7b8d4fadbea5"}, - {file = "fonttools-4.44.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac523156bf227f009102cf33c116bcc18d6b9a05ea9a3a6eaa57e3adb42620a9"}, - {file = "fonttools-4.44.1-cp39-cp39-win32.whl", hash = "sha256:50aacecec89ca07ba97a63a949f9b273ccbdc105602ec4426c8a9a143f9e6aa3"}, - {file = "fonttools-4.44.1-cp39-cp39-win_amd64.whl", hash = "sha256:994c62a46cb2cfd670edc360d87c902ee475790fbddb267abd9fd8a83199423a"}, - {file = "fonttools-4.44.1-py3-none-any.whl", hash = "sha256:e775851c6884c16ed3831e461a0d5e271d9ebcd05204122d3a21ca2465a5d8c1"}, - {file = "fonttools-4.44.1.tar.gz", hash = "sha256:0d8ed83815a125b25c10404736a2cd43d60eb6479fe2d68373418cd1822ec330"}, -] - -[package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] + {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df"}, + {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1"}, + {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c"}, + {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8"}, + {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670"}, + {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c"}, + {file = "fonttools-4.47.2-cp310-cp310-win32.whl", hash = "sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0"}, + {file = "fonttools-4.47.2-cp310-cp310-win_amd64.whl", hash = "sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1"}, + {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b"}, + {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac"}, + {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c"}, + {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70"}, + {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e"}, + {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703"}, + {file = "fonttools-4.47.2-cp311-cp311-win32.whl", hash = "sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c"}, + {file = "fonttools-4.47.2-cp311-cp311-win_amd64.whl", hash = "sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9"}, + {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635"}, + {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d"}, + {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb"}, + {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07"}, + {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71"}, + {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f"}, + {file = "fonttools-4.47.2-cp312-cp312-win32.whl", hash = "sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085"}, + {file = "fonttools-4.47.2-cp312-cp312-win_amd64.whl", hash = "sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4"}, + {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc"}, + {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952"}, + {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa"}, + {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b"}, + {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6"}, + {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946"}, + {file = "fonttools-4.47.2-cp38-cp38-win32.whl", hash = "sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b"}, + {file = "fonttools-4.47.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae"}, + {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6"}, + {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506"}, + {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37"}, + {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c"}, + {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899"}, + {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7"}, + {file = "fonttools-4.47.2-cp39-cp39-win32.whl", hash = "sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50"}, + {file = "fonttools-4.47.2-cp39-cp39-win_amd64.whl", hash = "sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8"}, + {file = "fonttools-4.47.2-py3-none-any.whl", hash = "sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184"}, + {file = "fonttools-4.47.2.tar.gz", hash = "sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3"}, +] + +[package.extras] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "scipy"] +interpolatable = ["munkres", "pycairo", "scipy"] lxml = ["lxml (>=4.0,<5)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] @@ -775,92 +823,93 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "greenlet" -version = "3.0.1" +version = "3.0.3" description = "Lightweight in-process concurrent programming" optional = true python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63"}, - {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e"}, - {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846"}, - {file = "greenlet-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9"}, - {file = "greenlet-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234"}, - {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884"}, - {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94"}, - {file = "greenlet-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c"}, - {file = "greenlet-3.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5"}, - {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d"}, - {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445"}, - {file = "greenlet-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de"}, - {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166"}, - {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"}, - {file = "greenlet-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1"}, - {file = "greenlet-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8"}, - {file = "greenlet-3.0.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9"}, - {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e"}, - {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a"}, - {file = "greenlet-3.0.1-cp38-cp38-win32.whl", hash = "sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd"}, - {file = "greenlet-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6"}, - {file = "greenlet-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d"}, - {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8"}, - {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546"}, - {file = "greenlet-3.0.1-cp39-cp39-win32.whl", hash = "sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57"}, - {file = "greenlet-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619"}, - {file = "greenlet-3.0.1.tar.gz", hash = "sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b"}, -] - -[package.extras] -docs = ["Sphinx"] + {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, + {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, + {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, + {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, + {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, + {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, + {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, + {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, + {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, + {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, + {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, + {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, + {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, + {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, + {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, + {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] test = ["objgraph", "psutil"] [[package]] name = "hypothesis" -version = "6.88.4" +version = "6.96.1" description = "A library for property-based testing" optional = false python-versions = ">=3.8" files = [ - {file = "hypothesis-6.88.4-py3-none-any.whl", hash = "sha256:3443eeb6aace5fb1567f6f23401152ca417310789b296df21633d8284be51510"}, - {file = "hypothesis-6.88.4.tar.gz", hash = "sha256:5c1126b8cb3cef06a6f4a3d2a721b6c0412090cc5fca15fca573f46d5f24e89e"}, + {file = "hypothesis-6.96.1-py3-none-any.whl", hash = "sha256:848ea0952f0bdfd02eac59e41b03f1cbba8fa2cffeffa8db328bbd6cfe159974"}, + {file = "hypothesis-6.96.1.tar.gz", hash = "sha256:955a57e56be4607c81c17ca53e594af54aadeed91e07b88bb7f84e8208ea7739"}, ] [package.dependencies] -attrs = ">=19.2.0" +attrs = ">=22.2.0" exceptiongroup = {version = ">=1.0.0", markers = "python_version < \"3.11\""} sortedcontainers = ">=2.1.0,<3.0.0" [package.extras] -all = ["backports.zoneinfo (>=0.2.1)", "black (>=19.10b0)", "click (>=7.0)", "django (>=3.2)", "dpcontracts (>=0.4)", "lark (>=0.10.1)", "libcst (>=0.3.16)", "numpy (>=1.17.3)", "pandas (>=1.1)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "tzdata (>=2023.3)"] +all = ["backports.zoneinfo (>=0.2.1)", "black (>=19.10b0)", "click (>=7.0)", "django (>=3.2)", "dpcontracts (>=0.4)", "lark (>=0.10.1)", "libcst (>=0.3.16)", "numpy (>=1.17.3)", "pandas (>=1.1)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "tzdata (>=2023.4)"] cli = ["black (>=19.10b0)", "click (>=7.0)", "rich (>=9.0.0)"] codemods = ["libcst (>=0.3.16)"] dateutil = ["python-dateutil (>=1.4)"] @@ -873,17 +922,17 @@ pandas = ["pandas (>=1.1)"] pytest = ["pytest (>=4.6)"] pytz = ["pytz (>=2014.1)"] redis = ["redis (>=3.0.0)"] -zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2023.3)"] +zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2023.4)"] [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] @@ -899,20 +948,20 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.8.0" +version = "7.0.1" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] @@ -945,6 +994,39 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] +[[package]] +name = "ipykernel" +version = "6.29.0" +description = "IPython Kernel for Jupyter" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ipykernel-6.29.0-py3-none-any.whl", hash = "sha256:076663ca68492576f051e4af7720d33f34383e655f2be0d544c8b1c9de915b2f"}, + {file = "ipykernel-6.29.0.tar.gz", hash = "sha256:b5dd3013cab7b330df712891c96cd1ab868c27a7159e606f762015e9bf8ceb3f"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1.1" +debugpy = ">=1.6.5" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=24" +tornado = ">=6.1" +traitlets = ">=5.4.0" + +[package.extras] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.2)", "pytest-cov", "pytest-timeout"] + [[package]] name = "ipython" version = "8.12.3" @@ -986,20 +1068,17 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa [[package]] name = "isort" -version = "5.12.0" +version = "5.13.2" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, ] [package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] +colors = ["colorama (>=0.4.6)"] [[package]] name = "jedi" @@ -1039,13 +1118,13 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.19.2" +version = "4.21.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.2-py3-none-any.whl", hash = "sha256:eee9e502c788e89cb166d4d37f43084e3b64ab405c795c03d343a4dbc2c810fc"}, - {file = "jsonschema-4.19.2.tar.gz", hash = "sha256:c9ff4d7447eed9592c23a12ccee508baf0dd0d59650615e847feb6cdca74f392"}, + {file = "jsonschema-4.21.0-py3-none-any.whl", hash = "sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c"}, + {file = "jsonschema-4.21.0.tar.gz", hash = "sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167"}, ] [package.dependencies] @@ -1062,18 +1141,18 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.7.1" +version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, - {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, ] [package.dependencies] importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "jupyter-client" @@ -1100,13 +1179,13 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.5.0" +version = "5.7.1" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.5.0-py3-none-any.whl", hash = "sha256:e11e02cd8ae0a9de5c6c44abf5727df9f2581055afe00b22183f621ba3585805"}, - {file = "jupyter_core-5.5.0.tar.gz", hash = "sha256:880b86053bf298a8724994f95e99b99130659022a4f7f45f563084b6223861d3"}, + {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"}, + {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"}, ] [package.dependencies] @@ -1120,13 +1199,13 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyterlab-pygments" -version = "0.2.2" +version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, - {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, ] [[package]] @@ -1258,47 +1337,48 @@ six = ">=1.4.1" [[package]] name = "lazy-object-proxy" -version = "1.9.0" +version = "1.10.0" description = "A fast and thorough lazy object proxy." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, + {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, + {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, ] [[package]] @@ -1351,46 +1431,47 @@ files = [ [[package]] name = "lz4" -version = "4.3.2" +version = "4.3.3" description = "LZ4 Bindings for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "lz4-4.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1c4c100d99eed7c08d4e8852dd11e7d1ec47a3340f49e3a96f8dfbba17ffb300"}, - {file = "lz4-4.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:edd8987d8415b5dad25e797043936d91535017237f72fa456601be1479386c92"}, - {file = "lz4-4.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7c50542b4ddceb74ab4f8b3435327a0861f06257ca501d59067a6a482535a77"}, - {file = "lz4-4.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f5614d8229b33d4a97cb527db2a1ac81308c6e796e7bdb5d1309127289f69d5"}, - {file = "lz4-4.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f00a9ba98f6364cadda366ae6469b7b3568c0cced27e16a47ddf6b774169270"}, - {file = "lz4-4.3.2-cp310-cp310-win32.whl", hash = "sha256:b10b77dc2e6b1daa2f11e241141ab8285c42b4ed13a8642495620416279cc5b2"}, - {file = "lz4-4.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:86480f14a188c37cb1416cdabacfb4e42f7a5eab20a737dac9c4b1c227f3b822"}, - {file = "lz4-4.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7c2df117def1589fba1327dceee51c5c2176a2b5a7040b45e84185ce0c08b6a3"}, - {file = "lz4-4.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1f25eb322eeb24068bb7647cae2b0732b71e5c639e4e4026db57618dcd8279f0"}, - {file = "lz4-4.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8df16c9a2377bdc01e01e6de5a6e4bbc66ddf007a6b045688e285d7d9d61d1c9"}, - {file = "lz4-4.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f571eab7fec554d3b1db0d666bdc2ad85c81f4b8cb08906c4c59a8cad75e6e22"}, - {file = "lz4-4.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7211dc8f636ca625abc3d4fb9ab74e5444b92df4f8d58ec83c8868a2b0ff643d"}, - {file = "lz4-4.3.2-cp311-cp311-win32.whl", hash = "sha256:867664d9ca9bdfce840ac96d46cd8838c9ae891e859eb98ce82fcdf0e103a947"}, - {file = "lz4-4.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:a6a46889325fd60b8a6b62ffc61588ec500a1883db32cddee9903edfba0b7584"}, - {file = "lz4-4.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a85b430138882f82f354135b98c320dafb96fc8fe4656573d95ab05de9eb092"}, - {file = "lz4-4.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65d5c93f8badacfa0456b660285e394e65023ef8071142e0dcbd4762166e1be0"}, - {file = "lz4-4.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b50f096a6a25f3b2edca05aa626ce39979d63c3b160687c8c6d50ac3943d0ba"}, - {file = "lz4-4.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:200d05777d61ba1ff8d29cb51c534a162ea0b4fe6d3c28be3571a0a48ff36080"}, - {file = "lz4-4.3.2-cp37-cp37m-win32.whl", hash = "sha256:edc2fb3463d5d9338ccf13eb512aab61937be50aa70734bcf873f2f493801d3b"}, - {file = "lz4-4.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:83acfacab3a1a7ab9694333bcb7950fbeb0be21660d236fd09c8337a50817897"}, - {file = "lz4-4.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7a9eec24ec7d8c99aab54de91b4a5a149559ed5b3097cf30249b665689b3d402"}, - {file = "lz4-4.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:31d72731c4ac6ebdce57cd9a5cabe0aecba229c4f31ba3e2c64ae52eee3fdb1c"}, - {file = "lz4-4.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83903fe6db92db0be101acedc677aa41a490b561567fe1b3fe68695b2110326c"}, - {file = "lz4-4.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926b26db87ec8822cf1870efc3d04d06062730ec3279bbbd33ba47a6c0a5c673"}, - {file = "lz4-4.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e05afefc4529e97c08e65ef92432e5f5225c0bb21ad89dee1e06a882f91d7f5e"}, - {file = "lz4-4.3.2-cp38-cp38-win32.whl", hash = "sha256:ad38dc6a7eea6f6b8b642aaa0683253288b0460b70cab3216838747163fb774d"}, - {file = "lz4-4.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:7e2dc1bd88b60fa09b9b37f08553f45dc2b770c52a5996ea52b2b40f25445676"}, - {file = "lz4-4.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:edda4fb109439b7f3f58ed6bede59694bc631c4b69c041112b1b7dc727fffb23"}, - {file = "lz4-4.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0ca83a623c449295bafad745dcd399cea4c55b16b13ed8cfea30963b004016c9"}, - {file = "lz4-4.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5ea0e788dc7e2311989b78cae7accf75a580827b4d96bbaf06c7e5a03989bd5"}, - {file = "lz4-4.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a98b61e504fb69f99117b188e60b71e3c94469295571492a6468c1acd63c37ba"}, - {file = "lz4-4.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4931ab28a0d1c133104613e74eec1b8bb1f52403faabe4f47f93008785c0b929"}, - {file = "lz4-4.3.2-cp39-cp39-win32.whl", hash = "sha256:ec6755cacf83f0c5588d28abb40a1ac1643f2ff2115481089264c7630236618a"}, - {file = "lz4-4.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:4caedeb19e3ede6c7a178968b800f910db6503cb4cb1e9cc9221157572139b49"}, - {file = "lz4-4.3.2.tar.gz", hash = "sha256:e1431d84a9cfb23e6773e72078ce8e65cad6745816d4cbf9ae67da5ea419acda"}, + {file = "lz4-4.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b891880c187e96339474af2a3b2bfb11a8e4732ff5034be919aa9029484cd201"}, + {file = "lz4-4.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:222a7e35137d7539c9c33bb53fcbb26510c5748779364014235afc62b0ec797f"}, + {file = "lz4-4.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f76176492ff082657ada0d0f10c794b6da5800249ef1692b35cf49b1e93e8ef7"}, + {file = "lz4-4.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1d18718f9d78182c6b60f568c9a9cec8a7204d7cb6fad4e511a2ef279e4cb05"}, + {file = "lz4-4.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cdc60e21ec70266947a48839b437d46025076eb4b12c76bd47f8e5eb8a75dcc"}, + {file = "lz4-4.3.3-cp310-cp310-win32.whl", hash = "sha256:c81703b12475da73a5d66618856d04b1307e43428a7e59d98cfe5a5d608a74c6"}, + {file = "lz4-4.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:43cf03059c0f941b772c8aeb42a0813d68d7081c009542301637e5782f8a33e2"}, + {file = "lz4-4.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:30e8c20b8857adef7be045c65f47ab1e2c4fabba86a9fa9a997d7674a31ea6b6"}, + {file = "lz4-4.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2f7b1839f795315e480fb87d9bc60b186a98e3e5d17203c6e757611ef7dcef61"}, + {file = "lz4-4.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edfd858985c23523f4e5a7526ca6ee65ff930207a7ec8a8f57a01eae506aaee7"}, + {file = "lz4-4.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e9c410b11a31dbdc94c05ac3c480cb4b222460faf9231f12538d0074e56c563"}, + {file = "lz4-4.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2507ee9c99dbddd191c86f0e0c8b724c76d26b0602db9ea23232304382e1f21"}, + {file = "lz4-4.3.3-cp311-cp311-win32.whl", hash = "sha256:f180904f33bdd1e92967923a43c22899e303906d19b2cf8bb547db6653ea6e7d"}, + {file = "lz4-4.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:b14d948e6dce389f9a7afc666d60dd1e35fa2138a8ec5306d30cd2e30d36b40c"}, + {file = "lz4-4.3.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e36cd7b9d4d920d3bfc2369840da506fa68258f7bb176b8743189793c055e43d"}, + {file = "lz4-4.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:31ea4be9d0059c00b2572d700bf2c1bc82f241f2c3282034a759c9a4d6ca4dc2"}, + {file = "lz4-4.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33c9a6fd20767ccaf70649982f8f3eeb0884035c150c0b818ea660152cf3c809"}, + {file = "lz4-4.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca8fccc15e3add173da91be8f34121578dc777711ffd98d399be35487c934bf"}, + {file = "lz4-4.3.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d84b479ddf39fe3ea05387f10b779155fc0990125f4fb35d636114e1c63a2e"}, + {file = "lz4-4.3.3-cp312-cp312-win32.whl", hash = "sha256:337cb94488a1b060ef1685187d6ad4ba8bc61d26d631d7ba909ee984ea736be1"}, + {file = "lz4-4.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:5d35533bf2cee56f38ced91f766cd0038b6abf46f438a80d50c52750088be93f"}, + {file = "lz4-4.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:363ab65bf31338eb364062a15f302fc0fab0a49426051429866d71c793c23394"}, + {file = "lz4-4.3.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a136e44a16fc98b1abc404fbabf7f1fada2bdab6a7e970974fb81cf55b636d0"}, + {file = "lz4-4.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abc197e4aca8b63f5ae200af03eb95fb4b5055a8f990079b5bdf042f568469dd"}, + {file = "lz4-4.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56f4fe9c6327adb97406f27a66420b22ce02d71a5c365c48d6b656b4aaeb7775"}, + {file = "lz4-4.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0e822cd7644995d9ba248cb4b67859701748a93e2ab7fc9bc18c599a52e4604"}, + {file = "lz4-4.3.3-cp38-cp38-win32.whl", hash = "sha256:24b3206de56b7a537eda3a8123c644a2b7bf111f0af53bc14bed90ce5562d1aa"}, + {file = "lz4-4.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:b47839b53956e2737229d70714f1d75f33e8ac26e52c267f0197b3189ca6de24"}, + {file = "lz4-4.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6756212507405f270b66b3ff7f564618de0606395c0fe10a7ae2ffcbbe0b1fba"}, + {file = "lz4-4.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee9ff50557a942d187ec85462bb0960207e7ec5b19b3b48949263993771c6205"}, + {file = "lz4-4.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b901c7784caac9a1ded4555258207d9e9697e746cc8532129f150ffe1f6ba0d"}, + {file = "lz4-4.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d9ec061b9eca86e4dcc003d93334b95d53909afd5a32c6e4f222157b50c071"}, + {file = "lz4-4.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4c7bf687303ca47d69f9f0133274958fd672efaa33fb5bcde467862d6c621f0"}, + {file = "lz4-4.3.3-cp39-cp39-win32.whl", hash = "sha256:054b4631a355606e99a42396f5db4d22046a3397ffc3269a348ec41eaebd69d2"}, + {file = "lz4-4.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:eac9af361e0d98335a02ff12fb56caeb7ea1196cf1a49dbf6f17828a131da807"}, + {file = "lz4-4.3.3.tar.gz", hash = "sha256:01fe674ef2889dbb9899d8a67361e0c4a2c833af5aeb37dd505727cf5d2a131e"}, ] [package.extras] @@ -1425,16 +1506,6 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -1469,58 +1540,58 @@ files = [ [[package]] name = "matplotlib" -version = "3.7.3" +version = "3.7.4" description = "Python plotting package" optional = true python-versions = ">=3.8" files = [ - {file = "matplotlib-3.7.3-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:085c33b27561d9c04386789d5aa5eb4a932ddef43cfcdd0e01735f9a6e85ce0c"}, - {file = "matplotlib-3.7.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c568e80e1c17f68a727f30f591926751b97b98314d8e59804f54f86ae6fa6a22"}, - {file = "matplotlib-3.7.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7baf98c5ad59c5c4743ea884bb025cbffa52dacdfdac0da3e6021a285a90377e"}, - {file = "matplotlib-3.7.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:236024f582e40dac39bca592258888b38ae47a9fed7b8de652d68d3d02d47d2b"}, - {file = "matplotlib-3.7.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12b4f6795efea037ce2d41e7c417ad8bd02d5719c6ad4a8450a0708f4a1cfb89"}, - {file = "matplotlib-3.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b2136cc6c5415b78977e0e8c608647d597204b05b1d9089ccf513c7d913733"}, - {file = "matplotlib-3.7.3-cp310-cp310-win32.whl", hash = "sha256:122dcbf9be0086e2a95d9e5e0632dbf3bd5b65eaa68c369363310a6c87753059"}, - {file = "matplotlib-3.7.3-cp310-cp310-win_amd64.whl", hash = "sha256:4aab27d9e33293389e3c1d7c881d414a72bdfda0fedc3a6bf46c6fa88d9b8015"}, - {file = "matplotlib-3.7.3-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:d5adc743de91e8e0b13df60deb1b1c285b8effea3d66223afceb14b63c9b05de"}, - {file = "matplotlib-3.7.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:55de4cf7cd0071b8ebf203981b53ab64f988a0a1f897a2dff300a1124e8bcd8b"}, - {file = "matplotlib-3.7.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac03377fd908aaee2312d0b11735753e907adb6f4d1d102de5e2425249693f6c"}, - {file = "matplotlib-3.7.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:755bafc10a46918ce9a39980009b54b02dd249594e5adf52f9c56acfddb5d0b7"}, - {file = "matplotlib-3.7.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a6094c6f8e8d18db631754df4fe9a34dec3caf074f6869a7db09f18f9b1d6b2"}, - {file = "matplotlib-3.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:272dba2f1b107790ed78ebf5385b8d14b27ad9e90419de340364b49fe549a993"}, - {file = "matplotlib-3.7.3-cp311-cp311-win32.whl", hash = "sha256:591c123bed1cb4b9996fb60b41a6d89c2ec4943244540776c5f1283fb6960a53"}, - {file = "matplotlib-3.7.3-cp311-cp311-win_amd64.whl", hash = "sha256:3bf3a178c6504694cee8b88b353df0051583f2f6f8faa146f67115c27c856881"}, - {file = "matplotlib-3.7.3-cp312-cp312-macosx_10_12_universal2.whl", hash = "sha256:edf54cac8ee3603f3093616b40a931e8c063969756a4d78a86e82c2fea9659f7"}, - {file = "matplotlib-3.7.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:91e36a85ea639a1ba9f91427041eac064b04829945fe331a92617b6cb21d27e5"}, - {file = "matplotlib-3.7.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:caf5eaaf7c68f8d7df269dfbcaf46f48a70ff482bfcebdcc97519671023f2a7d"}, - {file = "matplotlib-3.7.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74bf57f505efea376097e948b7cdd87191a7ce8180616390aef496639edf601f"}, - {file = "matplotlib-3.7.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee152a88a0da527840a426535514b6ed8ac4240eb856b1da92cf48124320e346"}, - {file = "matplotlib-3.7.3-cp312-cp312-win_amd64.whl", hash = "sha256:67a410a9c9e07cbc83581eeea144bbe298870bf0ac0ee2f2e10a015ab7efee19"}, - {file = "matplotlib-3.7.3-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:259999c05285cb993d7f2a419cea547863fa215379eda81f7254c9e932963729"}, - {file = "matplotlib-3.7.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3f4e7fd5a6157e1d018ce2166ec8e531a481dd4a36f035b5c23edfe05a25419a"}, - {file = "matplotlib-3.7.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:faa3d12d8811d08d14080a8b7b9caea9a457dc495350166b56df0db4b9909ef5"}, - {file = "matplotlib-3.7.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:336e88900c11441e458da01c8414fc57e04e17f9d3bb94958a76faa2652bcf6b"}, - {file = "matplotlib-3.7.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:12f4c0dd8aa280d796c8772ea8265a14f11a04319baa3a16daa5556065e8baea"}, - {file = "matplotlib-3.7.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1990955b11e7918d256cf3b956b10997f405b7917a3f1c7d8e69c1d15c7b1930"}, - {file = "matplotlib-3.7.3-cp38-cp38-win32.whl", hash = "sha256:e78707b751260b42b721507ad7aa60fe4026d7f51c74cca6b9cd8b123ebb633a"}, - {file = "matplotlib-3.7.3-cp38-cp38-win_amd64.whl", hash = "sha256:e594ee43c59ea39ca5c6244667cac9d017a3527febc31f5532ad9135cf7469ec"}, - {file = "matplotlib-3.7.3-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6eaa1cf0e94c936a26b78f6d756c5fbc12e0a58c8a68b7248a2a31456ce4e234"}, - {file = "matplotlib-3.7.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0a97af9d22e8ebedc9f00b043d9bbd29a375e9e10b656982012dded44c10fd77"}, - {file = "matplotlib-3.7.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f9c6c16597af660433ab330b59ee2934b832ee1fabcaf5cbde7b2add840f31e"}, - {file = "matplotlib-3.7.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7240259b4b9cbc62381f6378cff4d57af539162a18e832c1e48042fabc40b6b"}, - {file = "matplotlib-3.7.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:747c6191d2e88ae854809e69aa358dbf852ff1a5738401b85c1cc9012309897a"}, - {file = "matplotlib-3.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec726b08a5275d827aa91bb951e68234a4423adb91cf65bc0fcdc0f2777663f7"}, - {file = "matplotlib-3.7.3-cp39-cp39-win32.whl", hash = "sha256:40e3b9b450c6534f07278310c4e34caff41c2a42377e4b9d47b0f8d3ac1083a2"}, - {file = "matplotlib-3.7.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfc118642903a23e309b1da32886bb39a4314147d013e820c86b5fb4cb2e36d0"}, - {file = "matplotlib-3.7.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:165c8082bf8fc0360c24aa4724a22eaadbfd8c28bf1ccf7e94d685cad48261e4"}, - {file = "matplotlib-3.7.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ebd8470cc2a3594746ff0513aecbfa2c55ff6f58e6cef2efb1a54eb87c88ffa2"}, - {file = "matplotlib-3.7.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7153453669c9672b52095119fd21dd032d19225d48413a2871519b17db4b0fde"}, - {file = "matplotlib-3.7.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:498a08267dc69dd8f24c4b5d7423fa584d7ce0027ba71f7881df05fc09b89bb7"}, - {file = "matplotlib-3.7.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48999c4b19b5a0c058c9cd828ff6fc7748390679f6cf9a2ad653a3e802c87d3"}, - {file = "matplotlib-3.7.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22d65d18b4ee8070a5fea5761d59293f1f9e2fac37ec9ce090463b0e629432fd"}, - {file = "matplotlib-3.7.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c40cde976c36693cc0767e27cf5f443f91c23520060bd9496678364adfafe9c"}, - {file = "matplotlib-3.7.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:39018a2b17592448fbfdf4b8352955e6c3905359939791d4ff429296494d1a0c"}, - {file = "matplotlib-3.7.3.tar.gz", hash = "sha256:f09b3dd6bdeb588de91f853bbb2d6f0ff8ab693485b0c49035eaa510cb4f142e"}, + {file = "matplotlib-3.7.4-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:b71079239bd866bf56df023e5146de159cb0c7294e508830901f4d79e2d89385"}, + {file = "matplotlib-3.7.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bf91a42f6274a64cb41189120b620c02e574535ff6671fa836cade7701b06fbd"}, + {file = "matplotlib-3.7.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f757e8b42841d6add0cb69b42497667f0d25a404dcd50bd923ec9904e38414c4"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dfee00aa4bd291e08bb9461831c26ce0da85ca9781bb8794f2025c6e925281"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3640f33632beb3993b698b1be9d1c262b742761d6101f3c27b87b2185d25c875"}, + {file = "matplotlib-3.7.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff539c4a17ecdf076ed808ee271ffae4a30dcb7e157b99ccae2c837262c07db6"}, + {file = "matplotlib-3.7.4-cp310-cp310-win32.whl", hash = "sha256:24b8f28af3e766195c09b780b15aa9f6710192b415ae7866b9c03dee7ec86370"}, + {file = "matplotlib-3.7.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fa193286712c3b6c3cfa5fe8a6bb563f8c52cc750006c782296e0807ce5e799"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:b167f54cb4654b210c9624ec7b54e2b3b8de68c93a14668937e7e53df60770ec"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:7dfe6821f1944cb35603ff22e21510941bbcce7ccf96095beffaac890d39ce77"}, + {file = "matplotlib-3.7.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3c557d9165320dff3c5f2bb99bfa0b6813d3e626423ff71c40d6bc23b83c3339"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08372696b3bb45c563472a552a705bfa0942f0a8ffe084db8a4e8f9153fbdf9d"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81e1a7ac818000e8ac3ca696c3fdc501bc2d3adc89005e7b4e22ee5e9d51de98"}, + {file = "matplotlib-3.7.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:390920a3949906bc4b0216198d378f2a640c36c622e3584dd0c79a7c59ae9f50"}, + {file = "matplotlib-3.7.4-cp311-cp311-win32.whl", hash = "sha256:62e094d8da26294634da9e7f1856beee3978752b1b530c8e1763d2faed60cc10"}, + {file = "matplotlib-3.7.4-cp311-cp311-win_amd64.whl", hash = "sha256:f8fc2df756105784e650605e024d36dc2d048d68e5c1b26df97ee25d1bd41f9f"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_10_12_universal2.whl", hash = "sha256:568574756127791903604e315c11aef9f255151e4cfe20ec603a70f9dda8e259"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7d479aac338195e2199a8cfc03c4f2f55914e6a120177edae79e0340a6406457"}, + {file = "matplotlib-3.7.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:32183d4be84189a4c52b4b8861434d427d9118db2cec32986f98ed6c02dcfbb6"}, + {file = "matplotlib-3.7.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0037d066cca1f4bda626c507cddeb6f7da8283bc6a214da2db13ff2162933c52"}, + {file = "matplotlib-3.7.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44856632ebce88abd8efdc0a0dceec600418dcac06b72ae77af0019d260aa243"}, + {file = "matplotlib-3.7.4-cp312-cp312-win_amd64.whl", hash = "sha256:632fc938c22117d4241411191cfb88ac264a4c0a9ac702244641ddf30f0d739c"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:ce163be048613b9d1962273708cc97e09ca05d37312e670d166cf332b80bbaff"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:e680f49bb8052ba3b2698e370155d2b4afb49f9af1cc611a26579d5981e2852a"}, + {file = "matplotlib-3.7.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0604880e4327114054199108b7390f987f4f40ee5ce728985836889e11a780ba"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1e6abcde6fc52475f9d6a12b9f1792aee171ce7818ef6df5d61cb0b82816e6e8"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f59a70e2ec3212033ef6633ed07682da03f5249379722512a3a2a26a7d9a738e"}, + {file = "matplotlib-3.7.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a9981b2a2dd9da06eca4ab5855d09b54b8ce7377c3e0e3957767b83219d652d"}, + {file = "matplotlib-3.7.4-cp38-cp38-win32.whl", hash = "sha256:83859ac26839660ecd164ee8311272074250b915ac300f9b2eccc84410f8953b"}, + {file = "matplotlib-3.7.4-cp38-cp38-win_amd64.whl", hash = "sha256:7a7709796ac59fe8debde68272388be6ed449c8971362eb5b60d280eac8dadde"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b1d70bc1ea1bf110bec64f4578de3e14947909a8887df4c1fd44492eca487955"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c83f49e795a5de6c168876eea723f5b88355202f9603c55977f5356213aa8280"}, + {file = "matplotlib-3.7.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5c9133f230945fe10652eb33e43642e933896194ef6a4f8d5e79bb722bdb2000"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:798ff59022eeb276380ce9a73ba35d13c3d1499ab9b73d194fd07f1b0a41c304"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1707b20b25e90538c2ce8d4409e30f0ef1df4017cc65ad0439633492a973635b"}, + {file = "matplotlib-3.7.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e6227ca8492baeef873cdd8e169a318efb5c3a25ce94e69727e7f964995b0b1"}, + {file = "matplotlib-3.7.4-cp39-cp39-win32.whl", hash = "sha256:5661c8639aded7d1bbf781373a359011cb1dd09199dee49043e9e68dd16f07ba"}, + {file = "matplotlib-3.7.4-cp39-cp39-win_amd64.whl", hash = "sha256:55eec941a4743f0bd3e5b8ee180e36b7ea8e62f867bf2613937c9f01b9ac06a2"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ab16868714e5cc90ec8f7ff5d83d23bcd6559224d8e9cb5227c9f58748889fe8"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c698b33f9a3f0b127a8e614c8fb4087563bb3caa9c9d95298722fa2400cdd3f"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be3493bbcb4d255cb71de1f9050ac71682fce21a56089eadbcc8e21784cb12ee"}, + {file = "matplotlib-3.7.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f8c725d1dd2901b2e7ec6cd64165e00da2978cc23d4143cb9ef745bec88e6b04"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:286332f8f45f8ffde2d2119b9fdd42153dccd5025fa9f451b4a3b5c086e26da5"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:116ef0b43aa00ff69260b4cce39c571e4b8c6f893795b708303fa27d9b9d7548"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c90590d4b46458677d80bc3218f3f1ac11fc122baa9134e0cb5b3e8fc3714052"}, + {file = "matplotlib-3.7.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de7c07069687be64fd9d119da3122ba13a8d399eccd3f844815f0dc78a870b2c"}, + {file = "matplotlib-3.7.4.tar.gz", hash = "sha256:7cd4fef8187d1dd0d9dcfdbaa06ac326d396fb8c71c647129f0bf56835d77026"}, ] [package.dependencies] @@ -1534,7 +1605,6 @@ packaging = ">=20.0" pillow = ">=6.2.0" pyparsing = ">=2.3.1" python-dateutil = ">=2.7" -setuptools_scm = ">=7" [[package]] name = "matplotlib-inline" @@ -1596,13 +1666,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.11.0" +version = "7.14.2" description = "Converting Jupyter Notebooks" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.11.0-py3-none-any.whl", hash = "sha256:d1d417b7f34a4e38887f8da5bdfd12372adf3b80f995d57556cb0972c68909fe"}, - {file = "nbconvert-7.11.0.tar.gz", hash = "sha256:abedc01cf543177ffde0bfc2a69726d5a478f6af10a332fc1bf29fcb4f0cf000"}, + {file = "nbconvert-7.14.2-py3-none-any.whl", hash = "sha256:db28590cef90f7faf2ebbc71acd402cbecf13d29176df728c0a9025a49345ea1"}, + {file = "nbconvert-7.14.2.tar.gz", hash = "sha256:a7f8808fd4e082431673ac538400218dd45efd076fbeb07cc6e5aa5a3a4e949e"}, ] [package.dependencies] @@ -1629,7 +1699,7 @@ docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sp qtpdf = ["nbconvert[qtpng]"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pytest"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"] webpdf = ["playwright"] [[package]] @@ -1672,6 +1742,17 @@ nbformat = "*" sphinx = ">=1.8" traitlets = ">=5" +[[package]] +name = "nest-asyncio" +version = "1.5.9" +description = "Patch asyncio to allow nested event loops" +optional = false +python-versions = ">=3.5" +files = [ + {file = "nest_asyncio-1.5.9-py3-none-any.whl", hash = "sha256:61ec07ef052e72e3de22045b81b2cc7d71fceb04c568ba0b2e4b2f9f5231bec2"}, + {file = "nest_asyncio-1.5.9.tar.gz", hash = "sha256:d1e1144e9c6e3e6392e0fcf5211cb1c8374b5648a98f1ebe48e5336006b41907"}, +] + [[package]] name = "numba" version = "0.57.1" @@ -1808,13 +1889,13 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] [[package]] name = "pandocfilters" -version = "1.5.0" +version = "1.5.1" description = "Utilities for writing pandoc filters in python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, - {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, ] [[package]] @@ -1888,13 +1969,13 @@ pytzdata = ">=2020.1" [[package]] name = "pexpect" -version = "4.8.0" +version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" files = [ - {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, - {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, ] [package.dependencies] @@ -1913,100 +1994,120 @@ files = [ [[package]] name = "pillow" -version = "10.1.0" +version = "10.2.0" description = "Python Imaging Library (Fork)" optional = true python-versions = ">=3.8" files = [ - {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"}, - {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"}, - {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"}, - {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"}, - {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"}, - {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"}, - {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"}, - {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "pineappl" -version = "0.6.2" +version = "0.6.3" description = "Python bindings to PineAPPL" optional = true python-versions = ">=3.7" files = [ - {file = "pineappl-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3bdfdf3c752258ec5daefae2ef04953bfc5637182cc2f87d4d8f36042622ce32"}, - {file = "pineappl-0.6.2-cp310-none-win_amd64.whl", hash = "sha256:1193417d8f0eb86284863996f7af9d5c55a9171a4f1e2ed2954a71938babf395"}, - {file = "pineappl-0.6.2-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f6ecadf11a95555bcef8dc6de758186e7d01f36d4365fd5fa3c9cf33e48ca9bf"}, - {file = "pineappl-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e12d4e99901d475a04b4f4d99dce1dae1dc79f8a77625008c21bb6804fb5a12"}, - {file = "pineappl-0.6.2-cp311-none-win_amd64.whl", hash = "sha256:9288b0a9c01d9b3f097e793ba238b38d7baf74dcd24c5f680fb568af29c83fd1"}, - {file = "pineappl-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03ba74a8a80481e2ae630952686605d530867c0888d25df714c9492dcea2c467"}, - {file = "pineappl-0.6.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:194e417742951f20dd95bcddcca767884ed2b88a2f47606ceb9d0a0b98f91df1"}, - {file = "pineappl-0.6.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:422ca44e0d6f8a98bdbf3d06dfeb47eaa92ca96f4146093bde967d42aaeabaf5"}, - {file = "pineappl-0.6.2-cp37-none-win_amd64.whl", hash = "sha256:e9d2ad82ff43097a5f315b9661e53f2db217ed51a80ddf0edd3f628d161667bb"}, - {file = "pineappl-0.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5864911091da114c8ce244a07040d871c725141493a253508238f3618234eb5"}, - {file = "pineappl-0.6.2-cp38-none-win_amd64.whl", hash = "sha256:21b3a90b8c04d0439b0e036813b9c34caa1b7f5328c72058517d3577c0e063d2"}, - {file = "pineappl-0.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dabe8306b23f89348c0adeb4595908b3c66afcafabd1360e4be830a2c1e0914"}, - {file = "pineappl-0.6.2-cp39-none-win_amd64.whl", hash = "sha256:b30092086618327d86d1b776aa9add7fe00603ae25a47fd7468d48f9c555dc45"}, - {file = "pineappl-0.6.2-pp310-pypy310_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e3e53b23929e351d535e55b573d2107448728ba2ea8f4cb9342baf0088a1f119"}, - {file = "pineappl-0.6.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e781eb07cf97fb3e2f312408f82d8e42c8e35a4bb2b64052fb4cbc1236b090e0"}, - {file = "pineappl-0.6.2-pp37-pypy37_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:b9357c44d2f79c736b407b6220f69af1d19f6560238b006288c4f00a222b14d9"}, - {file = "pineappl-0.6.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8edbf0dac7dacfbeda203c5dc6d87e787e72d1afd740278a7efe8cee1095a2cb"}, - {file = "pineappl-0.6.2-pp38-pypy38_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:898593bf20c0d3dd3a41321692dec2ba9f180a6ca800eb874662e7f0dbe17a1f"}, - {file = "pineappl-0.6.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:795d31019a6e56083aa153f4e9b8f8bbda3293d9c1592420cf141d36e323e518"}, - {file = "pineappl-0.6.2-pp39-pypy39_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f4dd00689f1dea07adaf564e382b0be2ae83070f26edab398e4c93b5927973ec"}, - {file = "pineappl-0.6.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b56396002ae6cbbf48ac7f2bf4fc1dd423a2ff09f0058a159aa546f9258e97ec"}, - {file = "pineappl-0.6.2.tar.gz", hash = "sha256:9392c393769637bc1282429a514af60175bf2c555b1bff1bf14a7c725b488984"}, + {file = "pineappl-0.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c9003e98133b15e9640a71d073a785bfe18ede342fb66019ea8df3e6ab7f826"}, + {file = "pineappl-0.6.3-cp310-none-win_amd64.whl", hash = "sha256:670defa6c8a5d55389ec64589d6347138f4be3eebff3c3452ee8c87a98111efe"}, + {file = "pineappl-0.6.3-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:5feab56665e8a172e77798b607dae42fab59b3ca26572926e201349d5abc75dc"}, + {file = "pineappl-0.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccb1f1cd3dd94ce8b3074717cd004b9068ac93bb69e4bb7f4072ff9ab96891fe"}, + {file = "pineappl-0.6.3-cp311-none-win_amd64.whl", hash = "sha256:b09e9e9f101d8a5ef7031fa83cf1e4055d519926b38cbeb1821a050ebcdb384e"}, + {file = "pineappl-0.6.3-cp312-cp312-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:ad5ab580bbef3f0b8876ff9c34ff127889734f5f25d408e4db03a22fb0462029"}, + {file = "pineappl-0.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3577d3cd5646e289237800cc1d9043a3913ba7e6a91d01f69fccb74b772e7d30"}, + {file = "pineappl-0.6.3-cp312-none-win_amd64.whl", hash = "sha256:d7d8222a32d9acf345bee4a1336095cf1f703ea09e57b8078c069dcab2ed6480"}, + {file = "pineappl-0.6.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5c35dbae238d09d5abd8b645761919d8faa26c21697c8653f031fd73793939e"}, + {file = "pineappl-0.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:779d71db1d84cc3b0b7294ec0c38d1bfc8a7e8fec4d71efe61a51a4a191b7023"}, + {file = "pineappl-0.6.3-cp37-none-win_amd64.whl", hash = "sha256:1067d09a51263f19cdb274f860dfa4b775412a5663e292f2246afb95208f6dfb"}, + {file = "pineappl-0.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6766ef75156eee5800d09d3c92fe713e4b90321945783d28bf8a31a21c72d0a8"}, + {file = "pineappl-0.6.3-cp38-none-win_amd64.whl", hash = "sha256:9ecc45aae4b895d104d732e71b73fdc2626f93f9f727b912d42fcc666c704523"}, + {file = "pineappl-0.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8448997f3917de7485c62b50ba9efa9ea66191da3f37783021f6bf0202418873"}, + {file = "pineappl-0.6.3-cp39-none-win_amd64.whl", hash = "sha256:4152ecbc93f22078eb81eac85013166fb2c6e7b627c653b0aa0180feffd72c44"}, + {file = "pineappl-0.6.3-pp310-pypy310_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:42c793da5c6ed4e267f11763924e7dc8e272e9d0f2fc13f01c81e054f81282cf"}, + {file = "pineappl-0.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0103e99346e2d571472efd92d04a87e8a1e7d13502da8409e09459984abab5fa"}, + {file = "pineappl-0.6.3-pp37-pypy37_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:b81ca67e531b9653983e53cd03c31441cd6b7a61c9d51b1b0300dbd9d532e170"}, + {file = "pineappl-0.6.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d57ba095a4a1b64f12453fdfb8a41d76fed23635e01fbd83cb58776ce6953d"}, + {file = "pineappl-0.6.3-pp38-pypy38_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:3e58923b8cd23820dee94c045880a05cacc3ed1b3ecb9220ce2c85ea18a92f84"}, + {file = "pineappl-0.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a5860948857869d57f320b4467b5d767c7932818da0a86c902623512d48904"}, + {file = "pineappl-0.6.3-pp39-pypy39_pp73-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:9b24c52f27f5d7129b53da45825c3e1a0ee2563bf9571593b0058ada82757f52"}, + {file = "pineappl-0.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69b63dabf803a6d14bbb545fc4b9d665b0b5888eba797c10ca3bf94e60e51500"}, + {file = "pineappl-0.6.3.tar.gz", hash = "sha256:24a533a267c025cd3888e12dc13943752ece9259ba01dd8df882560ac3a9060c"}, ] [package.dependencies] @@ -2029,13 +2130,13 @@ files = [ [[package]] name = "platformdirs" -version = "3.11.0" +version = "4.1.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, - {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, + {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, + {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, ] [package.extras] @@ -2059,18 +2160,46 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prompt-toolkit" -version = "3.0.41" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, - {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, + {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, + {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, ] [package.dependencies] wcwidth = "*" +[[package]] +name = "psutil" +version = "5.9.7" +description = "Cross-platform lib for process and system monitoring in Python." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "psutil-5.9.7-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6"}, + {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056"}, + {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508"}, + {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df"}, + {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7"}, + {file = "psutil-5.9.7-cp27-none-win32.whl", hash = "sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c"}, + {file = "psutil-5.9.7-cp27-none-win_amd64.whl", hash = "sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6"}, + {file = "psutil-5.9.7-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e"}, + {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284"}, + {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe"}, + {file = "psutil-5.9.7-cp36-cp36m-win32.whl", hash = "sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9"}, + {file = "psutil-5.9.7-cp36-cp36m-win_amd64.whl", hash = "sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e"}, + {file = "psutil-5.9.7-cp37-abi3-win32.whl", hash = "sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68"}, + {file = "psutil-5.9.7-cp37-abi3-win_amd64.whl", hash = "sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414"}, + {file = "psutil-5.9.7-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340"}, + {file = "psutil-5.9.7.tar.gz", hash = "sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c"}, +] + +[package.extras] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] + [[package]] name = "ptyprocess" version = "0.7.0" @@ -2143,17 +2272,18 @@ files = [ [[package]] name = "pygments" -version = "2.16.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, - {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" @@ -2220,13 +2350,13 @@ files = [ [[package]] name = "pytest" -version = "7.4.3" +version = "7.4.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, - {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, ] [package.dependencies] @@ -2342,7 +2472,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2350,15 +2479,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2375,7 +2497,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2383,7 +2504,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2391,104 +2511,104 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.1" +version = "25.1.2" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, - {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, - {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, - {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, - {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, - {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, - {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, - {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, - {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, - {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, - {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, - {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, + {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, + {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, + {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, + {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, + {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, + {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, + {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, + {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, + {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, + {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, + {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, + {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, ] [package.dependencies] @@ -2512,13 +2632,13 @@ sphinx = ">=1.3.1" [[package]] name = "referencing" -version = "0.30.2" +version = "0.32.1" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, - {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, + {file = "referencing-0.32.1-py3-none-any.whl", hash = "sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554"}, + {file = "referencing-0.32.1.tar.gz", hash = "sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3"}, ] [package.dependencies] @@ -2567,110 +2687,110 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] [[package]] name = "rpds-py" -version = "0.12.0" +version = "0.17.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.12.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:c694bee70ece3b232df4678448fdda245fd3b1bb4ba481fb6cd20e13bb784c46"}, - {file = "rpds_py-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30e5ce9f501fb1f970e4a59098028cf20676dee64fc496d55c33e04bbbee097d"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d72a4315514e5a0b9837a086cb433b004eea630afb0cc129de76d77654a9606f"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eebaf8c76c39604d52852366249ab807fe6f7a3ffb0dd5484b9944917244cdbe"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a239303acb0315091d54c7ff36712dba24554993b9a93941cf301391d8a997ee"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ced40cdbb6dd47a032725a038896cceae9ce267d340f59508b23537f05455431"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c8c0226c71bd0ce9892eaf6afa77ae8f43a3d9313124a03df0b389c01f832de"}, - {file = "rpds_py-0.12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8e11715178f3608874508f08e990d3771e0b8c66c73eb4e183038d600a9b274"}, - {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5210a0018c7e09c75fa788648617ebba861ae242944111d3079034e14498223f"}, - {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:171d9a159f1b2f42a42a64a985e4ba46fc7268c78299272ceba970743a67ee50"}, - {file = "rpds_py-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:57ec6baec231bb19bb5fd5fc7bae21231860a1605174b11585660236627e390e"}, - {file = "rpds_py-0.12.0-cp310-none-win32.whl", hash = "sha256:7188ddc1a8887194f984fa4110d5a3d5b9b5cd35f6bafdff1b649049cbc0ce29"}, - {file = "rpds_py-0.12.0-cp310-none-win_amd64.whl", hash = "sha256:1e04581c6117ad9479b6cfae313e212fe0dfa226ac727755f0d539cd54792963"}, - {file = "rpds_py-0.12.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:0a38612d07a36138507d69646c470aedbfe2b75b43a4643f7bd8e51e52779624"}, - {file = "rpds_py-0.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f12d69d568f5647ec503b64932874dade5a20255736c89936bf690951a5e79f5"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8a1d990dc198a6c68ec3d9a637ba1ce489b38cbfb65440a27901afbc5df575"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c567c664fc2f44130a20edac73e0a867f8e012bf7370276f15c6adc3586c37c"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e9e976e0dbed4f51c56db10831c9623d0fd67aac02853fe5476262e5a22acb7"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efddca2d02254a52078c35cadad34762adbae3ff01c6b0c7787b59d038b63e0d"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9e7f29c00577aff6b318681e730a519b235af292732a149337f6aaa4d1c5e31"}, - {file = "rpds_py-0.12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:389c0e38358fdc4e38e9995e7291269a3aead7acfcf8942010ee7bc5baee091c"}, - {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33ab498f9ac30598b6406e2be1b45fd231195b83d948ebd4bd77f337cb6a2bff"}, - {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d56b1cd606ba4cedd64bb43479d56580e147c6ef3f5d1c5e64203a1adab784a2"}, - {file = "rpds_py-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1fa73ed22c40a1bec98d7c93b5659cd35abcfa5a0a95ce876b91adbda170537c"}, - {file = "rpds_py-0.12.0-cp311-none-win32.whl", hash = "sha256:dbc25baa6abb205766fb8606f8263b02c3503a55957fcb4576a6bb0a59d37d10"}, - {file = "rpds_py-0.12.0-cp311-none-win_amd64.whl", hash = "sha256:c6b52b7028b547866c2413f614ee306c2d4eafdd444b1ff656bf3295bf1484aa"}, - {file = "rpds_py-0.12.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:9620650c364c01ed5b497dcae7c3d4b948daeae6e1883ae185fef1c927b6b534"}, - {file = "rpds_py-0.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2124f9e645a94ab7c853bc0a3644e0ca8ffbe5bb2d72db49aef8f9ec1c285733"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281c8b219d4f4b3581b918b816764098d04964915b2f272d1476654143801aa2"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:27ccc93c7457ef890b0dd31564d2a05e1aca330623c942b7e818e9e7c2669ee4"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1c562a9bb72244fa767d1c1ab55ca1d92dd5f7c4d77878fee5483a22ffac808"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e57919c32ee295a2fca458bb73e4b20b05c115627f96f95a10f9f5acbd61172d"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa35ad36440aaf1ac8332b4a4a433d4acd28f1613f0d480995f5cfd3580e90b7"}, - {file = "rpds_py-0.12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e6aea5c0eb5b0faf52c7b5c4a47c8bb64437173be97227c819ffa31801fa4e34"}, - {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:81cf9d306c04df1b45971c13167dc3bad625808aa01281d55f3cf852dde0e206"}, - {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:08e6e7ff286254016b945e1ab632ee843e43d45e40683b66dd12b73791366dd1"}, - {file = "rpds_py-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4d0a675a7acbbc16179188d8c6d0afb8628604fc1241faf41007255957335a0b"}, - {file = "rpds_py-0.12.0-cp312-none-win32.whl", hash = "sha256:b2287c09482949e0ca0c0eb68b2aca6cf57f8af8c6dfd29dcd3bc45f17b57978"}, - {file = "rpds_py-0.12.0-cp312-none-win_amd64.whl", hash = "sha256:8015835494b21aa7abd3b43fdea0614ee35ef6b03db7ecba9beb58eadf01c24f"}, - {file = "rpds_py-0.12.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6174d6ad6b58a6bcf67afbbf1723420a53d06c4b89f4c50763d6fa0a6ac9afd2"}, - {file = "rpds_py-0.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a689e1ded7137552bea36305a7a16ad2b40be511740b80748d3140614993db98"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f45321224144c25a62052035ce96cbcf264667bcb0d81823b1bbc22c4addd194"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa32205358a76bf578854bf31698a86dc8b2cb591fd1d79a833283f4a403f04b"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91bd2b7cf0f4d252eec8b7046fa6a43cee17e8acdfc00eaa8b3dbf2f9a59d061"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3acadbab8b59f63b87b518e09c4c64b142e7286b9ca7a208107d6f9f4c393c5c"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:429349a510da82c85431f0f3e66212d83efe9fd2850f50f339341b6532c62fe4"}, - {file = "rpds_py-0.12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05942656cb2cb4989cd50ced52df16be94d344eae5097e8583966a1d27da73a5"}, - {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0c5441b7626c29dbd54a3f6f3713ec8e956b009f419ffdaaa3c80eaf98ddb523"}, - {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:b6b0e17d39d21698185097652c611f9cf30f7c56ccec189789920e3e7f1cee56"}, - {file = "rpds_py-0.12.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3b7a64d43e2a1fa2dd46b678e00cabd9a49ebb123b339ce799204c44a593ae1c"}, - {file = "rpds_py-0.12.0-cp38-none-win32.whl", hash = "sha256:e5bbe011a2cea9060fef1bb3d668a2fd8432b8888e6d92e74c9c794d3c101595"}, - {file = "rpds_py-0.12.0-cp38-none-win_amd64.whl", hash = "sha256:bec29b801b4adbf388314c0d050e851d53762ab424af22657021ce4b6eb41543"}, - {file = "rpds_py-0.12.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:1096ca0bf2d3426cbe79d4ccc91dc5aaa73629b08ea2d8467375fad8447ce11a"}, - {file = "rpds_py-0.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48aa98987d54a46e13e6954880056c204700c65616af4395d1f0639eba11764b"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7979d90ee2190d000129598c2b0c82f13053dba432b94e45e68253b09bb1f0f6"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:88857060b690a57d2ea8569bca58758143c8faa4639fb17d745ce60ff84c867e"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4eb74d44776b0fb0782560ea84d986dffec8ddd94947f383eba2284b0f32e35e"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f62581d7e884dd01ee1707b7c21148f61f2febb7de092ae2f108743fcbef5985"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f5dcb658d597410bb7c967c1d24eaf9377b0d621358cbe9d2ff804e5dd12e81"}, - {file = "rpds_py-0.12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bf9acce44e967a5103fcd820fc7580c7b0ab8583eec4e2051aec560f7b31a63"}, - {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:240687b5be0f91fbde4936a329c9b7589d9259742766f74de575e1b2046575e4"}, - {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:25740fb56e8bd37692ed380e15ec734be44d7c71974d8993f452b4527814601e"}, - {file = "rpds_py-0.12.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a54917b7e9cd3a67e429a630e237a90b096e0ba18897bfb99ee8bd1068a5fea0"}, - {file = "rpds_py-0.12.0-cp39-none-win32.whl", hash = "sha256:b92aafcfab3d41580d54aca35a8057341f1cfc7c9af9e8bdfc652f83a20ced31"}, - {file = "rpds_py-0.12.0-cp39-none-win_amd64.whl", hash = "sha256:cd316dbcc74c76266ba94eb021b0cc090b97cca122f50bd7a845f587ff4bf03f"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0853da3d5e9bc6a07b2486054a410b7b03f34046c123c6561b535bb48cc509e1"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:cb41ad20064e18a900dd427d7cf41cfaec83bcd1184001f3d91a1f76b3fcea4e"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b710bf7e7ae61957d5c4026b486be593ed3ec3dca3e5be15e0f6d8cf5d0a4990"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a952ae3eb460c6712388ac2ec706d24b0e651b9396d90c9a9e0a69eb27737fdc"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0bedd91ae1dd142a4dc15970ed2c729ff6c73f33a40fa84ed0cdbf55de87c777"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:761531076df51309075133a6bc1db02d98ec7f66e22b064b1d513bc909f29743"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2baa6be130e8a00b6cbb9f18a33611ec150b4537f8563bddadb54c1b74b8193"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f05450fa1cd7c525c0b9d1a7916e595d3041ac0afbed2ff6926e5afb6a781b7f"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:81c4d1a3a564775c44732b94135d06e33417e829ff25226c164664f4a1046213"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e888be685fa42d8b8a3d3911d5604d14db87538aa7d0b29b1a7ea80d354c732d"}, - {file = "rpds_py-0.12.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6f8d7fe73d1816eeb5378409adc658f9525ecbfaf9e1ede1e2d67a338b0c7348"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0831d3ecdea22e4559cc1793f22e77067c9d8c451d55ae6a75bf1d116a8e7f42"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:513ccbf7420c30e283c25c82d5a8f439d625a838d3ba69e79a110c260c46813f"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:301bd744a1adaa2f6a5e06c98f1ac2b6f8dc31a5c23b838f862d65e32fca0d4b"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8832a4f83d4782a8f5a7b831c47e8ffe164e43c2c148c8160ed9a6d630bc02a"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2416ed743ec5debcf61e1242e012652a4348de14ecc7df3512da072b074440"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35585a8cb5917161f42c2104567bb83a1d96194095fc54a543113ed5df9fa436"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d389ff1e95b6e46ebedccf7fd1fadd10559add595ac6a7c2ea730268325f832c"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9b007c2444705a2dc4a525964fd4dd28c3320b19b3410da6517cab28716f27d3"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:188912b22b6c8225f4c4ffa020a2baa6ad8fabb3c141a12dbe6edbb34e7f1425"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:1b4cf9ab9a0ae0cb122685209806d3f1dcb63b9fccdf1424fb42a129dc8c2faa"}, - {file = "rpds_py-0.12.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2d34a5450a402b00d20aeb7632489ffa2556ca7b26f4a63c35f6fccae1977427"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:466030a42724780794dea71eb32db83cc51214d66ab3fb3156edd88b9c8f0d78"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:68172622a5a57deb079a2c78511c40f91193548e8ab342c31e8cb0764d362459"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54cdfcda59251b9c2f87a05d038c2ae02121219a04d4a1e6fc345794295bdc07"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6b75b912a0baa033350367a8a07a8b2d44fd5b90c890bfbd063a8a5f945f644b"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47aeceb4363851d17f63069318ba5721ae695d9da55d599b4d6fb31508595278"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0525847f83f506aa1e28eb2057b696fe38217e12931c8b1b02198cfe6975e142"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efbe0b5e0fd078ed7b005faa0170da4f72666360f66f0bb2d7f73526ecfd99f9"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0fadfdda275c838cba5102c7f90a20f2abd7727bf8f4a2b654a5b617529c5c18"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:56dd500411d03c5e9927a1eb55621e906837a83b02350a9dc401247d0353717c"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:6915fc9fa6b3ec3569566832e1bb03bd801c12cea030200e68663b9a87974e76"}, - {file = "rpds_py-0.12.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5f1519b080d8ce0a814f17ad9fb49fb3a1d4d7ce5891f5c85fc38631ca3a8dc4"}, - {file = "rpds_py-0.12.0.tar.gz", hash = "sha256:7036316cc26b93e401cedd781a579be606dad174829e6ad9e9c5a0da6e036f80"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, + {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, + {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, + {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, + {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, + {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, + {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, + {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, + {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, + {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, + {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, + {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, ] [[package]] @@ -2711,44 +2831,6 @@ dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] -[[package]] -name = "setuptools" -version = "68.2.2" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = true -python-versions = ">=3.8" -files = [ - {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, - {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "setuptools-scm" -version = "8.0.4" -description = "the blessed package to manage your versions by scm tags" -optional = true -python-versions = ">=3.8" -files = [ - {file = "setuptools-scm-8.0.4.tar.gz", hash = "sha256:b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7"}, - {file = "setuptools_scm-8.0.4-py3-none-any.whl", hash = "sha256:b47844cd2a84b83b3187a5782c71128c28b4c94cad8bfb871da2784a5cb54c4f"}, -] - -[package.dependencies] -packaging = ">=20" -setuptools = "*" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} -typing-extensions = "*" - -[package.extras] -docs = ["entangled-cli[rich]", "mkdocs", "mkdocs-entangled-plugin", "mkdocs-material", "mkdocstrings[python]", "pygments"] -rich = ["rich"] -test = ["build", "pytest", "rich", "wheel"] - [[package]] name = "six" version = "1.16.0" @@ -2863,13 +2945,13 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-bibtex" -version = "2.6.1" +version = "2.6.2" description = "Sphinx extension for BibTeX style citations." optional = false python-versions = ">=3.7" files = [ - {file = "sphinxcontrib-bibtex-2.6.1.tar.gz", hash = "sha256:046b49f070ae5276af34c1b8ddb9bc9562ef6de2f7a52d37a91cb8e53f54b863"}, - {file = "sphinxcontrib_bibtex-2.6.1-py3-none-any.whl", hash = "sha256:094c772098fe6b030cda8618c45722b2957cad0c04f328ba2b154aa08dfe720a"}, + {file = "sphinxcontrib-bibtex-2.6.2.tar.gz", hash = "sha256:f487af694336f28bfb7d6a17070953a7d264bec43000a2379724274f5f8d70ae"}, + {file = "sphinxcontrib_bibtex-2.6.2-py3-none-any.whl", hash = "sha256:10d45ebbb19207c5665396c9446f8012a79b8a538cb729f895b5910ab2d0b2da"}, ] [package.dependencies] @@ -2972,57 +3054,57 @@ test = ["pytest"] [[package]] name = "sqlalchemy" -version = "1.4.50" +version = "1.4.51" description = "Database Abstraction Library" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "SQLAlchemy-1.4.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, - {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win32.whl", hash = "sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win_amd64.whl", hash = "sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win32.whl", hash = "sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win_amd64.whl", hash = "sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win32.whl", hash = "sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win_amd64.whl", hash = "sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win32.whl", hash = "sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win_amd64.whl", hash = "sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c55040d8ea65414de7c47f1a23823cd9f3fad0dc93e6b6b728fee81230f817b"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win32.whl", hash = "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win_amd64.whl", hash = "sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win32.whl", hash = "sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win_amd64.whl", hash = "sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win32.whl", hash = "sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win_amd64.whl", hash = "sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba"}, + {file = "SQLAlchemy-1.4.51.tar.gz", hash = "sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9"}, ] [package.dependencies] @@ -3030,7 +3112,7 @@ greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platfo [package.extras] aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] @@ -3040,14 +3122,14 @@ mssql-pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] +oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"] postgresql = ["psycopg2 (>=2.7)"] postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql", "pymysql (<1)"] -sqlcipher = ["sqlcipher3-binary"] +sqlcipher = ["sqlcipher3_binary"] [[package]] name = "stack-data" @@ -3099,59 +3181,59 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.2" +version = "0.12.3" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.2-py3-none-any.whl", hash = "sha256:eeea7ac7563faeab0a1ed8fe12c2e5a51c61f933f2502f7e9db0241a65163ad0"}, - {file = "tomlkit-0.12.2.tar.gz", hash = "sha256:df32fab589a81f0d7dc525a4267b6d7a64ee99619cbd1eeb0fae32c1dd426977"}, + {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, + {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, ] [[package]] name = "tornado" -version = "6.3.3" +version = "6.4" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">= 3.8" files = [ - {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:502fba735c84450974fec147340016ad928d29f1e91f49be168c0a4c18181e1d"}, - {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:805d507b1f588320c26f7f097108eb4023bbaa984d63176d1652e184ba24270a"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ac51f42808cca9b3613f51ffe2a965c8525cb1b00b7b2d56828b8045354f76a"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71a8db65160a3c55d61839b7302a9a400074c9c753040455494e2af74e2501f2"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ceb917a50cd35882b57600709dd5421a418c29ddc852da8bcdab1f0db33406b0"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:7d01abc57ea0dbb51ddfed477dfe22719d376119844e33c661d873bf9c0e4a16"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9dc4444c0defcd3929d5c1eb5706cbe1b116e762ff3e0deca8b715d14bf6ec17"}, - {file = "tornado-6.3.3-cp38-abi3-win32.whl", hash = "sha256:65ceca9500383fbdf33a98c0087cb975b2ef3bfb874cb35b8de8740cf7f41bd3"}, - {file = "tornado-6.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5"}, - {file = "tornado-6.3.3.tar.gz", hash = "sha256:e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, ] [[package]] name = "traitlets" -version = "5.13.0" +version = "5.14.1" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.13.0-py3-none-any.whl", hash = "sha256:baf991e61542da48fe8aef8b779a9ea0aa38d8a54166ee250d5af5ecf4486619"}, - {file = "traitlets-5.13.0.tar.gz", hash = "sha256:9b232b9430c8f57288c1024b34a8f0251ddcc47268927367a0dd3eeaca40deb5"}, + {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"}, + {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] @@ -3172,13 +3254,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wcwidth" -version = "0.2.10" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.10-py2.py3-none-any.whl", hash = "sha256:aec5179002dd0f0d40c456026e74a729661c9d468e1ed64405e3a6c2176ca36f"}, - {file = "wcwidth-0.2.10.tar.gz", hash = "sha256:390c7454101092a6a5e43baad8f83de615463af459201709556b6e4b1c861f97"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] @@ -3310,4 +3392,4 @@ mark = ["banana-hep", "sqlalchemy"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -content-hash = "ad042a74a077766ce436ee2ab3cfbbaa90e57c76071c6b3ea923c7fbbd555bdb" +content-hash = "bcc0109269c0c850ddc515f83d30306c384d606adaf219f33e1cbaeb1ae68fa5" diff --git a/pyproject.toml b/pyproject.toml index c9b996300..e8d7ac505 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,6 +76,7 @@ recommonmark = "^0.7.1" sphinxcontrib-bibtex = "^2.3.0" sphinxcontrib-details-directive = "^0.1.0" nbsphinx = "^0.8.6" +ipykernel = "^6.13.0" [tool.poetry.extras] mark = ["banana-hep", "sqlalchemy"] @@ -104,6 +105,7 @@ docs-view = { "shell" = "cd docs; make view" } docs-server = { "shell" = "cd docs; make server" } docs-clean = { "shell" = "cd docs; make clean" } docs-cleanall = { "shell" = "cd docs; make cleanall" } +docs-install-nb = { "shell" = "python -m ipykernel install --user --name=$(basename $(poetry env info -p))" } [tool.poetry-dynamic-versioning] enable = true From 1b8cad863e04f80847bd832eb19f6bb42d8da885 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Fri, 19 Jan 2024 12:42:37 +0200 Subject: [PATCH 04/18] Fix ref->cite --- src/yadism/coefficient_functions/light/n3lo/common.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/yadism/coefficient_functions/light/n3lo/common.py b/src/yadism/coefficient_functions/light/n3lo/common.py index 21c3314e6..fc2e30bd2 100644 --- a/src/yadism/coefficient_functions/light/n3lo/common.py +++ b/src/yadism/coefficient_functions/light/n3lo/common.py @@ -1,4 +1,4 @@ -"""Common factors see :ref:`Larin:1996wd` (Table 2)""" +"""Common factors see :cite:`Larin:1996wd` (Table 2).""" import numba as nb import numpy as np @@ -10,7 +10,7 @@ def nc_color_factor(coupling_constants, nf, channel, skip_heavylight): - """Returns the |N3LO| color factor. + """Compute a |N3LO| color factor. Parameters ---------- @@ -49,7 +49,7 @@ def nc_color_factor(coupling_constants, nf, channel, skip_heavylight): @nb.njit("f8(f8[:])", cache=True) def fl(nc_weights): - """:math:`fl_{11}` Non Singlet as defined in :ref:`Larin:1996wd` (Table 2) and generalized for |NC|""" + """:math:`fl_{11}` Non Singlet as defined in :cite:`Larin:1996wd` (Table 2) and generalized for |NC|.""" # fl = [2.0, 0.5, 0.0, 0.5, 0.2, 0.5] avg = np.mean(nc_weights) return 3 * avg @@ -57,7 +57,7 @@ def fl(nc_weights): @nb.njit("f8(f8[:])", cache=True) def fls(nc_weights): - """:math:`fl_{11}` pure Singlet as defined in :ref:`Larin:1996wd` (Table 2) and generalized for |NC|""" + """:math:`fl_{11}` pure Singlet as defined in :cite:`Larin:1996wd` (Table 2) and generalized for |NC|.""" avg_2 = np.mean(nc_weights) ** 2 sum_w2 = np.mean(nc_weights**2) # fls = [1.0, 0.1, 0.0, 0.1, 0.01818181818, 0.1] @@ -66,5 +66,5 @@ def fls(nc_weights): @nb.njit("f8(f8[:])", cache=True) def flg(nc_weights): - """:math:`fl_{11}^g` pure Singlet as defined in :ref:`Larin:1996wd` (Table 2) and generalized for |NC|""" + """:math:`fl_{11}^g` pure Singlet as defined in :cite:`Larin:1996wd` (Table 2) and generalized for |NC|.""" return fls(nc_weights) From 9b38b7820d7487365bf33f1cf94a6a1e2f3b5d69 Mon Sep 17 00:00:00 2001 From: giacomomagni Date: Fri, 19 Jan 2024 11:59:50 +0100 Subject: [PATCH 05/18] start cleaning docs: dev-tool section --- docs/source/dev-tools/bench-coverage.csv | 14 +++++------ docs/source/dev-tools/bench-fns.csv | 2 +- docs/source/dev-tools/benchmarks.rst | 21 ++++++++++++++-- docs/source/dev-tools/metrics.rst | 31 ------------------------ docs/source/implementation/runner.rst | 4 --- docs/source/index.rst | 3 +-- docs/source/overview/features.rst | 2 +- docs/source/shared/abbreviations.rst | 3 +++ 8 files changed, 32 insertions(+), 48 deletions(-) delete mode 100644 docs/source/dev-tools/metrics.rst diff --git a/docs/source/dev-tools/bench-coverage.csv b/docs/source/dev-tools/bench-coverage.csv index f79b58f2f..1ca89586e 100644 --- a/docs/source/dev-tools/bench-coverage.csv +++ b/docs/source/dev-tools/bench-coverage.csv @@ -1,7 +1,7 @@ -"feature \\ reference" APFEL QCDNUM xspace-bench -projectiles |T| "" |T| -EM |T| |T| |T| -NC |T| |T| |T| -CC |T| "" |T| -scale-variatons |T| |T| "" -target-mass-corrections |T| "" "" +"feature \\ reference" APFEL QCDNUM xspace-bench APFEL++ +projectiles |T| "" |T| |T| +EM |T| |T| |T| |T| +NC |T| |T| |T| |T| +CC |T| "" |T| |T| +scale-variatons |T| |T| "" |T| +target-mass-corrections |T| "" "" |T| diff --git a/docs/source/dev-tools/bench-fns.csv b/docs/source/dev-tools/bench-fns.csv index c2c3e9eef..d52826aa8 100644 --- a/docs/source/dev-tools/bench-fns.csv +++ b/docs/source/dev-tools/bench-fns.csv @@ -1,4 +1,4 @@ "|FNS| \\ reference" APFEL QCDNUM xspace-bench |FFNS| |T| |T| "|T| [#f1]_" |ZM-VFNS| |T| |T| |T| -FONLL "|T| [#f2]_" "" "|T| [#f2]_" +|FFNS0| |T| "" |T| diff --git a/docs/source/dev-tools/benchmarks.rst b/docs/source/dev-tools/benchmarks.rst index 4bdd1549a..09706a53d 100644 --- a/docs/source/dev-tools/benchmarks.rst +++ b/docs/source/dev-tools/benchmarks.rst @@ -30,7 +30,6 @@ also incoming projectiles, different type of currents, SV and TMC. :align: center .. [#f1] Only for NfFF=3 -.. [#f2] Only for charm threshold (FFNS3 to FFNS4 interpolation) .. csv-table:: Banchmarks coverage :file: ./bench-coverage.csv @@ -131,5 +130,23 @@ In |xspace-bench| |SF| are defined as follows: Given these definitions, benchmarks with `yadism` are possible only in the region :math:`m^2_{charm} < Q^2 < m^2_{bottom}` selecting either |ZM-VFNS| with :math:`F_X^{total}` -or |FFNS| with NfFF=3 and FONLL with NfFF=4. +or |FFNS| with NfFF=3. FONLL is implemented in the so called `scheme A` with and without damping factor. + +APFEL++ +------- + + +|APFEL++| is a C++ rewriting of the Fortran 77 evolution code |APFEL|. However, |APFEL++| is based on a completely new code design and +guarantees a better performance along with a more optimal memory management. +|APFEL++| is suitable for a wide range of tasks: from the solution of the DGLAP evolution equations to the computation of DIS +and single-inclusive-annihilation cross sections. + +|APFEL++| is also currently interfaced to PARTONS, a software dedicated to the phenomenology of Generalised Parton Distributions (GPDs) and TMDs, +and to xFitter. + + +SF in APFEL++ +~~~~~~~~~~~~~ + +The |APFEL++| definitions follows the one of |APFEL| diff --git a/docs/source/dev-tools/metrics.rst b/docs/source/dev-tools/metrics.rst deleted file mode 100644 index 1732eb60b..000000000 --- a/docs/source/dev-tools/metrics.rst +++ /dev/null @@ -1,31 +0,0 @@ -Insights & Metrics -================== - -CodeCov -------- - -.. image:: https://codecov.io/gh/N3PDF/yadism/branch/master/graph/badge.svg?token=qgCFyUQ6oG - :target: https://codecov.io/gh/N3PDF/yadism - :alt: CodeCov-badge - -Powered by `pytest` coverage reports (in our use case), just display a nice -interface to navigate these reports and compare code coverage across multiple -commits/branches. - -Also able to merge different code coverage reports, even coming from different -tools. - -.. image:: https://codecov.io/gh/N3PDF/yadism/branch/master/graphs/sunburst.svg - :align: center - -CodeFactor ----------- - -.. image:: https://www.codefactor.io/repository/github/n3pdf/yadism/badge - :target: https://www.codefactor.io/repository/github/n3pdf/yadism - :alt: CodeFactor-badge - -Powered by `pylint` static analysis reports (in our use case). - -Also able to merge different code coverage reports, even coming from different -tools. diff --git a/docs/source/implementation/runner.rst b/docs/source/implementation/runner.rst index ff0d8ca19..c02c74ab0 100644 --- a/docs/source/implementation/runner.rst +++ b/docs/source/implementation/runner.rst @@ -59,10 +59,6 @@ Some **handlers objects** are used to dispatch some isolated services. They are mostly not defined internally in :mod:`yadism` package, but mainly imported from :mod:`eko`. -Another common trait that characterize these handlers is the presence of a -method :func:`from_dict`, with which the object can be created loading the -required options directly from a suitable dictionary (that in a :class:`Runner` -object is always either `theory` or `observable` dictionary). Interpolator Dispatcher ~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/source/index.rst b/docs/source/index.rst index 2156aa7db..a22504f45 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -84,9 +84,8 @@ In particular: :caption: Dev Tools :hidden: - dev-tools/tests.rst + dev-tools/benchmarks.rst dev-tools/yadmark.rst - dev-tools/metrics.rst dev-tools/code-todos.rst .. toctree:: diff --git a/docs/source/overview/features.rst b/docs/source/overview/features.rst index a6ffce436..d8671abd7 100644 --- a/docs/source/overview/features.rst +++ b/docs/source/overview/features.rst @@ -28,7 +28,7 @@ according to their :ref:`heavyness ` (e.g. Moreover the following features are all available: -1. :doc:`flavor number schemes <../theory/fns>`: |FFNS|, |ZM-VFNS|, |FONLL| +1. :doc:`flavor number schemes <../theory/fns>`: |FFNS|, |ZM-VFNS|, |FFNS0| 2. :doc:`scale variations <../theory/scale-variations>`: independent variations of factorization scale :math:`\mu_F` and renormalization scale :math:`\mu_R` 3. :ref:`target mass corrections ` diff --git a/docs/source/shared/abbreviations.rst b/docs/source/shared/abbreviations.rst index 2271fb666..be89c15e5 100644 --- a/docs/source/shared/abbreviations.rst +++ b/docs/source/shared/abbreviations.rst @@ -93,6 +93,9 @@ .. |FFNS| replace:: :abbr:`FFNS (Fixed Flavor Number Scheme)` +.. |FFNS0| replace:: + :abbr:`FFNS0 (Asymptotic Fixed Flavor Number Scheme)` + .. |VFNS| replace:: :abbr:`VFNS (Variable Flavor Number Scheme)` From 652ceec7e679aaa999e9afb47a636fbac73b74d9 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Fri, 19 Jan 2024 14:34:08 +0200 Subject: [PATCH 06/18] Replace FFNS0->FFN0 --- docs/source/dev-tools/bench-fns.csv | 2 +- docs/source/overview/features.rst | 2 +- docs/source/shared/abbreviations.rst | 4 ++-- src/yadmark/benchmark/external/apfelpy_utils.py | 9 ++++----- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/source/dev-tools/bench-fns.csv b/docs/source/dev-tools/bench-fns.csv index d52826aa8..9187f212b 100644 --- a/docs/source/dev-tools/bench-fns.csv +++ b/docs/source/dev-tools/bench-fns.csv @@ -1,4 +1,4 @@ "|FNS| \\ reference" APFEL QCDNUM xspace-bench |FFNS| |T| |T| "|T| [#f1]_" |ZM-VFNS| |T| |T| |T| -|FFNS0| |T| "" |T| +|FFN0| |T| "" |T| diff --git a/docs/source/overview/features.rst b/docs/source/overview/features.rst index d8671abd7..569bd320a 100644 --- a/docs/source/overview/features.rst +++ b/docs/source/overview/features.rst @@ -28,7 +28,7 @@ according to their :ref:`heavyness ` (e.g. Moreover the following features are all available: -1. :doc:`flavor number schemes <../theory/fns>`: |FFNS|, |ZM-VFNS|, |FFNS0| +1. :doc:`flavor number schemes <../theory/fns>`: |FFNS|, |ZM-VFNS|, |FFN0| 2. :doc:`scale variations <../theory/scale-variations>`: independent variations of factorization scale :math:`\mu_F` and renormalization scale :math:`\mu_R` 3. :ref:`target mass corrections ` diff --git a/docs/source/shared/abbreviations.rst b/docs/source/shared/abbreviations.rst index be89c15e5..3afcf2af1 100644 --- a/docs/source/shared/abbreviations.rst +++ b/docs/source/shared/abbreviations.rst @@ -93,8 +93,8 @@ .. |FFNS| replace:: :abbr:`FFNS (Fixed Flavor Number Scheme)` -.. |FFNS0| replace:: - :abbr:`FFNS0 (Asymptotic Fixed Flavor Number Scheme)` +.. |FFN0| replace:: + :abbr:`FFN0 (Asymptotic Fixed Flavor Number Scheme)` .. |VFNS| replace:: :abbr:`VFNS (Variable Flavor Number Scheme)` diff --git a/src/yadmark/benchmark/external/apfelpy_utils.py b/src/yadmark/benchmark/external/apfelpy_utils.py index 43200b93a..b6f8c5fda 100644 --- a/src/yadmark/benchmark/external/apfelpy_utils.py +++ b/src/yadmark/benchmark/external/apfelpy_utils.py @@ -62,7 +62,7 @@ def map_apfelpy_sf(init, observables, fns): "F2": init.InitializeF2NCObjectsMassive, "FL": init.InitializeFLNCObjectsMassive, } - MAP_FFNS0_NC = { + MAP_FFN0_NC = { "F2": init.InitializeF2NCObjectsMassiveZero, "FL": init.InitializeFLNCObjectsMassiveZero, } @@ -76,8 +76,8 @@ def map_apfelpy_sf(init, observables, fns): return MAP_ZM_NC if fns == "FFNS": return MAP_FFNS_NC - if fns == "FFNS0": - return MAP_FFNS0_NC + if fns == "FFN0": + return MAP_FFN0_NC def couplings(ap, pids, proc_type, obs_name): @@ -100,7 +100,6 @@ def couplings(ap, pids, proc_type, obs_name): """ - # Effective charges def _fBq(Q): if proc_type == "EM": # For Q=0 we only have electric charges @@ -300,7 +299,7 @@ def compute_apfelpy_data(theory, observables, pdf): # Setting the theory fns = theory["FNS"] - if fns not in ["ZM-VFNS", "FFNS", "FFNS0"]: + if fns not in ["ZM-VFNS", "FFNS", "FFN0"]: raise ValueError(f"APFEL++ does not contain {fns}.") # Perturbative Order From 60e28dd7b8a872f770c5020adba68ea57306ddae Mon Sep 17 00:00:00 2001 From: giacomomagni Date: Fri, 19 Jan 2024 14:46:14 +0100 Subject: [PATCH 07/18] docs: continue cleaning --- docs/source/dev-tools/bench-fns.csv | 8 +++---- docs/source/implementation/ESF.rst | 2 +- docs/source/implementation/input.rst | 29 ------------------------- docs/source/theory/scale-variations.rst | 7 ------ src/yadism/input/__init__.py | 11 ---------- 5 files changed, 5 insertions(+), 52 deletions(-) delete mode 100644 docs/source/implementation/input.rst diff --git a/docs/source/dev-tools/bench-fns.csv b/docs/source/dev-tools/bench-fns.csv index 9187f212b..f598e2508 100644 --- a/docs/source/dev-tools/bench-fns.csv +++ b/docs/source/dev-tools/bench-fns.csv @@ -1,4 +1,4 @@ -"|FNS| \\ reference" APFEL QCDNUM xspace-bench -|FFNS| |T| |T| "|T| [#f1]_" -|ZM-VFNS| |T| |T| |T| -|FFN0| |T| "" |T| +"|FNS| \\ reference" APFEL QCDNUM xspace-bench APFEL++ +|FFNS| |T| |T| "|T| [#f1]_" |T| +|ZM-VFNS| |T| |T| |T| |T| +|FFN0| |T| "" |T| |T| diff --git a/docs/source/implementation/ESF.rst b/docs/source/implementation/ESF.rst index 3559e8d6c..4d87596bd 100644 --- a/docs/source/implementation/ESF.rst +++ b/docs/source/implementation/ESF.rst @@ -20,7 +20,7 @@ belong to a :class:`StructureFunction` instance of the respective kind. The kinds are defined by choosing one option for each of the following classes: -- ``F2`` or ``FL`` +- ``F2``, ``FL``, ``F3``, ``g1``, `gL``, `g4`` - ``light``, ``charm``, ``bottom``, ``top``, or ``total`` Sometimes an instance of a different kind it is needed to complete the diff --git a/docs/source/implementation/input.rst b/docs/source/implementation/input.rst deleted file mode 100644 index f78306e15..000000000 --- a/docs/source/implementation/input.rst +++ /dev/null @@ -1,29 +0,0 @@ -Input layer -=========== - -The input layer parse and validate the user input for launching the actual run, -enforcing: - -- single field constraints -- multiple fields constraints (*cross-constraints*) - -This layer can be used directly, so it is principle independent from anything -else in `yadism`, but it has been developed to be used mainly inside a `Runner` -instance. - -Example -------- - -Theory runcard -~~~~~~~~~~~~~~ - -.. todo:: - - - provide an example of a theory card - -Observables runcard -~~~~~~~~~~~~~~~~~~~ - -.. todo:: - - - provide at least a couple of examples of observables' cards diff --git a/docs/source/theory/scale-variations.rst b/docs/source/theory/scale-variations.rst index 88ff09325..eb017be1c 100644 --- a/docs/source/theory/scale-variations.rst +++ b/docs/source/theory/scale-variations.rst @@ -146,10 +146,3 @@ Procedures - **scheme C**: varying the scales in the context of |PDF| determination only in the coefficient functions corresponds to scheme C in :cite:`AbdulKhalek:2019ihb`. - -Sector Isolated ---------------- - -.. todo:: - - Independent singlet/non-singlet scale variations diff --git a/src/yadism/input/__init__.py b/src/yadism/input/__init__.py index e774827fd..5267fefea 100644 --- a/src/yadism/input/__init__.py +++ b/src/yadism/input/__init__.py @@ -1,15 +1,4 @@ """ -Goal ----- - -These subpackage has the main goal of parsing and validate user input, in -particular the following three operations are performed: - -#. **constraints**: constraints on single fields are enforced, raising an error - for each violation -#. **cross-constraints**: constraints involving multiple fields are enforced, - raising an error for each violation - Note ---- From c1df43cd7807826375c3c9f1cf1aa6062fddeefd Mon Sep 17 00:00:00 2001 From: giacomomagni Date: Fri, 19 Jan 2024 14:52:42 +0100 Subject: [PATCH 08/18] reorder the theory card --- docs/source/overview/tutorials.ipynb | 41 ++++++++++++++++++---------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/docs/source/overview/tutorials.ipynb b/docs/source/overview/tutorials.ipynb index e8fc4bf31..9ce588b46 100644 --- a/docs/source/overview/tutorials.ipynb +++ b/docs/source/overview/tutorials.ipynb @@ -128,39 +128,52 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "90df79a9-31cb-40db-ac95-0b88469c1723", "metadata": {}, "outputs": [], "source": [ "theory_card = {\n", + " # QCD perturbative order\n", + " \"PTO\": 2, # perturbative order in alpha_s: 0 = LO (alpha_s^0), 1 = NLO (alpha_s^1) ...\n", + " \n", + " # SM parameters and masses\n", " \"CKM\": \"0.97428 0.22530 0.003470 0.22520 0.97345 0.041000 0.00862 0.04030 0.999152\", # CKM matrix elements\n", - " \"FNS\": \"FFNS\", # Flavour Number Scheme, options: \"FFNS\", \"FFN0\", \"ZM-VFNS\"\n", " \"GF\": 1.1663787e-05, # [GeV^-2] Fermi coupling constant\n", - " \"IC\": 1, # 0 = perturbative charm only, 1 = intrinsic charm allowed\n", " \"MP\": 0.938, # [GeV] proton mass\n", " \"MW\": 80.398, # [GeV] W boson mass\n", " \"MZ\": 91.1876, # [GeV] Z boson mass\n", + " \"alphaqed\": 0.007496252, # alpha_em value\n", + " \"kcThr\": 1.0, # ratio of the charm matching scale over the charm mass\n", + " \"kbThr\": 1.0, # ratio of the bottom matching scale over the bottom mass\n", + " \"ktThr\": 1.0, # ratio of the top matching scale over the top mass\n", + " \"mc\": 1.51, # [GeV] charm mass\n", + " \"mb\": 4.92, # [GeV] bottom mass\n", + " \"mt\": 172.5, # [GeV] top mass\n", + " \n", + " # Flavor number scheme settings\n", + " \"FNS\": \"FFNS\", # Flavour Number Scheme, options: \"FFNS\", \"FFN0\", \"ZM-VFNS\"\n", " \"NfFF\": 4, # (fixed) number of running flavors, only for FFNS or FFN0 schemes\n", - " \"PTO\": 2, # perturbative order in alpha_s: 0 = LO (alpha_s^0), 1 = NLO (alpha_s^1) ...\n", " \"Q0\": 1.65, # [GeV] reference scale for the flavor patch determination\n", " \"nf0\": 4, # number of active flavors at the Q0 reference scale\n", + " \n", + " # Alphas settings and boundary conditions\n", " \"Qref\": 91.2, # [GeV] reference scale for the alphas value\n", " \"nfref\": 5, # number of active flavors at the reference scale Qref\n", " \"alphas\": 0.118, # alphas value at the reference scale\n", - " \"TMC\": 1, # include target mass corrections: 0 = disabled, 1 = leading twist, 2 = higher twist approximated, 3 = higher twist exact\n", + " \"MaxNfAs\": 5, # maximum number of flavors in running of strong coupling\n", + " \"QED\": 0, # QED correction to running of strong coupling: 0 = disabled, 1 = allowed\n", + " \n", + " # Scale Variations \n", " \"XIF\": 1.0, # ratio of factorization scale over the hard scattering scale\n", " \"XIR\": 1.0, # ratio of renormalization scale over the hard scattering scale\n", - " \"alphaqed\": 0.007496252, # alpha_em value\n", - " \"kcThr\": 1.0, # ratio of the charm matching scale over the charm mass\n", - " \"kbThr\": 1.0, # ratio of the bottom matching scale over the bottom mass\n", - " \"ktThr\": 1.0, # ratio of the top matching scale over the top mass\n", - " \"mc\": 1.51, # [GeV] charm mass\n", - " \"mb\": 4.92, # [GeV] bottom mass\n", - " \"mt\": 172.5, # [GeV] top mass\n", + " \n", + " # Other settings\n", + " \"IC\": 1, # 0 = perturbative charm only, 1 = intrinsic charm allowed \n", + " \"TMC\": 1, # include target mass corrections: 0 = disabled, 1 = leading twist, 2 = higher twist approximated, 3 = higher twist exact\n", " \"n3lo_cf_variation\": 0, # N3LO coefficient functions variation: -1 = lower bound, 0 = central , 1 = upper bound\n", - " \"QED\": 0, # QED correction to running of strong coupling: 0 = disabled, 1 = allowed\n", - " \"MaxNfAs\": 5, # maximum number of flavors in running of strong coupling\n", + " \n", + " # Other EKO settings, not relevant for Yadism\n", " \"HQ\": \"POLE\", # heavy quark mass scheme (not yet implemented in yadism)\n", " \"MaxNfPdf\": 5, # maximum number of flavors in running of PDFs (ignored by yadism)\n", " \"ModEv\": \"EXA\", # evolution solver for PDFs (ignored by yadism)\n", From a1ebe2f22fdeaa9cc95d95832e6a47632ba53658 Mon Sep 17 00:00:00 2001 From: giacomomagni Date: Fri, 19 Jan 2024 15:16:27 +0100 Subject: [PATCH 09/18] more work on docs implementation --- docs/source/implementation/kernels.rst | 15 ++++++--------- docs/source/implementation/structure.rst | 19 ++++++++----------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/docs/source/implementation/kernels.rst b/docs/source/implementation/kernels.rst index fcc5ab308..9e7467aa2 100644 --- a/docs/source/implementation/kernels.rst +++ b/docs/source/implementation/kernels.rst @@ -16,8 +16,8 @@ The actual physical combination are not as many as flavors, indeed |QCD| is flavor blind (in the massless case, and the only difference in the massive case are the value of the masses themselves). -In particular there are 3 relevant combinations, as described in -:doc:`../theory/coeff-funcs`. +In particular there are 3 relevant combinations, for polarized and +unpolarized |DIS| as described in :doc:`../theory/coeff-funcs`. .. todo:: @@ -37,11 +37,8 @@ In particular there are 3 relevant combinations, as described in (partons, operator, operator-error) by convolutions -Rearrange Singlet & Non-singlet -------------------------------- +Singlet & Non-singlet +--------------------- -.. todo:: - - describe redefinition of the singlet -> pure singlet from Vogt notation - - essentially include the already written note +For the distinction about singlet and non-singlet coefficient function, +see :doc:`../theory/nonsinglet`. \ No newline at end of file diff --git a/docs/source/implementation/structure.rst b/docs/source/implementation/structure.rst index 1b7f1fae3..162ff144b 100644 --- a/docs/source/implementation/structure.rst +++ b/docs/source/implementation/structure.rst @@ -29,12 +29,10 @@ Essentially the flow of an execution is the following: 1. (**user** initiated) a :class:`~yadism.runner.Runner` is instantiated and it is passed the theory configuration, and the requested observables to compute (together with related configurations) -2. a check is performed on the user input (by an - :class:`~yadism.input.inspector.Inspector`) -3. the relevant global *service providers* are initialized and stored by the +2. the relevant global *service providers* are initialized and stored by the :class:`~yadism.runner.Runner` (like the :math:`\alpha_s` evolution, or the interpolation dispatcher, or the couplings computer) -4. the requested observables are scanned, and they are assigned to the +3. the requested observables are scanned, and they are assigned to the respective :class:`~yadism.sf.StructureFunction` / :class:`~yadism.xs.CrossSection` (acting as manager and caching storage) according to their kind and heavyness (but multiple kinematics will belong to @@ -42,17 +40,17 @@ Essentially the flow of an execution is the following: :class:`~yadism.xs.CrossSection`) each kinematic point will correspond to an instance of :class:`~yadism.esf.esf.EvaluatedStructureFunction` / :class:`~yadism.esf.exs.EvaluatedCrossSection` -5. (**user** initiated) output is requested -6. the request is propagated to the managers, and then to all the required +4. (**user** initiated) output is requested +5. the request is propagated to the managers, and then to all the required `ESF` objects -7. the `ESF` issues a request to the +6. the `ESF` issues a request to the :class:`~yadism.coefficient_functions.Combiner` for the relevant :class:`~yadism.coefficient_functions.kernels.Kernel` -8. all the :class:`~yadism.coefficient_functions.kernels.Kernel` are numerically +7. all the :class:`~yadism.coefficient_functions.kernels.Kernel` are numerically convoluted with the |PDF| interpolation polynomials -9. all the results are collected in an :class:`~yadism.output.Output` object and +8. all the results are collected in an :class:`~yadism.output.Output` object and returned to the user -10. (**user** initiated) the :class:`~yadism.output.Output` object might be +9. (**user** initiated) the :class:`~yadism.output.Output` object might be dumped on disk in one of the available formats Elements @@ -62,7 +60,6 @@ Elements :maxdepth: 2 runner - input kernels SF ESF From f6c330ddd00735fe5371378f1f22522449a41c95 Mon Sep 17 00:00:00 2001 From: Radonirinaunimi Date: Mon, 22 Jan 2024 15:40:44 +0100 Subject: [PATCH 10/18] restructure tutorial to include comparison with data --- docs/source/index.rst | 2 +- docs/source/overview/tutorials.ipynb | 909 ------------------ .../overview/tutorials/compare_data.ipynb | 585 +++++++++++ .../overview/tutorials/getting_started.ipynb | 679 +++++++++++++ docs/source/overview/tutorials/tutorials.rst | 16 + 5 files changed, 1281 insertions(+), 910 deletions(-) delete mode 100644 docs/source/overview/tutorials.ipynb create mode 100644 docs/source/overview/tutorials/compare_data.ipynb create mode 100644 docs/source/overview/tutorials/getting_started.ipynb create mode 100644 docs/source/overview/tutorials/tutorials.rst diff --git a/docs/source/index.rst b/docs/source/index.rst index a22504f45..605c3b9b5 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -52,7 +52,7 @@ In particular: :hidden: overview/features.rst - Tutorials + overview/tutorials/tutorials.rst .. toctree:: :maxdepth: 1 diff --git a/docs/source/overview/tutorials.ipynb b/docs/source/overview/tutorials.ipynb deleted file mode 100644 index 9ce588b46..000000000 --- a/docs/source/overview/tutorials.ipynb +++ /dev/null @@ -1,909 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "nominated-inspection", - "metadata": {}, - "source": [ - "# Tutorials\n", - "\n", - "The following tutorial provides a brief introduction on some of the main features of `yadism`. This tutorial has three main objectives, namely to introduce the user on how to:\n", - "- prepare the observable and theory cards required for any `yadism` computation\n", - "- compute observables by convoluting `yadism` predictions to PDFs (Parton Distribution Functions)\n", - "- tabulate the `yadism` predictions into fast-interpolation grids for later use" - ] - }, - { - "cell_type": "markdown", - "id": "bfff8f0c-740e-4177-a642-13e9d0a0cc63", - "metadata": {}, - "source": [ - "## Installation \n", - "\n", - "In order to start using `yadism`, one first needs to install it and some of its extra-dependencies. The easiest way to install the latest stable version of `yadism` is via `pip` using the following command:\n", - "\n", - "```sh\n", - "pip install 'yadism[mark, box]'\n", - "```\n", - "\n", - "In addition to installing the main `yadism` package, the above command also installs `yadmark` and `yadbox`. `yadmark` is package that provides APIs to perform the benchmark of `yadism` to other DIS codes (e.g. `APFEL`, `APFEL++`, `QCDNUM`). `yadbox` instead provides an interface to `PineAPPL` to store predictions in the form of fast-interpolation grids.\n", - "\n", - "In order to check that `yadism` was installed properly, one can check the version:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ded2fb96-9fe9-4503-8418-bfcfb6d53998", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'0.0.0'" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import yadism\n", - "yadism.__version__" - ] - }, - { - "cell_type": "markdown", - "id": "valuable-theater", - "metadata": {}, - "source": [ - "## Preparing the run cards\n", - "\n", - "Yadism takes as inputs **two runcards** whose representations are given in terms of python dictionaries. That is, one needs:\n", - "- an **observable card** which contains the details on the observable to be computed\n", - "- a **theory card** which contains the various theory settings to compute the observable in question\n", - "\n", - "Below is an example of an observable card in which the meaning of each key is also specified:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "announced-petite", - "metadata": {}, - "outputs": [], - "source": [ - "observable_card = {\n", - " # Process type: \"EM\", \"NC\", \"CC\"\n", - " \"prDIS\": \"NC\",\n", - " # Projectile: \"electron\", \"positron\", \"neutrino\", \"antineutrino\"\n", - " \"ProjectileDIS\": \"electron\",\n", - " # Scattering target: \"proton\", \"neutron\", \"isoscalar\", \"lead\", \"iron\", \"neon\" or \"marble\"\n", - " \"TargetDIS\": \"proton\",\n", - " # Interpolation: if True use log interpolation\n", - " \"interpolation_is_log\": True,\n", - " # Interpolation: polynomial degree, 1 = linear, ...\n", - " \"interpolation_polynomial_degree\": 4,\n", - " # Interpolation: xgrid values\n", - " # Note: for illustrative purposes the grid is chosen very small here\n", - " \"interpolation_xgrid\": [1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1.0],\n", - " # Observables configurations\n", - " \"observables\": {\n", - " \"XSHERANCAVG_charm\": [\n", - " {\n", - " \"y\": 0.8240707777909629,\n", - " \"x\": 3e-05,\n", - " \"Q2\": 2.5,\n", - " },\n", - " {\n", - " \"y\": 0.3531731904818413,\n", - " \"x\": 7e-05,\n", - " \"Q2\": 2.5,\n", - " },\n", - " # Add here the kinematics of other datapoints\n", - " ],\n", - " # Potentially include observables other than XSHERANCAVG_charm,\n", - " # each of them has to be: TYPE_heaviness, where heaviness can take:\n", - " # \"charm\", \"bottom\", \"top\", \"total\" or \"light\".\n", - " },\n", - " # Projectile polarization faction, float from 0 to 1.\n", - " \"PolarizationDIS\": 0.0,\n", - " # Exchanged boson propagator correction\n", - " \"PropagatorCorrection\": 0.0,\n", - " # Restrict boson coupling to a single parton ? Monte Carlo PID or None for all partons\n", - " \"NCPositivityCharge\": None,\n", - "}" - ] - }, - { - "cell_type": "markdown", - "id": "dc1b79fa-7d14-4ed6-a8ae-0a588ebe5582", - "metadata": {}, - "source": [ - "The `observables` key in the `observable_card` (which is also a dictionary) can contain multiple elements whose keys must represent structure functions or cross-sections. For the list of available observables, refer to the following [part](https://yadism.readthedocs.io/en/latest/theory/intro.html#) of the documentation.\n", - "\n", - "Similarly, below is an example of a theory card:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "90df79a9-31cb-40db-ac95-0b88469c1723", - "metadata": {}, - "outputs": [], - "source": [ - "theory_card = {\n", - " # QCD perturbative order\n", - " \"PTO\": 2, # perturbative order in alpha_s: 0 = LO (alpha_s^0), 1 = NLO (alpha_s^1) ...\n", - " \n", - " # SM parameters and masses\n", - " \"CKM\": \"0.97428 0.22530 0.003470 0.22520 0.97345 0.041000 0.00862 0.04030 0.999152\", # CKM matrix elements\n", - " \"GF\": 1.1663787e-05, # [GeV^-2] Fermi coupling constant\n", - " \"MP\": 0.938, # [GeV] proton mass\n", - " \"MW\": 80.398, # [GeV] W boson mass\n", - " \"MZ\": 91.1876, # [GeV] Z boson mass\n", - " \"alphaqed\": 0.007496252, # alpha_em value\n", - " \"kcThr\": 1.0, # ratio of the charm matching scale over the charm mass\n", - " \"kbThr\": 1.0, # ratio of the bottom matching scale over the bottom mass\n", - " \"ktThr\": 1.0, # ratio of the top matching scale over the top mass\n", - " \"mc\": 1.51, # [GeV] charm mass\n", - " \"mb\": 4.92, # [GeV] bottom mass\n", - " \"mt\": 172.5, # [GeV] top mass\n", - " \n", - " # Flavor number scheme settings\n", - " \"FNS\": \"FFNS\", # Flavour Number Scheme, options: \"FFNS\", \"FFN0\", \"ZM-VFNS\"\n", - " \"NfFF\": 4, # (fixed) number of running flavors, only for FFNS or FFN0 schemes\n", - " \"Q0\": 1.65, # [GeV] reference scale for the flavor patch determination\n", - " \"nf0\": 4, # number of active flavors at the Q0 reference scale\n", - " \n", - " # Alphas settings and boundary conditions\n", - " \"Qref\": 91.2, # [GeV] reference scale for the alphas value\n", - " \"nfref\": 5, # number of active flavors at the reference scale Qref\n", - " \"alphas\": 0.118, # alphas value at the reference scale\n", - " \"MaxNfAs\": 5, # maximum number of flavors in running of strong coupling\n", - " \"QED\": 0, # QED correction to running of strong coupling: 0 = disabled, 1 = allowed\n", - " \n", - " # Scale Variations \n", - " \"XIF\": 1.0, # ratio of factorization scale over the hard scattering scale\n", - " \"XIR\": 1.0, # ratio of renormalization scale over the hard scattering scale\n", - " \n", - " # Other settings\n", - " \"IC\": 1, # 0 = perturbative charm only, 1 = intrinsic charm allowed \n", - " \"TMC\": 1, # include target mass corrections: 0 = disabled, 1 = leading twist, 2 = higher twist approximated, 3 = higher twist exact\n", - " \"n3lo_cf_variation\": 0, # N3LO coefficient functions variation: -1 = lower bound, 0 = central , 1 = upper bound\n", - " \n", - " # Other EKO settings, not relevant for Yadism\n", - " \"HQ\": \"POLE\", # heavy quark mass scheme (not yet implemented in yadism)\n", - " \"MaxNfPdf\": 5, # maximum number of flavors in running of PDFs (ignored by yadism)\n", - " \"ModEv\": \"EXA\", # evolution solver for PDFs (ignored by yadism)\n", - "}" - ] - }, - { - "cell_type": "markdown", - "id": "169b82a0-abdd-4687-9ffe-9df38446a550", - "metadata": {}, - "source": [ - "Note that a template observable card is provided by `yadmark` and contains the default `yadism` values. One can thus just start from the default card and overwrite the values." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "246f1d7a-e7e3-48ab-9bf2-44c8352adc39", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
{\n",
-       "'NCPositivityCharge': None,\n",
-       "'PolarizationDIS': 0,\n",
-       "'ProjectileDIS': 'electron',\n",
-       "'PropagatorCorrection': 0,\n",
-       "'TargetDIS': 'proton',\n",
-       "'interpolation_is_log': True,\n",
-       "'interpolation_polynomial_degree': 4,\n",
-       "'interpolation_xgrid': [\n",
-       "│   │   1e-07,\n",
-       "│   │   1.6102620275609392e-07,\n",
-       "│   │   2.592943797404667e-07,\n",
-       "│   │   4.1753189365604003e-07,\n",
-       "│   │   6.723357536499335e-07,\n",
-       "│   │   1.0826367338740541e-06,\n",
-       "│   │   1.7433288221999873e-06,\n",
-       "│   │   2.8072162039411756e-06,\n",
-       "│   │   4.520353656360241e-06,\n",
-       "│   │   7.2789538439831465e-06,\n",
-       "│   │   1.1721022975334793e-05,\n",
-       "│   │   1.8873918221350995e-05,\n",
-       "│   │   3.039195382313195e-05,\n",
-       "│   │   4.893900918477499e-05,\n",
-       "│   │   7.880462815669905e-05,\n",
-       "│   │   0.0001268961003167922,\n",
-       "│   │   0.00020433597178569417,\n",
-       "│   │   0.00032903445623126676,\n",
-       "│   │   0.0005298316906283707,\n",
-       "│   │   0.0008531678524172806,\n",
-       "│   │   0.0013738237958832637,\n",
-       "│   │   0.00221221629107045,\n",
-       "│   │   0.003562247890262444,\n",
-       "│   │   0.005736152510448681,\n",
-       "│   │   0.009236708571873866,\n",
-       "│   │   0.014873521072935119,\n",
-       "│   │   0.02395026619987486,\n",
-       "│   │   0.03856620421163472,\n",
-       "│   │   0.06210169418915616,\n",
-       "│   │   0.1,\n",
-       "│   │   0.1473684210526316,\n",
-       "│   │   0.19473684210526315,\n",
-       "│   │   0.24210526315789474,\n",
-       "│   │   0.2894736842105263,\n",
-       "│   │   0.33684210526315794,\n",
-       "│   │   0.38421052631578945,\n",
-       "│   │   0.43157894736842106,\n",
-       "│   │   0.4789473684210527,\n",
-       "│   │   0.5263157894736842,\n",
-       "│   │   0.5736842105263158,\n",
-       "│   │   0.6210526315789474,\n",
-       "│   │   0.6684210526315789,\n",
-       "│   │   0.7157894736842105,\n",
-       "│   │   0.7631578947368421,\n",
-       "│   │   0.8105263157894737,\n",
-       "│   │   0.8578947368421053,\n",
-       "│   │   0.9052631578947369,\n",
-       "│   │   0.9526315789473684,\n",
-       "│   │   1.0\n",
-       "],\n",
-       "'observables': {},\n",
-       "'prDIS': 'EM'\n",
-       "}\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m{\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'NCPositivityCharge'\u001b[0m: \u001b[3;35mNone\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'PolarizationDIS'\u001b[0m: \u001b[1;36m0\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'ProjectileDIS'\u001b[0m: \u001b[32m'electron'\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'PropagatorCorrection'\u001b[0m: \u001b[1;36m0\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'TargetDIS'\u001b[0m: \u001b[32m'proton'\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'interpolation_is_log'\u001b[0m: \u001b[3;92mTrue\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'interpolation_polynomial_degree'\u001b[0m: \u001b[1;36m4\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'interpolation_xgrid'\u001b[0m: \u001b[1m[\u001b[0m\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1e-07\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.6102620275609392e-07\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m2.592943797404667e-07\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m4.1753189365604003e-07\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m6.723357536499335e-07\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.0826367338740541e-06\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.7433288221999873e-06\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m2.8072162039411756e-06\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m4.520353656360241e-06\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m7.2789538439831465e-06\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.1721022975334793e-05\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.8873918221350995e-05\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m3.039195382313195e-05\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m4.893900918477499e-05\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m7.880462815669905e-05\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.0001268961003167922\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.00020433597178569417\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.00032903445623126676\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.0005298316906283707\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.0008531678524172806\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.0013738237958832637\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.00221221629107045\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.003562247890262444\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.005736152510448681\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.009236708571873866\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.014873521072935119\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.02395026619987486\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.03856620421163472\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.06210169418915616\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.1\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.1473684210526316\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.19473684210526315\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.24210526315789474\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.2894736842105263\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.33684210526315794\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.38421052631578945\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.43157894736842106\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.4789473684210527\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.5263157894736842\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.5736842105263158\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.6210526315789474\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.6684210526315789\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.7157894736842105\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.7631578947368421\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.8105263157894737\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.8578947368421053\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.9052631578947369\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m0.9526315789473684\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1;36m1.0\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[1m]\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'observables'\u001b[0m: \u001b[1m{\u001b[0m\u001b[1m}\u001b[0m,\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'prDIS'\u001b[0m: \u001b[32m'EM'\u001b[0m\n", - "\u001b[1m}\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from rich.pretty import pprint # already installed as a dependency, only needed for a pretty printing\n", - "from yadmark.data.observables import default_card # imports the default yadism observable card\n", - "\n", - "pprint(default_card)" - ] - }, - { - "cell_type": "markdown", - "id": "5083afea-4ac9-483d-93b9-f0473cbc46b0", - "metadata": {}, - "source": [ - "## Computing predictions\n", - "\n", - "Now that we have defined our observable and theory, we can now compute the corresponding preditions. This can be easily done by running the following:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "b7d95bf6-4536-41a5-9505-07a8743e5f6e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
[21:32:59] INFO     Interpolation: number of points = 8, polynomial degree = 4, logarithmic =  interpolation.py:537\n",
-       "                    True                                                                                           \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m[21:32:59]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Interpolation: number of points = \u001b[1;36m8\u001b[0m, polynomial degree = \u001b[1;36m4\u001b[0m, logarithmic = \u001b]8;id=704949;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/interpolation.py\u001b\\\u001b[2minterpolation.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=162454;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/interpolation.py#537\u001b\\\u001b[2m537\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m \u001b[3;92mTrue\u001b[0m \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     {'MZ2': 8315.178393760001, 'CKM': CKM([[9.49221518e-01 5.07600900e-02  coupling_constants.py:52\n",
-       "                    1.20409000e-05] [5.07150400e-02 9.47604903e-01 1.68100000e-03]                                 \n",
-       "                    [7.43044000e-05 1.62409000e-03 9.98304719e-01]]), 'sin2theta_weak':                            \n",
-       "                    0.23121, 'MW2': 6463.838403999999}                                                             \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[1m{\u001b[0m\u001b[32m'MZ2'\u001b[0m: \u001b[1;36m8315.178393760001\u001b[0m, \u001b[32m'CKM'\u001b[0m: \u001b[1;35mCKM\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m9.49221518e-01\u001b[0m \u001b[1;36m5.07600900e-02\u001b[0m \u001b]8;id=56181;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py\u001b\\\u001b[2mcoupling_constants.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=853819;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py#52\u001b\\\u001b[2m52\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m \u001b[1;36m1.20409000e-05\u001b[0m\u001b[1m]\u001b[0m \u001b[1m[\u001b[0m\u001b[1;36m5.07150400e-02\u001b[0m \u001b[1;36m9.47604903e-01\u001b[0m \u001b[1;36m1.68100000e-03\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1m[\u001b[0m\u001b[1;36m7.43044000e-05\u001b[0m \u001b[1;36m1.62409000e-03\u001b[0m \u001b[1;36m9.98304719e-01\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m, \u001b[32m'sin2theta_weak'\u001b[0m: \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;36m0.23121\u001b[0m, \u001b[32m'MW2'\u001b[0m: \u001b[1;36m6463.838403999999\u001b[0m\u001b[1m}\u001b[0m \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     {'process': 'NC', 'projectilePID': 11, 'polarization': 0.0,            coupling_constants.py:53\n",
-       "                    'propagatorCorrection': 0.0, 'nc_pos_charge': None}                                            \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m \u001b[1m{\u001b[0m\u001b[32m'process'\u001b[0m: \u001b[32m'NC'\u001b[0m, \u001b[32m'projectilePID'\u001b[0m: \u001b[1;36m11\u001b[0m, \u001b[32m'polarization'\u001b[0m: \u001b[1;36m0.0\u001b[0m, \u001b]8;id=326312;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py\u001b\\\u001b[2mcoupling_constants.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=908778;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/coefficient_functions/coupling_constants.py#53\u001b\\\u001b[2m53\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m \u001b[32m'propagatorCorrection'\u001b[0m: \u001b[1;36m0.0\u001b[0m, \u001b[32m'nc_pos_charge'\u001b[0m: \u001b[3;35mNone\u001b[0m\u001b[1m}\u001b[0m \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     RenScaleVar: False, FactScaleVar: False                                  scale_variations.py:61\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m RenScaleVar: \u001b[3;91mFalse\u001b[0m, FactScaleVar: \u001b[3;91mFalse\u001b[0m \u001b]8;id=344383;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/esf/scale_variations.py\u001b\\\u001b[2mscale_variations.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=760986;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/esf/scale_variations.py#61\u001b\\\u001b[2m61\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     Atlas [0.00e+00 - 0.00e+00 - inf - inf - inf], ref=2.7224999999999997 @ 4       matchings.py:69\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m0.00e+00\u001b[0m - inf - inf - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m2\u001b[0m\u001b[1;36m.7224999999999997\u001b[0m @ \u001b[1;36m4\u001b[0m \u001b]8;id=684830;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=962601;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     PTO: 2, PTO@evolution: 2, process: NC                                             runner.py:146\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m PTO: \u001b[1;36m2\u001b[0m, PTO@evolution: \u001b[1;36m2\u001b[0m, process: NC \u001b]8;id=493106;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=661291;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#146\u001b\\\u001b[2m146\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     FNS: FFNS, NfFF: 4                                                                runner.py:153\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m FNS: FFNS, NfFF: \u001b[1;36m4\u001b[0m \u001b]8;id=905679;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=440153;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#153\u001b\\\u001b[2m153\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     Intrinsic: [4]                                                                    runner.py:154\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Intrinsic: \u001b[1m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1m]\u001b[0m \u001b]8;id=537556;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=331787;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#154\u001b\\\u001b[2m154\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     projectile: electron, target: {Z: 1, A: 1}                                        runner.py:155\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m projectile: electron, target: \u001b[1m{\u001b[0mZ: \u001b[1;36m1\u001b[0m, A: \u001b[1;36m1\u001b[0m\u001b[1m}\u001b[0m \u001b]8;id=366914;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py\u001b\\\u001b[2mrunner.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=376500;file:///home/tanjona/Documents/WORK/NNPDF/yadism/src/yadism/runner.py#155\u001b\\\u001b[2m155\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                                      ┌────────────────────────────────────┐                                       \n",
-       "                                      │                                    │                                       \n",
-       "                                      │ __     __       _ _                │                                       \n",
-       "                                      │ \\ \\   / /      | (_)               │                                       \n",
-       "                                      │  \\ \\_/ /_ _  __| |_ ___ _ __ ___   │                                       \n",
-       "                                      │   \\   / _` |/ _` | / __| '_ ` _ \\  │                                       \n",
-       "                                      │    | | (_| | (_| | \\__ \\ | | | | | │                                       \n",
-       "                                      │    |_|\\__,_|\\__,_|_|___/_| |_| |_| │                                       \n",
-       "                                      │                                    │                                       \n",
-       "                                      └────────────────────────────────────┘                                       \n",
-       "
\n" - ], - "text/plain": [ - " \u001b[35m┌────────────────────────────────────┐\u001b[0m \n", - " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", - " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m__ __ _ _\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", - " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m\\ \\ / / | (_)\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", - " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m \\ \\_/ /_ _ __| |_ ___ _ __ ___\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", - " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m \\ / _` |/ _` | / __| '_ ` _ \\\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", - " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m | | (_| | (_| | \\__ \\ | | | | |\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", - " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m |_|\\__,_|\\__,_|_|___/_| |_| |_|\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", - " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", - " \u001b[35m└────────────────────────────────────┘\u001b[0m \n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n",
-       "                                                       Plan                                                        \n",
-       "
\n" - ], - "text/plain": [ - "\n", - " \u001b[1;4mPlan\u001b[0m \n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n",
-       "XSHERANCAVG_charm at 2 pts                                                                                      \n",
-       "
\n" - ], - "text/plain": [ - "\n", - "\u001b[1;33m • \u001b[0mXSHERANCAVG_charm at 2 pts \n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n",
-       "                                                    Calculation                                                    \n",
-       "
\n" - ], - "text/plain": [ - "\n", - " \u001b[1;4mCalculation\u001b[0m \n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
yadism took off! please stay tuned ...\n",
-       "
\n" - ], - "text/plain": [ - "yadism took off! please stay tuned \u001b[33m...\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n"
-      ],
-      "text/plain": [
-       "\u001b[?25l"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/html": [
-       "
\n",
-       "\u001b[?25h
\n" - ], - "text/plain": [ - "\n", - "\u001b[?25h" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
took 0.24 s\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[36mtook \u001b[0m\u001b[1;36m0.24\u001b[0m\u001b[36m s\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "out = yadism.run_yadism(theory_card, observable_card)" - ] - }, - { - "cell_type": "markdown", - "id": "a1d79202-30d1-465f-9ce2-008fc760ebf1", - "metadata": {}, - "source": [ - "`out` is an object of type `yadism.output.Output` from which one can perform various operations. In our example, we are interested in convoluting it with a PDF set in the [LHAPDF](https://lhapdf.hepforge.org/) format.\n", - "\n", - "To do so, first we need to import the `lhapdf` package. For this example, we will use the NNLO NNPDF4.0 set: `NNPDF40_nnlo_as_01180`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "bc6f3aac-802b-4073-9e6a-e18e54f3ef85", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LHAPDF 6.5.0 loading /home/tanjona/miniconda3/envs/yadism/share/LHAPDF/NNPDF40_nnlo_as_01180/NNPDF40_nnlo_as_01180_0000.dat\n", - "NNPDF40_nnlo_as_01180 PDF set, member #0, version 1; LHAPDF ID = 331100\n" - ] - } - ], - "source": [ - "import lhapdf\n", - "\n", - "# load the PDF set\n", - "pdf = lhapdf.mkPDF(\"NNPDF40_nnlo_as_01180\")" - ] - }, - { - "cell_type": "markdown", - "id": "359f3118-a317-4345-8e73-bc810b92ea92", - "metadata": {}, - "source": [ - "The convolution can simply be performed as follow:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "9b983dd8-4724-439c-bdab-773879308985", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
[21:37:46] INFO     Atlas [0.00e+00 - 2.28e+00 - 2.42e+01 - 2.98e+04 - inf], ref=8317.44 @ 5        matchings.py:69\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m[21:37:46]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=996071;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=24744;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     Strong Coupling: a_s(µ_R^2=8317.440000)^(nf=5)=0.009390=0.118000/()          couplings.py:458\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Strong Coupling: \u001b[1;35ma_s\u001b[0m\u001b[1m(\u001b[0mµ_R^\u001b[1;36m2\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.440000\u001b[0m\u001b[1m)\u001b[0m^\u001b[1m(\u001b[0m\u001b[33mnf\u001b[0m=\u001b[1;36m5\u001b[0m\u001b[1m)\u001b[0m=\u001b[1;36m0.\u001b[0m\u001b[1;36m009390\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.118000\u001b[0m/\u001b[1m(\u001b[0m4π\u001b[1m)\u001b[0m \u001b]8;id=295081;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py\u001b\\\u001b[2mcouplings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=206002;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py#458\u001b\\\u001b[2m458\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
           INFO     Atlas [0.00e+00 - 2.28e+00 - 2.42e+01 - 2.98e+04 - inf], ref=8317.44 @ 5        matchings.py:69\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=842613;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=103523;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "values = out.apply_pdf(pdf)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "a56aee13-b08b-492f-80d0-3487bea74318", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
{\n",
-       "'XSHERANCAVG_charm': [\n",
-       "│   │   {\n",
-       "│   │   │   'x': 3e-05,\n",
-       "│   │   │   'Q2': 2.5,\n",
-       "│   │   │   'result': -0.9959496128078331,\n",
-       "│   │   │   'error': 1.281070214968848e-08,\n",
-       "│   │   │   'y': 0.8240707777909629\n",
-       "│   │   },\n",
-       "│   │   {\n",
-       "│   │   │   'x': 7e-05,\n",
-       "│   │   │   'Q2': 2.5,\n",
-       "│   │   │   'result': -0.7710853256052412,\n",
-       "│   │   │   'error': 2.3298246570353407e-08,\n",
-       "│   │   │   'y': 0.3531731904818413\n",
-       "│   │   }\n",
-       "]\n",
-       "}\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m{\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[32m'XSHERANCAVG_charm'\u001b[0m: \u001b[1m[\u001b[0m\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1m{\u001b[0m\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'x'\u001b[0m: \u001b[1;36m3e-05\u001b[0m,\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'Q2'\u001b[0m: \u001b[1;36m2.5\u001b[0m,\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'result'\u001b[0m: \u001b[1;36m-0.9959496128078331\u001b[0m,\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'error'\u001b[0m: \u001b[1;36m1.281070214968848e-08\u001b[0m,\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'y'\u001b[0m: \u001b[1;36m0.8240707777909629\u001b[0m\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m,\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1m{\u001b[0m\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'x'\u001b[0m: \u001b[1;36m7e-05\u001b[0m,\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'Q2'\u001b[0m: \u001b[1;36m2.5\u001b[0m,\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'result'\u001b[0m: \u001b[1;36m-0.7710853256052412\u001b[0m,\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'error'\u001b[0m: \u001b[1;36m2.3298246570353407e-08\u001b[0m,\n", - "\u001b[2;32m│ │ │ \u001b[0m\u001b[32m'y'\u001b[0m: \u001b[1;36m0.3531731904818413\u001b[0m\n", - "\u001b[2;32m│ │ \u001b[0m\u001b[1m}\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[1m]\u001b[0m\n", - "\u001b[1m}\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "pprint(values)" - ] - }, - { - "cell_type": "markdown", - "id": "2c0ffc4a-bb6b-4d89-9a01-1d2c93e49995", - "metadata": {}, - "source": [ - "We can see that `values` is a dictionary containing one element whose key is the name of the observable (as we defined above). If we had defined two observables in the `observable_card`, `values` would also contain two elements." - ] - }, - { - "cell_type": "markdown", - "id": "519b8537-9c09-4a66-bf44-ff47e1879449", - "metadata": {}, - "source": [ - "## Dumping predictions into fast-interpolation grids\n", - "\n", - "We learned from the previous sections how to compute an observable using `yadism` and now we'll see how to tabulate the output of `yadism.run_yadism` into a fast-interpolation table. This has the convenient advantage that one can re-use the same computations without the need to re-run `yadism` (to convolute with different PDF sets for example).\n", - "\n", - "One of the main advantage of `yadism` is its interface with PineAPPL - a library providing fast interpolation into a unique format suitable for various HEP-related softwares. \n", - "\n", - "Each observable defined in `observable_card` can be dumped into its own fast-interpolation grid. The steps are as follow:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "7f914e87-bb05-47c7-a850-11a18e6cfdb5", - "metadata": {}, - "outputs": [], - "source": [ - "# import function that dumps the predictions into a Pineappl format\n", - "from yadbox.export import dump_pineappl_to_file\n", - "\n", - "# Extract the names of the different observables (in case there are many)\n", - "list_observables = observable_card['observables'].keys()\n", - "\n", - "# Dump each observable into a PineAPPL grid\n", - "for obs in list_observables:\n", - " dump_pineappl_to_file(out, f\"outputgrid_{obs}.pineappl.lz4\", f\"{obs}\")" - ] - }, - { - "cell_type": "markdown", - "id": "7dffb5fd-9e84-4982-b9d4-a4f077a573e8", - "metadata": {}, - "source": [ - "Our PineAPPL grid has now been written on the disk. Note that the extension has to be `pineappl.lz4`." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "703b29ce-9068-44af-b72b-1144bad805e6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "outputgrid_XSHERANCAVG_charm.pineappl.lz4\n" - ] - } - ], - "source": [ - "!ls outputgrid_*" - ] - }, - { - "cell_type": "markdown", - "id": "0c887943-be93-4a0f-815b-1317ad04db2c", - "metadata": {}, - "source": [ - "To load the pre-computed predictions, we need to import the `pineappl` package. Given that `pineappl` is a dependency of `yadism` it was already installed so we don't have to install it again." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "ebf75d0e-965a-46b1-a3a3-e20eeb1d5e15", - "metadata": {}, - "outputs": [], - "source": [ - "# imports the pineappl package\n", - "import pineappl\n", - "\n", - "# Read the pineappl grid saved earlier\n", - "grid = pineappl.grid.Grid.read(\"./outputgrid_XSHERANCAVG_charm.pineappl.lz4\")\n", - "\n", - "# Convolute the grid with the same PDF as above\n", - "results = grid.convolute_with_one(2212, pdf.xfxQ2, pdf.alphasQ2)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "fc268946-3f84-4f63-be98-a899adf9512c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
array([-0.98699882, -0.7640712 ])\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m-0.98699882\u001b[0m, \u001b[1;36m-0.7640712\u001b[0m \u001b[1m]\u001b[0m\u001b[1m)\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "pprint(results)" - ] - }, - { - "cell_type": "markdown", - "id": "c114b40d-9a40-4d73-8609-ab8761fe37a0", - "metadata": {}, - "source": [ - "As we can see, we get similar results to what we got before. Now, the `results` is just an array of two dimension corresponding to the different kinematic values." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "yadism-QljnF84o-py3.10", - "language": "python", - "name": "yadism-qljnf84o-py3.10" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/source/overview/tutorials/compare_data.ipynb b/docs/source/overview/tutorials/compare_data.ipynb new file mode 100644 index 000000000..e088a001a --- /dev/null +++ b/docs/source/overview/tutorials/compare_data.ipynb @@ -0,0 +1,585 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "nominated-inspection", + "metadata": {}, + "source": [ + "# Compare to Experimental Data\n", + "\n", + "In the following section, we'll show how to compare `yadism` predictions to an experimentally measured observable. As a test case, we use the combined measurement of two experioments [H1](https://en.wikipedia.org/wiki/H1_(particle_detector)) and [ZEUS](https://en.wikipedia.org/wiki/ZEUS_(particle_detector)) for the collision of an electron with a proton at a center of mass energy of $\\sqrt{s} = 318~\\rm{GeV}$.\n", + "\n", + "## Preparing the dataset\n", + "\n", + "Our dataset can be downloaded from the NNPDF server:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2fada138-79b8-44c7-ad32-8ececc9979f3", + "metadata": {}, + "outputs": [], + "source": [ + "!wget -q https://data.nnpdf.science/yadism/HERA12B2_NCem.dat" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1baa9ce5-ee95-46f9-a2e6-9682d5e295f7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
xQ2Sigma
00.000860.01.483100
10.001390.01.466000
20.001590.01.421900
30.002090.01.270000
40.0016120.01.438800
............
1540.400020000.00.205990
1550.650020000.00.017364
1560.400030000.00.230730
1570.650030000.00.044179
1580.650050000.00.082210
\n", + "

159 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " x Q2 Sigma\n", + "0 0.0008 60.0 1.483100\n", + "1 0.0013 90.0 1.466000\n", + "2 0.0015 90.0 1.421900\n", + "3 0.0020 90.0 1.270000\n", + "4 0.0016 120.0 1.438800\n", + ".. ... ... ...\n", + "154 0.4000 20000.0 0.205990\n", + "155 0.6500 20000.0 0.017364\n", + "156 0.4000 30000.0 0.230730\n", + "157 0.6500 30000.0 0.044179\n", + "158 0.6500 50000.0 0.082210\n", + "\n", + "[159 rows x 3 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Load the experimental data via pandas\n", + "data = pd.read_csv(\"HERA12B2_NCem.dat\", sep=\"\\s+\")\n", + "\n", + "data[[\"x\", \"Q2\", \"Sigma\"]]" + ] + }, + { + "cell_type": "markdown", + "id": "60da4349-dddc-406e-a3f8-2e81c7e1c767", + "metadata": {}, + "source": [ + "## Computing the yadism predictions\n", + "\n", + "We are now going to compute the `yadism` predictions at the same kinematic points as provided by the experimental measurements. In terms of theory, we are going to use the NNLO predictions with Fixed-Flavour Number Schemes (FFNS). As we saw in the previous tutorial, we first need to prepare the theory and observable cards." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9849edb4-ae32-49b2-ba6d-a96bf2cdb6f4", + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "import yadism\n", + "\n", + "from eko import interpolation\n", + "from yadbox.export import dump_pineappl_to_file" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ff60baae-65ee-4544-af2d-3c7a23a5734d", + "metadata": {}, + "outputs": [], + "source": [ + "observables_card = {\n", + " \"PolarizationDIS\": 0.0,\n", + " \"ProjectileDIS\": \"electron\",\n", + " \"PropagatorCorrection\": 0.0,\n", + " \"TargetDIS\": \"proton\",\n", + " \"interpolation_is_log\": True,\n", + " \"interpolation_polynomial_degree\": 4,\n", + " \"interpolation_xgrid\": interpolation.lambertgrid(60).tolist(),\n", + " \"observables\": {\"XSHERANC_total\": []},\n", + " \"prDIS\": \"NC\",\n", + " \"NCPositivityCharge\": None,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5920d43e-b8b4-496a-97c8-98b5c2325716", + "metadata": {}, + "outputs": [], + "source": [ + "theory_card = {\n", + " \"PTO\": 2,\n", + " \"FNS\": \"FONLL-C\",\n", + " \"DAMP\": 0,\n", + " \"IC\": 1,\n", + " \"IB\": 0,\n", + " \"ModEv\": \"TRN\",\n", + " \"ModSV\": \"unvaried\",\n", + " \"XIR\": 1.0,\n", + " \"XIF\": 1.0,\n", + " \"NfFF\": 5,\n", + " \"MaxNfAs\": 5,\n", + " \"MaxNfPdf\": 5,\n", + " \"Q0\": 1.65,\n", + " \"alphas\": 0.118,\n", + " \"Qref\": 91.2,\n", + " \"nf0\": 4,\n", + " \"nfref\": 5,\n", + " \"QED\": 0,\n", + " \"alphaqed\": 0.007496252,\n", + " \"Qedref\": 1.777,\n", + " \"SxRes\": 0,\n", + " \"SxOrd\": \"LL\",\n", + " \"HQ\": \"POLE\",\n", + " \"mc\": 1.51,\n", + " \"Qmc\": 1.51,\n", + " \"kcThr\": 1.0,\n", + " \"mb\": 4.92,\n", + " \"Qmb\": 4.92,\n", + " \"kbThr\": 4.0,\n", + " \"mt\": 172.5,\n", + " \"Qmt\": 172.5,\n", + " \"ktThr\": 1.0,\n", + " \"CKM\": \"0.97428 0.22530 0.003470 0.22520 0.97345 0.041000 0.00862 0.04030 0.999152\",\n", + " \"MZ\": 91.1876,\n", + " \"MW\": 80.398,\n", + " \"GF\": 1.1663787e-05,\n", + " \"SIN2TW\": 0.23126,\n", + " \"TMC\": 1,\n", + " \"MP\": 0.938,\n", + " \"global_nx\": 0,\n", + " \"EScaleVar\": 1,\n", + " \"kDIScThr\": 1.0,\n", + " \"kDISbThr\": 4.0,\n", + " \"kDIStThr\": 1.0,\n", + " \"n3lo_cf_variation\": 0,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6e68559d-2f4e-4a0c-a372-8dc836bd1f8a", + "metadata": {}, + "outputs": [], + "source": [ + "def compute_predicionts() -> None:\n", + " \"\"\"Compute yadism prediction for all experimental bins.\"\"\"\n", + " # prepare the kinematics for all the datapoints\n", + " curobs = data.apply(\n", + " lambda dat: {\"x\": dat[\"x\"], \"Q2\": dat[\"Q2\"], \"y\": dat[\"y\"]},\n", + " axis=1,\n", + " )\n", + "\n", + " # Update the observable &b kinematics in the `observable_card`\n", + " obs_def = {\n", + " \"observables\" : {\"XSHERANC_total\": list(curobs.to_dict().values())}\n", + " } # As we saw in the previous tutorial, it has to be a dict[dict[list]]\n", + " observables_card.update(obs_def)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\") # suppress noisy warnings\n", + " out = yadism.run_yadism(theory_card, observables_card)\n", + " \n", + " # Dump computations as a pineappl grid for later use\n", + " dump_pineappl_to_file(\n", + " out, \"HERA_NC_318GEV_EM_SIGMARED.pineappl.lz4\", \"XSHERANC_total\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "006952bf-d2aa-46c0-a1a5-53f19af94068", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
                                      ┌────────────────────────────────────┐                                       \n",
+       "                                      │                                    │                                       \n",
+       "                                      │ __     __       _ _                │                                       \n",
+       "                                      │ \\ \\   / /      | (_)               │                                       \n",
+       "                                      │  \\ \\_/ /_ _  __| |_ ___ _ __ ___   │                                       \n",
+       "                                      │   \\   / _` |/ _` | / __| '_ ` _ \\  │                                       \n",
+       "                                      │    | | (_| | (_| | \\__ \\ | | | | | │                                       \n",
+       "                                      │    |_|\\__,_|\\__,_|_|___/_| |_| |_| │                                       \n",
+       "                                      │                                    │                                       \n",
+       "                                      └────────────────────────────────────┘                                       \n",
+       "
\n" + ], + "text/plain": [ + " \u001b[35m┌────────────────────────────────────┐\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m__ __ _ _\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m\\ \\ / / | (_)\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m \\ \\_/ /_ _ __| |_ ___ _ __ ___\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m \\ / _` |/ _` | / __| '_ ` _ \\\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m | | (_| | (_| | \\__ \\ | | | | |\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m |_|\\__,_|\\__,_|_|___/_| |_| |_|\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m└────────────────────────────────────┘\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "                                                       Plan                                                        \n",
+       "
\n" + ], + "text/plain": [ + "\n", + " \u001b[1;4mPlan\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "XSHERANC_total at 159 pts                                                                                       \n",
+       "
\n" + ], + "text/plain": [ + "\n", + "\u001b[1;33m • \u001b[0mXSHERANC_total at 159 pts \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "                                                    Calculation                                                    \n",
+       "
\n" + ], + "text/plain": [ + "\n", + " \u001b[1;4mCalculation\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
yadism took off! please stay tuned ...\n",
+       "
\n" + ], + "text/plain": [ + "yadism took off! please stay tuned \u001b[33m...\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": [
+       "\u001b[?25l"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "\u001b[?25h
\n" + ], + "text/plain": [ + "\n", + "\u001b[?25h" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
took 55.93 s\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[36mtook \u001b[0m\u001b[1;36m55.93\u001b[0m\u001b[36m s\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Compute the predictions - slihgtly heavier due to complexity & nb datapoints\n", + "compute_predicionts()" + ] + }, + { + "cell_type": "markdown", + "id": "ee0cb707-eb66-4888-8ad8-142c3556e26f", + "metadata": {}, + "source": [ + "## Loading and comparing to HERA\n", + "\n", + "Now that we have our pre-computed predictions in the form of PineAPPL grid, we can compare the results to the HERA measurements. To do so, we can load the grid and convolute it with a PDF set. As in the previous tutorial we're going to use the NNLO NNPDF4.0 set." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8fa0f803-de73-4737-a40a-7ffeebf6de77", + "metadata": {}, + "outputs": [], + "source": [ + "import lhapdf\n", + "import pineappl" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b631e769-d706-4d9a-ac30-006a24dffca8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LHAPDF 6.5.0 loading /home/tanjona/miniconda3/envs/yadism/share/LHAPDF/NNPDF40_nnlo_as_01180/NNPDF40_nnlo_as_01180_0000.dat\n", + "NNPDF40_nnlo_as_01180 PDF set, member #0, version 1; LHAPDF ID = 331100\n" + ] + } + ], + "source": [ + "# Load only the central member\n", + "pdf = lhapdf.mkPDF(\"NNPDF40_nnlo_as_01180\", 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0e0f5c2e-74ce-45ea-9064-749eb3ad47df", + "metadata": {}, + "outputs": [], + "source": [ + "# Load the pre-computed grid\n", + "grid = pineappl.grid.Grid.read(\"HERA_NC_318GEV_EM_SIGMARED.pineappl.lz4\")\n", + "\n", + "# Convolute with the PDF\n", + "yadism_data = grid.convolute_with_one(2212, pdf.xfxQ2, pdf.alphasQ2)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5995d40f-2e53-4d1d-8d5e-84798e127647", + "metadata": {}, + "outputs": [], + "source": [ + "# Combine the exp measurements and Yadism preds into one table\n", + "data_vs_yadism_df = pd.concat(\n", + " [\n", + " data[\"Q2\"],\n", + " data[\"x\"],\n", + " data[\"Sigma\"],\n", + " pd.DataFrame([yadism_data], index=[\"yadism\"]).T,\n", + " ],\n", + " axis=1,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a9ca7478-6101-458a-8f79-ec039111f640", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def plot_comparisons_q2(df: pd.DataFrame, q2_value: int = 300) -> None:\n", + " fig, ax = plt.subplots(figsize=(5, 3.75), layout=\"tight\")\n", + "\n", + " # Select corresponding Q2 values\n", + " df_q2 = df[df.Q2 == q2_value]\n", + "\n", + " # Plot measurements and yadism preds\n", + " ax.plot(df_q2.x, df_q2[\"Sigma\"], \"o\", label=\"EXP\")\n", + " ax.plot(df_q2.x, df_q2[\"yadism\"], \"rs\", label=\"Yadism\")\n", + "\n", + " ax.set_xlabel(\"x\")\n", + " ax.set_ylabel(\"xsec\")\n", + " ax.legend()\n", + " ax.set_xscale(\"log\")\n", + " ax.set_title(f\"HERA: $Q^2 = {q2_value}~ \\\\mathrm{{GeV}}^2$\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "cde1c144-2195-48d2-ac9c-05b09cb2b088", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_comparisons_q2(data_vs_yadism_df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8bcea746-3151-45c8-a222-3cf4119431c9", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/source/overview/tutorials/getting_started.ipynb b/docs/source/overview/tutorials/getting_started.ipynb new file mode 100644 index 000000000..b9124dda5 --- /dev/null +++ b/docs/source/overview/tutorials/getting_started.ipynb @@ -0,0 +1,679 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bfff8f0c-740e-4177-a642-13e9d0a0cc63", + "metadata": {}, + "source": [ + "# Getting Started\n", + "\n", + "## Installation \n", + "\n", + "In order to start using `yadism`, one first needs to install it and some of its extra-dependencies. The easiest way to install the latest stable version of `yadism` is via `pip` using the following command:\n", + "\n", + "```sh\n", + "pip install 'yadism[mark, box]'\n", + "```\n", + "\n", + "In addition to installing the main `yadism` package, the above command also installs `yadmark` and `yadbox`. `yadmark` is package that provides APIs to perform the benchmark of `yadism` to other DIS codes (e.g. `APFEL`, `APFEL++`, `QCDNUM`). `yadbox` instead provides an interface to `PineAPPL` to store predictions in the form of fast-interpolation grids.\n", + "\n", + "In order to check that `yadism` was installed properly, one can check the version:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ded2fb96-9fe9-4503-8418-bfcfb6d53998", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.0.0'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import yadism\n", + "yadism.__version__" + ] + }, + { + "cell_type": "markdown", + "id": "valuable-theater", + "metadata": {}, + "source": [ + "## Preparing the run cards\n", + "\n", + "Yadism takes as inputs **two runcards** whose representations are given in terms of python dictionaries. That is, one needs:\n", + "- an **observable card** which contains the details on the observable to be computed\n", + "- a **theory card** which contains the various theory settings to compute the observable in question\n", + "\n", + "Below is an example of an observable card in which the meaning of each key is also specified:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "announced-petite", + "metadata": {}, + "outputs": [], + "source": [ + "observable_card = {\n", + " # Process type: \"EM\", \"NC\", \"CC\"\n", + " \"prDIS\": \"NC\",\n", + " # Projectile: \"electron\", \"positron\", \"neutrino\", \"antineutrino\"\n", + " \"ProjectileDIS\": \"electron\",\n", + " # Scattering target: \"proton\", \"neutron\", \"isoscalar\", \"lead\", \"iron\", \"neon\" or \"marble\"\n", + " \"TargetDIS\": \"proton\",\n", + " # Interpolation: if True use log interpolation\n", + " \"interpolation_is_log\": True,\n", + " # Interpolation: polynomial degree, 1 = linear, ...\n", + " \"interpolation_polynomial_degree\": 4,\n", + " # Interpolation: xgrid values\n", + " # Note: for illustrative purposes the grid is chosen very small here\n", + " \"interpolation_xgrid\": [1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1.0],\n", + " # Observables configurations\n", + " \"observables\": {\n", + " \"XSHERANCAVG_charm\": [\n", + " {\n", + " \"y\": 0.8240707777909629,\n", + " \"x\": 3e-05,\n", + " \"Q2\": 2.5,\n", + " },\n", + " {\n", + " \"y\": 0.3531731904818413,\n", + " \"x\": 7e-05,\n", + " \"Q2\": 2.5,\n", + " },\n", + " # Add here the kinematics of other datapoints\n", + " ],\n", + " # Potentially include observables other than XSHERANCAVG_charm,\n", + " # each of them has to be: TYPE_heaviness, where heaviness can take:\n", + " # \"charm\", \"bottom\", \"top\", \"total\" or \"light\".\n", + " },\n", + " # Projectile polarization faction, float from 0 to 1.\n", + " \"PolarizationDIS\": 0.0,\n", + " # Exchanged boson propagator correction\n", + " \"PropagatorCorrection\": 0.0,\n", + " # Restrict boson coupling to a single parton ? Monte Carlo PID or None for all partons\n", + " \"NCPositivityCharge\": None,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "dc1b79fa-7d14-4ed6-a8ae-0a588ebe5582", + "metadata": {}, + "source": [ + "The `observables` key in the `observable_card` (which is also a dictionary) can contain multiple elements whose keys must represent structure functions or cross-sections. For the list of available observables, refer to the following [part](https://yadism.readthedocs.io/en/latest/theory/intro.html#) of the documentation.\n", + "\n", + "Similarly, below is an example of a theory card:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "90df79a9-31cb-40db-ac95-0b88469c1723", + "metadata": {}, + "outputs": [], + "source": [ + "theory_card = {\n", + " # QCD perturbative order\n", + " \"PTO\": 2, # perturbative order in alpha_s: 0 = LO (alpha_s^0), 1 = NLO (alpha_s^1) ...\n", + " \n", + " # SM parameters and masses\n", + " \"CKM\": \"0.97428 0.22530 0.003470 0.22520 0.97345 0.041000 0.00862 0.04030 0.999152\", # CKM matrix elements\n", + " \"GF\": 1.1663787e-05, # [GeV^-2] Fermi coupling constant\n", + " \"MP\": 0.938, # [GeV] proton mass\n", + " \"MW\": 80.398, # [GeV] W boson mass\n", + " \"MZ\": 91.1876, # [GeV] Z boson mass\n", + " \"alphaqed\": 0.007496252, # alpha_em value\n", + " \"kcThr\": 1.0, # ratio of the charm matching scale over the charm mass\n", + " \"kbThr\": 1.0, # ratio of the bottom matching scale over the bottom mass\n", + " \"ktThr\": 1.0, # ratio of the top matching scale over the top mass\n", + " \"mc\": 1.51, # [GeV] charm mass\n", + " \"mb\": 4.92, # [GeV] bottom mass\n", + " \"mt\": 172.5, # [GeV] top mass\n", + " \n", + " # Flavor number scheme settings\n", + " \"FNS\": \"FFNS\", # Flavour Number Scheme, options: \"FFNS\", \"FFN0\", \"ZM-VFNS\"\n", + " \"NfFF\": 4, # (fixed) number of running flavors, only for FFNS or FFN0 schemes\n", + " \"Q0\": 1.65, # [GeV] reference scale for the flavor patch determination\n", + " \"nf0\": 4, # number of active flavors at the Q0 reference scale\n", + " \n", + " # Alphas settings and boundary conditions\n", + " \"Qref\": 91.2, # [GeV] reference scale for the alphas value\n", + " \"nfref\": 5, # number of active flavors at the reference scale Qref\n", + " \"alphas\": 0.118, # alphas value at the reference scale\n", + " \"MaxNfAs\": 5, # maximum number of flavors in running of strong coupling\n", + " \"QED\": 0, # QED correction to running of strong coupling: 0 = disabled, 1 = allowed\n", + " \n", + " # Scale Variations \n", + " \"XIF\": 1.0, # ratio of factorization scale over the hard scattering scale\n", + " \"XIR\": 1.0, # ratio of renormalization scale over the hard scattering scale\n", + " \n", + " # Other settings\n", + " \"IC\": 1, # 0 = perturbative charm only, 1 = intrinsic charm allowed \n", + " \"TMC\": 1, # include target mass corrections: 0 = disabled, 1 = leading twist, 2 = higher twist approximated, 3 = higher twist exact\n", + " \"n3lo_cf_variation\": 0, # N3LO coefficient functions variation: -1 = lower bound, 0 = central , 1 = upper bound\n", + " \n", + " # Other EKO settings, not relevant for Yadism\n", + " \"HQ\": \"POLE\", # heavy quark mass scheme (not yet implemented in yadism)\n", + " \"MaxNfPdf\": 5, # maximum number of flavors in running of PDFs (ignored by yadism)\n", + " \"ModEv\": \"EXA\", # evolution solver for PDFs (ignored by yadism)\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "169b82a0-abdd-4687-9ffe-9df38446a550", + "metadata": {}, + "source": [ + "Note that a template observable card is provided by `yadmark` and contains the default `yadism` values. One can thus just start from the default card and overwrite the values." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "246f1d7a-e7e3-48ab-9bf2-44c8352adc39", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"NCPositivityCharge\": null,\n", + " \"PolarizationDIS\": 0,\n", + " \"ProjectileDIS\": \"electron\",\n", + " \"PropagatorCorrection\": 0,\n", + " \"TargetDIS\": \"proton\",\n", + " \"interpolation_is_log\": true,\n", + " \"interpolation_polynomial_degree\": 4,\n", + " \"interpolation_xgrid\": [\n", + " 1e-07,\n", + " 1.6102620275609392e-07,\n", + " 2.592943797404667e-07,\n", + " 4.1753189365604003e-07,\n", + " 6.723357536499335e-07,\n", + " 1.0826367338740541e-06,\n", + " 1.7433288221999873e-06,\n", + " 2.8072162039411756e-06,\n", + " 4.520353656360241e-06,\n", + " 7.2789538439831465e-06,\n", + " 1.1721022975334793e-05,\n", + " 1.8873918221350995e-05,\n", + " 3.039195382313195e-05,\n", + " 4.893900918477499e-05,\n", + " 7.880462815669905e-05,\n", + " 0.0001268961003167922,\n", + " 0.00020433597178569417,\n", + " 0.00032903445623126676,\n", + " 0.0005298316906283707,\n", + " 0.0008531678524172806,\n", + " 0.0013738237958832637,\n", + " 0.00221221629107045,\n", + " 0.003562247890262444,\n", + " 0.005736152510448681,\n", + " 0.009236708571873866,\n", + " 0.014873521072935119,\n", + " 0.02395026619987486,\n", + " 0.03856620421163472,\n", + " 0.06210169418915616,\n", + " 0.1,\n", + " 0.1473684210526316,\n", + " 0.19473684210526315,\n", + " 0.24210526315789474,\n", + " 0.2894736842105263,\n", + " 0.33684210526315794,\n", + " 0.38421052631578945,\n", + " 0.43157894736842106,\n", + " 0.4789473684210527,\n", + " 0.5263157894736842,\n", + " 0.5736842105263158,\n", + " 0.6210526315789474,\n", + " 0.6684210526315789,\n", + " 0.7157894736842105,\n", + " 0.7631578947368421,\n", + " 0.8105263157894737,\n", + " 0.8578947368421053,\n", + " 0.9052631578947369,\n", + " 0.9526315789473684,\n", + " 1.0\n", + " ],\n", + " \"observables\": {},\n", + " \"prDIS\": \"EM\"\n", + "}\n" + ] + } + ], + "source": [ + "import json # just used for pretty-printing\n", + "from yadmark.data.observables import default_card # imports the default yadism observable card\n", + "\n", + "print(json.dumps(default_card, sort_keys=False, indent=4))" + ] + }, + { + "cell_type": "markdown", + "id": "5083afea-4ac9-483d-93b9-f0473cbc46b0", + "metadata": {}, + "source": [ + "## Computing predictions\n", + "\n", + "Now that we have defined our observable and theory, we can now compute the corresponding preditions. This can be easily done by running the following:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b7d95bf6-4536-41a5-9505-07a8743e5f6e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
                                      ┌────────────────────────────────────┐                                       \n",
+       "                                      │                                    │                                       \n",
+       "                                      │ __     __       _ _                │                                       \n",
+       "                                      │ \\ \\   / /      | (_)               │                                       \n",
+       "                                      │  \\ \\_/ /_ _  __| |_ ___ _ __ ___   │                                       \n",
+       "                                      │   \\   / _` |/ _` | / __| '_ ` _ \\  │                                       \n",
+       "                                      │    | | (_| | (_| | \\__ \\ | | | | | │                                       \n",
+       "                                      │    |_|\\__,_|\\__,_|_|___/_| |_| |_| │                                       \n",
+       "                                      │                                    │                                       \n",
+       "                                      └────────────────────────────────────┘                                       \n",
+       "
\n" + ], + "text/plain": [ + " \u001b[35m┌────────────────────────────────────┐\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m__ __ _ _\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m\\ \\ / / | (_)\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m \\ \\_/ /_ _ __| |_ ___ _ __ ___\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m \\ / _` |/ _` | / __| '_ ` _ \\\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m | | (_| | (_| | \\__ \\ | | | | |\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m |_|\\__,_|\\__,_|_|___/_| |_| |_|\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m│\u001b[0m\u001b[35m \u001b[0m\u001b[35m│\u001b[0m \n", + " \u001b[35m└────────────────────────────────────┘\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "                                                       Plan                                                        \n",
+       "
\n" + ], + "text/plain": [ + "\n", + " \u001b[1;4mPlan\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "XSHERANCAVG_charm at 2 pts                                                                                      \n",
+       "
\n" + ], + "text/plain": [ + "\n", + "\u001b[1;33m • \u001b[0mXSHERANCAVG_charm at 2 pts \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "                                                    Calculation                                                    \n",
+       "
\n" + ], + "text/plain": [ + "\n", + " \u001b[1;4mCalculation\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
yadism took off! please stay tuned ...\n",
+       "
\n" + ], + "text/plain": [ + "yadism took off! please stay tuned \u001b[33m...\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": [
+       "\u001b[?25l"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "\u001b[?25h
\n" + ], + "text/plain": [ + "\n", + "\u001b[?25h" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
took 0.36 s\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[36mtook \u001b[0m\u001b[1;36m0.36\u001b[0m\u001b[36m s\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import warnings\n", + "\n", + "with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\") # skip noisy warnings\n", + " out = yadism.run_yadism(theory_card, observable_card)" + ] + }, + { + "cell_type": "markdown", + "id": "a1d79202-30d1-465f-9ce2-008fc760ebf1", + "metadata": {}, + "source": [ + "`out` is an object of type `yadism.output.Output` from which one can perform various operations. In our example, we are interested in convoluting it with a PDF set in the [LHAPDF](https://lhapdf.hepforge.org/) format.\n", + "\n", + "To do so, first we need to import the `lhapdf` package. For this example, we will use the NNLO NNPDF4.0 set: `NNPDF40_nnlo_as_01180`." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bc6f3aac-802b-4073-9e6a-e18e54f3ef85", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LHAPDF 6.5.0 loading /home/tanjona/miniconda3/envs/yadism/share/LHAPDF/NNPDF40_nnlo_as_01180/NNPDF40_nnlo_as_01180_0000.dat\n", + "NNPDF40_nnlo_as_01180 PDF set, member #0, version 1; LHAPDF ID = 331100\n" + ] + } + ], + "source": [ + "import lhapdf\n", + "\n", + "# load the PDF set\n", + "pdf = lhapdf.mkPDF(\"NNPDF40_nnlo_as_01180\")" + ] + }, + { + "cell_type": "markdown", + "id": "359f3118-a317-4345-8e73-bc810b92ea92", + "metadata": {}, + "source": [ + "The convolution can simply be performed as follow:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "9b983dd8-4724-439c-bdab-773879308985", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
[13:09:24] INFO     Atlas [0.00e+00 - 2.28e+00 - 2.42e+01 - 2.98e+04 - inf], ref=8317.44 @ 5        matchings.py:69\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[13:09:24]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=490630;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=61240;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     Strong Coupling: a_s(µ_R^2=8317.440000)^(nf=5)=0.009390=0.118000/()          couplings.py:458\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Strong Coupling: \u001b[1;35ma_s\u001b[0m\u001b[1m(\u001b[0mµ_R^\u001b[1;36m2\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.440000\u001b[0m\u001b[1m)\u001b[0m^\u001b[1m(\u001b[0m\u001b[33mnf\u001b[0m=\u001b[1;36m5\u001b[0m\u001b[1m)\u001b[0m=\u001b[1;36m0.\u001b[0m\u001b[1;36m009390\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.118000\u001b[0m/\u001b[1m(\u001b[0m4π\u001b[1m)\u001b[0m \u001b]8;id=709662;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py\u001b\\\u001b[2mcouplings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=838466;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/couplings.py#458\u001b\\\u001b[2m458\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           INFO     Atlas [0.00e+00 - 2.28e+00 - 2.42e+01 - 2.98e+04 - inf], ref=8317.44 @ 5        matchings.py:69\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Atlas \u001b[1m[\u001b[0m\u001b[1;36m0.00e+00\u001b[0m - \u001b[1;36m2.28e+00\u001b[0m - \u001b[1;36m2.42e+01\u001b[0m - \u001b[1;36m2.98e+04\u001b[0m - inf\u001b[1m]\u001b[0m, \u001b[33mref\u001b[0m=\u001b[1;36m8317\u001b[0m\u001b[1;36m.44\u001b[0m @ \u001b[1;36m5\u001b[0m \u001b]8;id=369258;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py\u001b\\\u001b[2mmatchings.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=408583;file:///home/tanjona/miniconda3/envs/yadism/lib/python3.10/site-packages/eko/matchings.py#69\u001b\\\u001b[2m69\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "values = out.apply_pdf(pdf)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a56aee13-b08b-492f-80d0-3487bea74318", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"XSHERANCAVG_charm\": [\n", + " {\n", + " \"x\": 3e-05,\n", + " \"Q2\": 2.5,\n", + " \"result\": -0.9959496128078331,\n", + " \"error\": 1.281070214968848e-08,\n", + " \"y\": 0.8240707777909629\n", + " },\n", + " {\n", + " \"x\": 7e-05,\n", + " \"Q2\": 2.5,\n", + " \"result\": -0.7710853256052412,\n", + " \"error\": 2.3298246570353407e-08,\n", + " \"y\": 0.3531731904818413\n", + " }\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "print(json.dumps(values, sort_keys=False, indent=4))" + ] + }, + { + "cell_type": "markdown", + "id": "2c0ffc4a-bb6b-4d89-9a01-1d2c93e49995", + "metadata": {}, + "source": [ + "We can see that `values` is a dictionary containing one element whose key is the name of the observable (as we defined above). If we had defined two observables in the `observable_card`, `values` would also contain two elements." + ] + }, + { + "cell_type": "markdown", + "id": "519b8537-9c09-4a66-bf44-ff47e1879449", + "metadata": {}, + "source": [ + "## Dumping predictions into fast-interpolation grids\n", + "\n", + "We learned from the previous sections how to compute an observable using `yadism` and now we'll see how to tabulate the output of `yadism.run_yadism` into a fast-interpolation table. This has the convenient advantage that one can re-use the same computations without the need to re-run `yadism` (to convolute with different PDF sets for example).\n", + "\n", + "One of the main advantage of `yadism` is its interface with PineAPPL - a library providing fast interpolation into a unique format suitable for various HEP-related softwares. \n", + "\n", + "Each observable defined in `observable_card` can be dumped into its own fast-interpolation grid. The steps are as follow:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7f914e87-bb05-47c7-a850-11a18e6cfdb5", + "metadata": {}, + "outputs": [], + "source": [ + "# import function that dumps the predictions into a Pineappl format\n", + "from yadbox.export import dump_pineappl_to_file\n", + "\n", + "# Extract the names of the different observables (in case there are many)\n", + "list_observables = observable_card['observables'].keys()\n", + "\n", + "# Dump each observable into a PineAPPL grid\n", + "for obs in list_observables:\n", + " dump_pineappl_to_file(out, f\"outputgrid_{obs}.pineappl.lz4\", f\"{obs}\")" + ] + }, + { + "cell_type": "markdown", + "id": "7dffb5fd-9e84-4982-b9d4-a4f077a573e8", + "metadata": {}, + "source": [ + "Our PineAPPL grid has now been written on the disk. Note that the extension has to be `pineappl.lz4`." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "703b29ce-9068-44af-b72b-1144bad805e6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "outputgrid_XSHERANCAVG_charm.pineappl.lz4\n" + ] + } + ], + "source": [ + "!ls outputgrid_*" + ] + }, + { + "cell_type": "markdown", + "id": "0c887943-be93-4a0f-815b-1317ad04db2c", + "metadata": {}, + "source": [ + "To load the pre-computed predictions, we need to import the `pineappl` package. Given that `pineappl` is a dependency of `yadism` it was already installed so we don't have to install it again." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ebf75d0e-965a-46b1-a3a3-e20eeb1d5e15", + "metadata": {}, + "outputs": [], + "source": [ + "# imports the pineappl package\n", + "import pineappl\n", + "\n", + "# Read the pineappl grid saved earlier\n", + "grid = pineappl.grid.Grid.read(\"./outputgrid_XSHERANCAVG_charm.pineappl.lz4\")\n", + "\n", + "# Convolute the grid with the same PDF as above\n", + "results = grid.convolute_with_one(2212, pdf.xfxQ2, pdf.alphasQ2)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "fc268946-3f84-4f63-be98-a899adf9512c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-0.98699882 -0.7640712 ]\n" + ] + } + ], + "source": [ + "print(results)" + ] + }, + { + "cell_type": "markdown", + "id": "c114b40d-9a40-4d73-8609-ab8761fe37a0", + "metadata": {}, + "source": [ + "As we can see, we get similar results to what we got before. Now, the `results` is just an array of two dimension corresponding to the different kinematic values." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "yadism", + "language": "python", + "name": "yadism" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/source/overview/tutorials/tutorials.rst b/docs/source/overview/tutorials/tutorials.rst new file mode 100644 index 000000000..37cec7167 --- /dev/null +++ b/docs/source/overview/tutorials/tutorials.rst @@ -0,0 +1,16 @@ +Tutorials +========= + +The following tutorials provide a brief introduction on some of the main features of `yadism`. +These tutorials have four main objectives, namely to introduce the user on how to: + +* prepare the observable and theory cards required for any yadism computationcompute +* compute observables by convoluting yadism predictions to PDFs (Parton Distribution Functions) +* tabulate the yadism predictions into fast-interpolation grids for later use +* benchmark yadism with other DIS programs + +.. toctree:: + :hidden: + + Getting Started + Compare to Data From 499d14ab80bc63ffb140c2e08db6a9e3105d463c Mon Sep 17 00:00:00 2001 From: Tanjona Rabemananjara Date: Thu, 25 Jan 2024 11:50:06 +0100 Subject: [PATCH 11/18] remove benchmark part w/ other programs for the time being --- docs/source/overview/tutorials/tutorials.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/source/overview/tutorials/tutorials.rst b/docs/source/overview/tutorials/tutorials.rst index 37cec7167..48831d03a 100644 --- a/docs/source/overview/tutorials/tutorials.rst +++ b/docs/source/overview/tutorials/tutorials.rst @@ -7,7 +7,6 @@ These tutorials have four main objectives, namely to introduce the user on how t * prepare the observable and theory cards required for any yadism computationcompute * compute observables by convoluting yadism predictions to PDFs (Parton Distribution Functions) * tabulate the yadism predictions into fast-interpolation grids for later use -* benchmark yadism with other DIS programs .. toctree:: :hidden: From 21a46cda22228faca5d93d4a464ec0df8ea1a12d Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Thu, 25 Jan 2024 16:08:33 +0200 Subject: [PATCH 12/18] Improve data tutorial --- .../overview/tutorials/compare_data.ipynb | 30 +++++++++---------- docs/source/overview/tutorials/tutorials.rst | 6 ++-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/source/overview/tutorials/compare_data.ipynb b/docs/source/overview/tutorials/compare_data.ipynb index e088a001a..b35af40c2 100644 --- a/docs/source/overview/tutorials/compare_data.ipynb +++ b/docs/source/overview/tutorials/compare_data.ipynb @@ -7,7 +7,8 @@ "source": [ "# Compare to Experimental Data\n", "\n", - "In the following section, we'll show how to compare `yadism` predictions to an experimentally measured observable. As a test case, we use the combined measurement of two experioments [H1](https://en.wikipedia.org/wiki/H1_(particle_detector)) and [ZEUS](https://en.wikipedia.org/wiki/ZEUS_(particle_detector)) for the collision of an electron with a proton at a center of mass energy of $\\sqrt{s} = 318~\\rm{GeV}$.\n", + "We show how to compare `yadism` predictions to an HERA measurement (see [here](https://www.desy.de/h1zeus/herapdf20) for an overview),\n", + "specifically [this dataset](https://www.hepdata.net/record/ins1377206?version=1&table=Table%205).\n", "\n", "## Preparing the dataset\n", "\n", @@ -166,7 +167,7 @@ "source": [ "## Computing the yadism predictions\n", "\n", - "We are now going to compute the `yadism` predictions at the same kinematic points as provided by the experimental measurements. In terms of theory, we are going to use the NNLO predictions with Fixed-Flavour Number Schemes (FFNS). As we saw in the previous tutorial, we first need to prepare the theory and observable cards." + "We are now going to compute the `yadism` predictions at the same kinematic points as provided by the experimental measurements. In terms of theory, we are going to use the NNLO predictions with a Fixed-Flavour Number Schemes (FFNS). First, we need to prepare the theory and observable cards." ] }, { @@ -178,7 +179,6 @@ "source": [ "import warnings\n", "import yadism\n", - "\n", "from eko import interpolation\n", "from yadbox.export import dump_pineappl_to_file" ] @@ -275,7 +275,7 @@ " axis=1,\n", " )\n", "\n", - " # Update the observable &b kinematics in the `observable_card`\n", + " # Update the observable & kinematics in the `observable_card`\n", " obs_def = {\n", " \"observables\" : {\"XSHERANC_total\": list(curobs.to_dict().values())}\n", " } # As we saw in the previous tutorial, it has to be a dict[dict[list]]\n", @@ -427,7 +427,7 @@ } ], "source": [ - "# Compute the predictions - slihgtly heavier due to complexity & nb datapoints\n", + "# Compute the predictions - slihgtly heavier due to complexity & number of datapoints\n", "compute_predicionts()" ] }, @@ -438,7 +438,7 @@ "source": [ "## Loading and comparing to HERA\n", "\n", - "Now that we have our pre-computed predictions in the form of PineAPPL grid, we can compare the results to the HERA measurements. To do so, we can load the grid and convolute it with a PDF set. As in the previous tutorial we're going to use the NNLO NNPDF4.0 set." + "Now, that we have our pre-computed predictions in the form of a PineAPPL grid, we can compare the results to the HERA measurements. To do so, we can load the grid and convolute it with a PDF set, specifically the NNLO NNPDF4.0 set." ] }, { @@ -505,6 +505,14 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "16e935e5", + "metadata": {}, + "source": [ + "Finally, we can compare our theory predictions and the experimental data graphically." + ] + }, { "cell_type": "code", "execution_count": 12, @@ -514,7 +522,7 @@ "source": [ "import matplotlib.pyplot as plt\n", "\n", - "def plot_comparisons_q2(df: pd.DataFrame, q2_value: int = 300) -> None:\n", + "def plot_comparisons_q2(df: pd.DataFrame, q2_value: float = 300) -> None:\n", " fig, ax = plt.subplots(figsize=(5, 3.75), layout=\"tight\")\n", "\n", " # Select corresponding Q2 values\n", @@ -551,14 +559,6 @@ "source": [ "plot_comparisons_q2(data_vs_yadism_df)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8bcea746-3151-45c8-a222-3cf4119431c9", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/docs/source/overview/tutorials/tutorials.rst b/docs/source/overview/tutorials/tutorials.rst index 48831d03a..1e67957d5 100644 --- a/docs/source/overview/tutorials/tutorials.rst +++ b/docs/source/overview/tutorials/tutorials.rst @@ -2,10 +2,10 @@ Tutorials ========= The following tutorials provide a brief introduction on some of the main features of `yadism`. -These tutorials have four main objectives, namely to introduce the user on how to: +These tutorials show how to: -* prepare the observable and theory cards required for any yadism computationcompute -* compute observables by convoluting yadism predictions to PDFs (Parton Distribution Functions) +* prepare the observable and theory cards required for any yadism computation +* compute observables by convoluting yadism predictions to |PDF| * tabulate the yadism predictions into fast-interpolation grids for later use .. toctree:: From 96c7b3550ab36d373fa1769dae762e702a5b9e48 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Thu, 25 Jan 2024 16:11:47 +0200 Subject: [PATCH 13/18] Fix typo --- docs/source/overview/tutorials/tutorials.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/overview/tutorials/tutorials.rst b/docs/source/overview/tutorials/tutorials.rst index 1e67957d5..fc7bd26a3 100644 --- a/docs/source/overview/tutorials/tutorials.rst +++ b/docs/source/overview/tutorials/tutorials.rst @@ -5,7 +5,7 @@ The following tutorials provide a brief introduction on some of the main feature These tutorials show how to: * prepare the observable and theory cards required for any yadism computation -* compute observables by convoluting yadism predictions to |PDF| +* compute observables by convoluting yadism predictions with a |PDF| * tabulate the yadism predictions into fast-interpolation grids for later use .. toctree:: From 4fccb875ee6780804302d0c1b48baa7d7f813dda Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Thu, 25 Jan 2024 16:21:33 +0200 Subject: [PATCH 14/18] Add more fixes for tutorials --- docs/source/overview/tutorials/.gitignore | 2 ++ .../overview/tutorials/compare_data.ipynb | 32 +++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 docs/source/overview/tutorials/.gitignore diff --git a/docs/source/overview/tutorials/.gitignore b/docs/source/overview/tutorials/.gitignore new file mode 100644 index 000000000..819863bc5 --- /dev/null +++ b/docs/source/overview/tutorials/.gitignore @@ -0,0 +1,2 @@ +*.pineappl.lz4 +*.dat diff --git a/docs/source/overview/tutorials/compare_data.ipynb b/docs/source/overview/tutorials/compare_data.ipynb index b35af40c2..4f910feef 100644 --- a/docs/source/overview/tutorials/compare_data.ipynb +++ b/docs/source/overview/tutorials/compare_data.ipynb @@ -167,7 +167,7 @@ "source": [ "## Computing the yadism predictions\n", "\n", - "We are now going to compute the `yadism` predictions at the same kinematic points as provided by the experimental measurements. In terms of theory, we are going to use the NNLO predictions with a Fixed-Flavour Number Schemes (FFNS). First, we need to prepare the theory and observable cards." + "We are now going to compute the `yadism` predictions at the same kinematic points as provided by the experimental measurements. First, we need to prepare the theory and observable cards." ] }, { @@ -398,15 +398,29 @@ "metadata": {}, "output_type": "display_data" }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "018cd3df32ff4caebcd78bafd13b9a27", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ "
\n",
-       "\u001b[?25h
\n" + "\n" ], "text/plain": [ "\n", - "\u001b[?25h" + "\u001b[?25h\r\u001b[1A\u001b[2K" ] }, "metadata": {}, @@ -415,11 +429,11 @@ { "data": { "text/html": [ - "
took 55.93 s\n",
+       "
took 122.32 s\n",
        "
\n" ], "text/plain": [ - "\u001b[36mtook \u001b[0m\u001b[1;36m55.93\u001b[0m\u001b[36m s\u001b[0m\n" + "\u001b[36mtook \u001b[0m\u001b[1;36m122.32\u001b[0m\u001b[36m s\u001b[0m\n" ] }, "metadata": {}, @@ -462,7 +476,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "LHAPDF 6.5.0 loading /home/tanjona/miniconda3/envs/yadism/share/LHAPDF/NNPDF40_nnlo_as_01180/NNPDF40_nnlo_as_01180_0000.dat\n", + "LHAPDF 6.4.0 loading /home/felix/local/share/LHAPDF/NNPDF40_nnlo_as_01180/NNPDF40_nnlo_as_01180_0000.dat\n", "NNPDF40_nnlo_as_01180 PDF set, member #0, version 1; LHAPDF ID = 331100\n" ] } @@ -547,7 +561,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -563,9 +577,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "yadism-QljnF84o-py3.10", "language": "python", - "name": "python3" + "name": "yadism-qljnf84o-py3.10" }, "language_info": { "codemirror_mode": { From 3274964b53045729ef315c7bc0838c2b168bdaf3 Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Thu, 25 Jan 2024 16:43:05 +0200 Subject: [PATCH 15/18] Change data tutorial to ZM --- .../overview/tutorials/compare_data.ipynb | 64 +++++++++++-------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/docs/source/overview/tutorials/compare_data.ipynb b/docs/source/overview/tutorials/compare_data.ipynb index 4f910feef..59ee6aaf3 100644 --- a/docs/source/overview/tutorials/compare_data.ipynb +++ b/docs/source/overview/tutorials/compare_data.ipynb @@ -22,7 +22,7 @@ "metadata": {}, "outputs": [], "source": [ - "!wget -q https://data.nnpdf.science/yadism/HERA12B2_NCem.dat" + "!wget -q -N https://data.nnpdf.science/yadism/HERA12B2_NCem.dat" ] }, { @@ -186,34 +186,13 @@ { "cell_type": "code", "execution_count": 4, - "id": "ff60baae-65ee-4544-af2d-3c7a23a5734d", - "metadata": {}, - "outputs": [], - "source": [ - "observables_card = {\n", - " \"PolarizationDIS\": 0.0,\n", - " \"ProjectileDIS\": \"electron\",\n", - " \"PropagatorCorrection\": 0.0,\n", - " \"TargetDIS\": \"proton\",\n", - " \"interpolation_is_log\": True,\n", - " \"interpolation_polynomial_degree\": 4,\n", - " \"interpolation_xgrid\": interpolation.lambertgrid(60).tolist(),\n", - " \"observables\": {\"XSHERANC_total\": []},\n", - " \"prDIS\": \"NC\",\n", - " \"NCPositivityCharge\": None,\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 5, "id": "5920d43e-b8b4-496a-97c8-98b5c2325716", "metadata": {}, "outputs": [], "source": [ "theory_card = {\n", " \"PTO\": 2,\n", - " \"FNS\": \"FONLL-C\",\n", + " \"FNS\": \"ZM-VFNS\",\n", " \"DAMP\": 0,\n", " \"IC\": 1,\n", " \"IB\": 0,\n", @@ -254,12 +233,33 @@ " \"global_nx\": 0,\n", " \"EScaleVar\": 1,\n", " \"kDIScThr\": 1.0,\n", - " \"kDISbThr\": 4.0,\n", + " \"kDISbThr\": 1.0,\n", " \"kDIStThr\": 1.0,\n", " \"n3lo_cf_variation\": 0,\n", "}" ] }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ff60baae-65ee-4544-af2d-3c7a23a5734d", + "metadata": {}, + "outputs": [], + "source": [ + "observables_card = {\n", + " \"PolarizationDIS\": 0.0,\n", + " \"ProjectileDIS\": \"electron\",\n", + " \"PropagatorCorrection\": 0.0,\n", + " \"TargetDIS\": \"proton\",\n", + " \"interpolation_is_log\": True,\n", + " \"interpolation_polynomial_degree\": 4,\n", + " \"interpolation_xgrid\": interpolation.lambertgrid(60).tolist(),\n", + " \"observables\": {\"XSHERANC_total\": []},\n", + " \"prDIS\": \"NC\",\n", + " \"NCPositivityCharge\": None,\n", + "}" + ] + }, { "cell_type": "code", "execution_count": 6, @@ -401,7 +401,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "018cd3df32ff4caebcd78bafd13b9a27", + "model_id": "b913a8eaf91d4163baef0654dc9c0a8f", "version_major": 2, "version_minor": 0 }, @@ -429,11 +429,11 @@ { "data": { "text/html": [ - "
took 122.32 s\n",
+       "
took 86.98 s\n",
        "
\n" ], "text/plain": [ - "\u001b[36mtook \u001b[0m\u001b[1;36m122.32\u001b[0m\u001b[36m s\u001b[0m\n" + "\u001b[36mtook \u001b[0m\u001b[1;36m86.98\u001b[0m\u001b[36m s\u001b[0m\n" ] }, "metadata": {}, @@ -561,7 +561,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -573,6 +573,14 @@ "source": [ "plot_comparisons_q2(data_vs_yadism_df)" ] + }, + { + "cell_type": "markdown", + "id": "6eeb13ce", + "metadata": {}, + "source": [ + "Note that we are using the ZM-VFNS here, so we don't expect perfect agreement as heavy quark effects are only entering through the PDF evolution." + ] } ], "metadata": { From 387795b4af5646164594fedec0dcf25e3a9c9b6c Mon Sep 17 00:00:00 2001 From: Felix Hekhorn Date: Fri, 26 Jan 2024 10:58:44 +0200 Subject: [PATCH 16/18] Add FFN0 to docs --- docs/source/shared/abbreviations.rst | 4 ++++ docs/source/theory/fns.rst | 23 +++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/docs/source/shared/abbreviations.rst b/docs/source/shared/abbreviations.rst index 3afcf2af1..2a4e7657c 100644 --- a/docs/source/shared/abbreviations.rst +++ b/docs/source/shared/abbreviations.rst @@ -141,6 +141,10 @@ eko +.. |pineko| raw:: html + + pineko + .. |banana| raw:: html banana diff --git a/docs/source/theory/fns.rst b/docs/source/theory/fns.rst index 9ff3c9cff..14ac5c58f 100644 --- a/docs/source/theory/fns.rst +++ b/docs/source/theory/fns.rst @@ -28,6 +28,7 @@ unpolarized :ref:`kinds`). FFNS ---- + As the name |FFNS| suggests we are considering a fixed number of flavors :math:`n_f=n_l+1` with :math:`n_l` light flavors and **1 (and only 1) heavy flavor** with a finite mass :math:`m`. The number of light quarks :math:`n_l` is @@ -119,12 +120,26 @@ This scheme is adequate for :math:`Q^2\gg m^2`. patches in which :math:`n_f` is constant (and they are of course different from the quark masses, that are always considered to be zero or infinite). +FFN0 +---- + +This is the high-virtuality limit :math:`Q^2 \gg m^2` of the |FFNS|, where only the +collinear logs :math:`\log(Q^2/m^2)` are retained, but all power-like heavy quark mass +corrections are neglected. These collinear logs are the finite expansion of the +|DGLAP| evolution if the heavy quark would be considered massless. Thus these +terms are the overlap between the |FFNS| using :math:`n_l` light quarks and one +heavy quark and |FFNS| using :math:`n_l+1` light quarks. +These terms are needed in the construction of the FONLL scheme :cite:`forte-fonll`. + + FONLL ----- -| FONLL :cite:`forte-fonll` is a |GM-VFNS| that includes parts of the |DGLAP| equations into the - matching conditions. -| That is: two different schemes are considered, and they are matched at a given - scale, accounting for the resummation of collinear logarithms. + +FONLL :cite:`forte-fonll` is a |GM-VFNS| that includes parts of the |DGLAP| equations into the +matching conditions, i.e., two different schemes are considered, and they are matched at a given +scale, accounting for the resummation of collinear logarithms. +Hence, FONLL relies on both coefficient functions and evolution kernels, so yadism is not +solely responsible for the scheme, but also |eko| and |pineko|. In the original paper the prescription is only presented for the charm contributions, but we extend it here to an arbitrary quark. From b4df4527b4a2439a22bef50cc4d646526653729f Mon Sep 17 00:00:00 2001 From: RoyStegeman Date: Fri, 26 Jan 2024 11:21:01 +0000 Subject: [PATCH 17/18] tiny changes to docs --- docs/source/dev-tools/benchmarks.rst | 10 ++++----- .../overview/tutorials/getting_started.ipynb | 22 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/source/dev-tools/benchmarks.rst b/docs/source/dev-tools/benchmarks.rst index 09706a53d..275923c14 100644 --- a/docs/source/dev-tools/benchmarks.rst +++ b/docs/source/dev-tools/benchmarks.rst @@ -137,16 +137,16 @@ APFEL++ ------- -|APFEL++| is a C++ rewriting of the Fortran 77 evolution code |APFEL|. However, |APFEL++| is based on a completely new code design and -guarantees a better performance along with a more optimal memory management. +|APFEL++| is a C++ rewriting of the Fortran 77 evolution code |APFEL|. However, |APFEL++| is based on a completely new code design and +guarantees a better performance along with a more optimal memory management. |APFEL++| is suitable for a wide range of tasks: from the solution of the DGLAP evolution equations to the computation of DIS -and single-inclusive-annihilation cross sections. +and single-inclusive-annihilation cross sections. -|APFEL++| is also currently interfaced to PARTONS, a software dedicated to the phenomenology of Generalised Parton Distributions (GPDs) and TMDs, +|APFEL++| is also currently interfaced to PARTONS, a software dedicated to the phenomenology of Generalised Parton Distributions (GPDs) and TMDs, and to xFitter. SF in APFEL++ ~~~~~~~~~~~~~ -The |APFEL++| definitions follows the one of |APFEL| +The |APFEL++| definitions follow the ones of |APFEL| diff --git a/docs/source/overview/tutorials/getting_started.ipynb b/docs/source/overview/tutorials/getting_started.ipynb index b9124dda5..581990ef8 100644 --- a/docs/source/overview/tutorials/getting_started.ipynb +++ b/docs/source/overview/tutorials/getting_started.ipynb @@ -112,7 +112,7 @@ "source": [ "The `observables` key in the `observable_card` (which is also a dictionary) can contain multiple elements whose keys must represent structure functions or cross-sections. For the list of available observables, refer to the following [part](https://yadism.readthedocs.io/en/latest/theory/intro.html#) of the documentation.\n", "\n", - "Similarly, below is an example of a theory card:" + "Similarly, below is an example of a `theory card` defining the theory parameters:" ] }, { @@ -125,7 +125,7 @@ "theory_card = {\n", " # QCD perturbative order\n", " \"PTO\": 2, # perturbative order in alpha_s: 0 = LO (alpha_s^0), 1 = NLO (alpha_s^1) ...\n", - " \n", + "\n", " # SM parameters and masses\n", " \"CKM\": \"0.97428 0.22530 0.003470 0.22520 0.97345 0.041000 0.00862 0.04030 0.999152\", # CKM matrix elements\n", " \"GF\": 1.1663787e-05, # [GeV^-2] Fermi coupling constant\n", @@ -139,29 +139,29 @@ " \"mc\": 1.51, # [GeV] charm mass\n", " \"mb\": 4.92, # [GeV] bottom mass\n", " \"mt\": 172.5, # [GeV] top mass\n", - " \n", + "\n", " # Flavor number scheme settings\n", " \"FNS\": \"FFNS\", # Flavour Number Scheme, options: \"FFNS\", \"FFN0\", \"ZM-VFNS\"\n", " \"NfFF\": 4, # (fixed) number of running flavors, only for FFNS or FFN0 schemes\n", " \"Q0\": 1.65, # [GeV] reference scale for the flavor patch determination\n", " \"nf0\": 4, # number of active flavors at the Q0 reference scale\n", - " \n", + "\n", " # Alphas settings and boundary conditions\n", " \"Qref\": 91.2, # [GeV] reference scale for the alphas value\n", " \"nfref\": 5, # number of active flavors at the reference scale Qref\n", " \"alphas\": 0.118, # alphas value at the reference scale\n", " \"MaxNfAs\": 5, # maximum number of flavors in running of strong coupling\n", " \"QED\": 0, # QED correction to running of strong coupling: 0 = disabled, 1 = allowed\n", - " \n", - " # Scale Variations \n", + "\n", + " # Scale Variations\n", " \"XIF\": 1.0, # ratio of factorization scale over the hard scattering scale\n", " \"XIR\": 1.0, # ratio of renormalization scale over the hard scattering scale\n", - " \n", + "\n", " # Other settings\n", - " \"IC\": 1, # 0 = perturbative charm only, 1 = intrinsic charm allowed \n", + " \"IC\": 1, # 0 = perturbative charm only, 1 = intrinsic charm allowed\n", " \"TMC\": 1, # include target mass corrections: 0 = disabled, 1 = leading twist, 2 = higher twist approximated, 3 = higher twist exact\n", " \"n3lo_cf_variation\": 0, # N3LO coefficient functions variation: -1 = lower bound, 0 = central , 1 = upper bound\n", - " \n", + "\n", " # Other EKO settings, not relevant for Yadism\n", " \"HQ\": \"POLE\", # heavy quark mass scheme (not yet implemented in yadism)\n", " \"MaxNfPdf\": 5, # maximum number of flavors in running of PDFs (ignored by yadism)\n", @@ -174,7 +174,7 @@ "id": "169b82a0-abdd-4687-9ffe-9df38446a550", "metadata": {}, "source": [ - "Note that a template observable card is provided by `yadmark` and contains the default `yadism` values. One can thus just start from the default card and overwrite the values." + "Note that a template observable card is provided by `yadmark` and contains the default `yadism` values. One can thus start from the default card and overwrite the values." ] }, { @@ -624,7 +624,7 @@ "# Read the pineappl grid saved earlier\n", "grid = pineappl.grid.Grid.read(\"./outputgrid_XSHERANCAVG_charm.pineappl.lz4\")\n", "\n", - "# Convolute the grid with the same PDF as above\n", + "# Convolute the grid with the same PDF as above, 2212 is the PID of the proton\n", "results = grid.convolute_with_one(2212, pdf.xfxQ2, pdf.alphasQ2)" ] }, From aa5ae5e62691b3463d07e183ac6e4ff3c0691f2d Mon Sep 17 00:00:00 2001 From: RoyStegeman Date: Fri, 26 Jan 2024 11:26:42 +0000 Subject: [PATCH 18/18] fix typo in docs --- docs/source/overview/tutorials/compare_data.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/overview/tutorials/compare_data.ipynb b/docs/source/overview/tutorials/compare_data.ipynb index 59ee6aaf3..0f7eef127 100644 --- a/docs/source/overview/tutorials/compare_data.ipynb +++ b/docs/source/overview/tutorials/compare_data.ipynb @@ -284,7 +284,7 @@ " with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\") # suppress noisy warnings\n", " out = yadism.run_yadism(theory_card, observables_card)\n", - " \n", + "\n", " # Dump computations as a pineappl grid for later use\n", " dump_pineappl_to_file(\n", " out, \"HERA_NC_318GEV_EM_SIGMARED.pineappl.lz4\", \"XSHERANC_total\"\n", @@ -441,7 +441,7 @@ } ], "source": [ - "# Compute the predictions - slihgtly heavier due to complexity & number of datapoints\n", + "# Compute the predictions - slightly heavier due to complexity & number of datapoints\n", "compute_predicionts()" ] },